# Gửi tin Zalo ZNS - Deprecated

{% hint style="warning" %}

* **Chú ý**: Zalo đã đổi tên ZNS thành ZBS. API này đã ngừng phát triển và sẽ ngừng hỗ trợ sau 2026-08-31.

* Bạn nên chuyển sang dùng API mới [Gửi Zalo ZBS](/v3/zalo/zbs.md).
  {% endhint %}

* API này dùng để gửi tin nhắn Zalo ZNS. **Chú ý**:
  * Các hành động [cài đặt gửi Zalo trên nhanh.vn](https://nhanh.vn/setting/zalo/index) sẽ do Nhanh.vn tự động gửi, bạn chỉ nên dùng API này cho các hành động phát sinh riêng từ hệ thống của bên bạn.
  * Khi cài hành động gửi tin theo các sự kiện trên Nhanh (Thêm hóa đơn bán lẻ, Thêm đơn hàng...) thì bạn mới cần dùng các từ khóa có sẵn của Nhanh.vn, còn nếu chỉ muốn gửi qua API, thì khi tạo mẫu tin, bạn có thể tạo từ khóa bất kì, đợi Zalo duyệt xong, thì bạn có thể lấy được znsTemplateId để gửi API.
  * Khi Zalo duyệt mẫu tin, các từ khóa thường có dạng **<\_TEN\_KHACH\_HANG\_>** nhưng gửi qua API cần bỏ qua 2 dấu < > chỉ gửi sang **\_TEN\_KHACH\_HANG\_**, Zalo sẽ tự nối thêm < >
  * Zalo chỉ cho phép gửi tin ZBS trong khoảng từ 6-22h. Nếu mẫu tin là loại gửi OTP thì không bị giới hạn này, bạn có thể gửi được 24/7.

## Request

* Xem [common request params](/v3/readme.md#request-params).
* Xem [Postman sample](/v3/zalo/zns.md).

```curl
curl --location --globoff 'https://pos.open.nhanh.vn/v3.0/zalo/sendzns?appId={{appId}}&businessId={{businessId}}' \
--header 'Authorization: {{accessToken}}' \
--header 'Content-Type: application/json' \
--data '{
    "zaloOaId": 365897,
    "znsTemplateId": 365,
    "mobile": "0966669999",
    "keywords": {
        "TU_KHOA_1": "Giá trị 1",
        "TU_KHOA_2": "Giá trị 2"
    }'
```

### Data

| Key           | Type                          | Description                                                                                                                                             |
| ------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| znsTemplateId | int $$^{{\color{red}\*}}$$    | Các mẫu tin đã được Zalo duyệt sẽ có ZBS template ID xem và tạo mới mẫu tin tại [danh sách template](https://nhanh.vn/setting/zalo/index#zns-templates) |
| mobile        | string $$^{{\color{red}\*}}$$ | Số điện thoại cần gửi                                                                                                                                   |
| zaloOaId      | int $$^{{\color{red}\*}}$$    | ID Zalo OA                                                                                                                                              |
| keywords      | string $$^{{\color{red}\*}}$$ | Mẩng Từ khóa, giá trị {"KEYWORD\_1": "VALUE\_1", "KEYWORD\_2": "VALUE\_2"}                                                                              |

## Response

* Xem cấu trúc chung [tại đây](/v3/readme.md#response).

### Failed response

* Xem các mã lỗi chung [tại đây](/v3/readme.md#failed-response).
* Danh sách **errorCode** của riêng API này:

| errorCode                             | Description                                                                                                                                             |
| ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ERR\_ZNS\_OA\_404                     | Doanh nghiệp chưa kết nối OA                                                                                                                            |
| ERR\_ZNS\_INVALID\_OA                 | Zalo OA Id không hợp lệ                                                                                                                                 |
| ERR\_ZNS\_EXCEEDED\_LIMIT\_IN\_DAY    | Vượt quá hạn mức gửi tin trong ngày                                                                                                                     |
| ERR\_ZNS\_OA\_NOT\_ENOUGH\_BALANCE    | Số dư tài khoản không đủ                                                                                                                                |
| ERR\_ZNS\_INVALID\_PHONE\_NUMBER      | Số điện thoại gửi đi không hợp lệ                                                                                                                       |
| ERR\_ZNS\_ZALO\_ACCOUNT\_NOT\_EXISTED | Số điện thoại không có tài khoản Zalo                                                                                                                   |
| ERR\_ZNS\_INVALID\_TEMPLATE           | ZNS template Id không hợp lệ                                                                                                                            |
| ERR\_ZNS\_PROHIBITED\_TIMEFRAME       | Tin nhắn chỉ được gửi trong khoảng thời gian từ 06-22h (UTC+7)                                                                                          |
| ERR\_ZNS\_REQUIRED\_KEYWORDS          | Từ khóa và giá trị không đúng định dạng hoặc null                                                                                                       |
| ERR\_ZNS\_KEYWORDS\_NOT\_MATCH        | <p>Từ khóa sai hoặc thừa với so từ khóa trong mẫu<br>ví dụ: { "invalidKeyword": \["KEYWORD\_1 is required", "KEYWORD\_2 not existed in template"] }</p> |
| ERR\_ZNS\_INVALID\_KEYWORD\_VALUES    | Giá trị từ khóa không hợp lệ                                                                                                                            |
| ERR\_ZNS\_CODE\_1121                  | Dữ liệu keyword vượt quá độ dài tối đa                                                                                                                  |
| ERR\_ZNS\_CODE\_1123                  | Không thể tạo mã QR                                                                                                                                     |
| ERR\_ZNS\_CODE\_1124                  | Dữ liệu keyword có định dạng không hợp lệ                                                                                                               |

### Successful response

```json
{
    "code": 1,
    "data": {
        "oaBalance": "(int) Số dư sau khi gửi",
        "quota": {
          "remainingQuota": "(int) Số tin nhắn còn được gửi trong ngày",
          "dailyQuota": "(int) Hạn mức tin nhắn được gửi trong ngày"
        }
    }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://apidocs.nhanh.vn/v3/zalo/zns.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
