Giới thiệu 3NS API

3NS API cho phép doanh nghiệp quản lý các mẫu thông báo của OA và tương tác với khách hàng thông qua số điện thoại liên kết với tài khoản Zalo sử dụng các mẫu thông báo đã đăng kí với Zalo.

Tạo API Key

1. Truy cập vào Zalo Official Account > API Key

2. Nhập tên Token và bấm nút Tạo mới

3. Copy và lưu lại Token

Cách sử dụng

Ở phần header, chúng tôi sẽ sử dụng API Key trong trường Authorization với giá trị như sau: "Bearer [API KEY]"

Ví dụ

curl --location --request GET 'https://api.3ns.com.vn/profile --header 'Authorization: Bearer [API_KEY]'

Lưu ý:

+ API Key không có thời gian hết hạn sử dụng. Bạn có thể thu hồi ở trang Zalo Official Account > API Key

API Lấy thông tin tài khoản

API cho phép đối tác truy xuất thông tin của doanh nghiệp/tài khoản.

URL: https://api.3ns.com.vn/profile
Method: GET
Content Type: application/json
Response Type: application/json

Example request

curl --location --request GET 'https://api.3ns.com.vn/profile' 
--header 'Authorization: Bearer [API_KEY]'

Example response

{
"error": 0,
"message": "Success",
"data": { "id": 1000, "oa_id": "764023222428847626", "name": "3NS TEST", "description": "Zalo OA Test ZNS (3NS Agency)", "avatar": "https://s160-ava-talk.zadn.vn/c/2/9/7/1/160/2a2c46bcafa6936ac795e7e5de79fb8b.jpg", "cover": "https://cover-talk.zadn.vn/b/e/6/5/2/2a2c46bcafa6936ac795e7e5de79fb8b.jpg", "is_verified": true, "template_tags": "", "daily_quota": 500, "remaining_quota": 0,
"free_remaining_quota": 100,
"free_expired_datetime": 1692082112, "balance": "0", "status": "ACTIVE"
} }

API Lấy danh sách mẫu tin nhắn

URL: https://api.3ns.com.vn/templates
Method: GET
Content Type: application/json
Response Type: application/json

Example request

curl --location --request GET 'https://api.3ns.com.vn/templates' 
--header 'Authorization: Bearer [API_KEY]'

Example response

{
"error": 0,
"message": "Success",
"data": [
{ "id": 1000, "name": "Mã xác thực OTP", "status": "ENABLE", "list_params": [ { "name": "otp", "require": true, "type": "STRING", "maxLength": 10, "minLength": 0, "acceptNull": false } ], "timeout": 15000, "template_quality": "UNDEFINED", "template_tag": "TRANSACTION", "price": "300", "apply_template_quota": 0, "template_daily_quota": 0, "template_remaining_quota": 0
}
] }

API Lấy thông tin mẫu tin nhắn

URL: https://api.3ns.com.vn/templates/[template_id]
Method: GET
Content Type: application/json
Response Type: application/json

Example request

curl --location --request GET 'https://api.3ns.com.vn/templates' 
--header 'Authorization: Bearer [API_KEY]'

Example response

{
"error": 0,
"message": "Success",
"data": { "id": 1000, "name": "Mã xác thực OTP", "status": "ENABLE", "list_params": [ { "name": "otp", "require": true, "type": "STRING", "maxLength": 10, "minLength": 0, "acceptNull": false } ], "timeout": 15000, "template_quality": "UNDEFINED", "template_tag": "TRANSACTION", "price": "300", "apply_template_quota": 0, "template_daily_quota": 500, "template_remaining_quota": 0
} }

API Tạo mẫu tin nhắn ZNS

URL: https://api.3ns.com.vn/templates
Method: POST
Content Type: application/json
Response Type: application/json

Tham số Kiểu dữ liệu Tính bắt buộc Mô tả Ví dụ
template_name string yes
Tên của mẫu ZNS
Lưu ý:
+ Có độ dài từ 10 đến 60 ký tự
{
"template_name": "ZNS Xác nhận đơn hàng"
}
param_types string yes
1: ZNS dạng bảng
2: ZNS văn bản
3: ZNS OTP
4: ZNS đánh giá dịch vụ
{
"param_type": "1"
}
template_tag
string yes

DEFAULT: Xác nhận, cập nhật giao dịch

OTP: OTP IN_TRANSACTION: Xác nhận/Cập nhật giao dịch

POST_TRANSACTION: Hỗ trợ dịch vụ liên quan sau giao dịch

TRANSACTION: Thông tin giao dịch

ACCOUNT_UPDATE: Cập nhật thông tin tài khoản

GENERAL_UPDATE: Thay đổi thông tin dịch vụ

CUSTOMER_CARE: Chăm sóc khách hàng

FOLLOW_UP: Thông báo ưu đãi đến khách hàng cũ

PROMOTION: Thông báo ưu đãi đến khách hàng cũ

 

Note: Để đồng nhất với các thay đổi từ Zalo, các param đỏ là các trường sẽ không còn valid sau 0 giờ ngày 16/04/2024, được thay đổi tương ứng nhóm theo các param xanh.

{
"template_tag": "PROMOTION"
}
title
string yes

Lưu ý: 

+ Có độ dài từ 9 đến 35 ký tự

+ Không chứa tham số, ngoại trừ ZNS bảng văn b

{
"title": "Xác nhận đơn hàng,"
}
buttons
array no

Lưu ý: 

+ Chỉ áp dụng cho tin ZNS dạng bảngZNS dạng văn bản

+ Chi tiết tại đây

{
    "buttons": 
    [        
        {
            "type": "1",
            "label": "Tìm hiểu thêm",
            "url": "http://3ns.com.vn",
            "desc": "Nhấp vào đây"
        },        
        {
            "type": "4",
            "label": "Truy cập Mini App",
            "url": "http://3ns.com.vn",
            "desc": ""
        }
    ]
}
paragraphs
array yes

Lưu ý: 

+ Tối đa 4 đoạn, mỗi đoạn tối thiểu 9 ký tự.

+ Tổng tất cả các đoạn có tối đa 400 ký tự.

+ Tổng tối đa 3 tham số

+ Đối với tin ZNS OTP và tin ZNS đánh giá dịch vụ, tối đa 1 đoạn.

{
    "paragraphs": 
    [
        "Cám ơn <customer_name> đã tin tưởng."
    ]
}
rows
array yes

Lưu ý:

+ Chỉ áp dụng đối với ZNS dạng bảng

+ Tối thiểu 2 row

+ Tối đa 8 row

{
    "rows": 
    [        
        {
            "key": "Mã đơn hàng",
            "value": "<order_code>"
        },        
        {
            "key": "Trạng thái",
            "value": "<payment_status>"
        },        
        {
            "key": "Giá tiền",
            "value": "<cost>"
        },        
        {
            "key": "Ghi chú",
            "value": "<note>"
        }
    ]
}
params
array yes Danh sách znsType

[
        [
            'id' => 1,
            'name' => 'Tên khách hàng (30)'
        ],
        [
            'id' => 2,
            'name' => 'Số điện thoại (15)'
        ],
        [
            'id' => 3,
            'name' => 'Địa chỉ (80)'
        ],
        [
            'id' => 4,
            'name' => 'Mã số (30)'
        ],
        [
            'id' => 5,
            'name' => 'Nhãn tuỳ chỉnh (30)'
        ],
        [
            'id' => 6,
            'name' => 'OTP (10)'
        ],
        [
            'id' => 7,
            'name' => 'Trạng thái giao dịch (30)'
        ],
        [
            'id' => 8,
            'name' => 'Thông tin liên hệ (50)'
        ],
        [
            'id' => 9,
            'name' => 'Giới tính / Danh xưng (5)'
        ],
        [
            'id' => 10,
            'name' => 'Tên sản phẩm / Thương hiệu (100)'
        ],
        [
            'id' => 11,
            'name' => 'Số lượng / Số tiền (20)'
        ],
        [
            'id' => 12,
            'name' => 'Thời gian (20)'
        ]
    ]
{
    "params": 
    [        
        {
            "name": "customer_name",
            "znsType": "1"
        },        
        {
            "name": "order_code",
            "znsType": "4"
        },        
        {
            "name": "payment_status",
            "znsType": "7"
        },        
        {
            "name": "cost",
            "znsType": "5"
        },        
        {
            "name": "note",
            "znsType": "5"
        }
    ]
}
postRowParagraphs
array no

Lưu ý: 

+ Chỉ áp dụng cho tin ZNS dạng bảngZNS dạng văn bản

+ Tối đa 4 đoạn, mỗi đoạn tối thiểu 9 ký tự.

+ Tổng tối đa 3 tham số

+ Tất cả các đoạn có tối đa 400 ký tự.

{
  "postRowParagraphs": [
    "Mọi thắc mắc vui lòng liên hệ Hotline"
  ]}
ratings
array yes Yêu cầu bắt buộc mẫu ZNS Đánh giá

Lưu ý: 

+ Chỉ áp dụng cho tin ZNS đánh giá dịch vụ

 

{
    "ratings": 
    [        
        {
            "star": "1",
            "title": "Rất không hài lòng"
        },        
        {
            "star": "2",
            "title": "Không hài lòng"
        },        
        {
            "star": "3",
            "title": "Bình thường"
        },        
        {
            "star": "4",
            "title": "Hài lòng"
        },        
        {
            "star": "5",
            "title": "Rất hài lòng"
        }
    ]
}
censorship_notes
string no  

Ghi chú cho kiểm duyệt viên

{
    "censorship_notes": "Vui lòng kiểm tra lại"
}
logos
array yes

Lưu ý:

+ Yêu cầu bắt buộc mẫu ZNS Văn bảnOTP

+ Kích thước bắt buộc 400x96px

{
    "logos": 
    {
        "light": "https://app.3ns.com.vn/build/assets/logo.png",
        "dark": "https://app.3ns.com.vn/build/assets/logo.png"
    }
}

Example request

curl --location --request POST 'https://api.3ns.com.vn/templates' 
--header 'Authorization: Bearer [API_KEY]' 
--header 'Content-Type: application/json' 
--data '{"template_name":"ZNS Xác nhận đơn hàng","buttons":[{"type":"3","label":"Quan tâm OA"},{"type":"1","label":"Tìm hiểu thêm","url":"https://hua.com.vn","desc":"Gọi cho tôi"}],"title":"Xác nhận đơn hàng,","paragraphs":["Cám ơn <customer_name> đã tin tưởng. Chúng tôi đã nhận được yêu cầu đặt hàng của bạn. Thông tin chi tiết đơn hàng:"],"rows":[{"key":"Mã đơn","value":"<order_code>"},{"key":"Trạng thái","value":"<payment_status>"},{"key":"Giá tiền","value":"<cost>"},{"key":"Ghi chú","value":"<note>"}],"params":[{"name":"customer_name","znsType":"1"},{"name":"order_code","znsType":"4"},{"name":"payment_status","znsType":"7"},{"name":"cost","znsType":"5"},{"name":"note","znsType":"5"}],"postRowParagraphs":["Mọi thắc mắc vui lòng liên hệ Hotline nếu cần tư vấn thêm về các sản phẩm và dịch vụ khác. Trân trọng!"],"ratings":null,"param_types":"1","template_tag":"TRANSACTION","censorship_notes":"DEMO","logos":{"light":null,"dark":null}}'

Example response

{
    "error": 0,
"message": "Success",
"data": { "id": 1021, "name": "Xác nhận đơn hàng,", "status": "DRAFT", "list_params": null, "timeout": null, "template_quality": null, "template_tag": null, "price": 300, "apply_template_quota": null, "template_daily_quota": null, "template_remaining_quota": null } }
{
"error": -109,
"message": "Vui lòng nhập chọn loại mẫu ZNS"
}

API Gửi tin nhắn ZNS

URL: https://api.3ns.com.vn/messages
Method: POST
Content Type: application/json
Response Type: application/json

Example request

curl --location --request POST 'https://api.3ns.com.vn/messages' 
--header 'Authorization: Bearer [API_KEY]' 
--header 'Content-Type: application/json' 
--data '{
"phone": "0123456789",
"template_id": 1,
"template_data": {
"otp": "123456"
}
}'

Example response

{
"error": -115,
"message": "Tài khoản không đủ số dư"
}
{
"error": 0,
"message": "Success"
}

API Danh sách tin nhắn ZNS

URL: https://api.3ns.com.vn/messages
Method: GET
Content Type: application/json
Response Type: application/json

Example request

curl --location --request GET 'https://api.3ns.com.vn/messages?limit=100&offset=0' 
--header 'Authorization: Bearer [API_KEY]' 

Example response

{
"error": 0,
"message": "Success"
"data": [
{
"id": "9a1ce4c8-259b-4dd6-98b2-d01ec4772737",
"phone": "84912345678",
"template_id": 12345678,
"template_data": {
"customer_name": "Nguyễn Văn A",
"order_id": "123456",
"order_date": "20/10/2023"
},
"status": "Hoàn thành",
"error": null,
"sent_time": "1694493336",
"delivery_time": "1694493338"
}
]}

API nạp tiền 3NS

URL: https://api.3ns.com.vn/deposits
Method: POST
Content Type: application/json
Response Type: application/json

Tham số Kiểu dữ liệu Tính bắt buộc Mô tả
amount
string yes

Là số tiền cần nạp.

Tối thiếu 100.000đ

Phải chia hết cho 1000đ

redirect_url string yes Redirect URL sau khi thanh toán thành công

Example request

curl --location --request POST 'https://api.3ns.com.vn/deposits' 
--header 'Authorization: Bearer [API_KEY]' 
--header 'Content-Type: application/json' 
--data '{"amount": "100000","redirect_url": "http://3ns.com.vn"}'

Example response

{
    "error": 0,
"message": "Success",
"data": { "redirect_url": "http://app.3ns.com.vn/platform/deposit/f4049f3f194e6da0036ac2ea612830c60c9d2237" } }
{
"error": -132,
"message": "Tham số không hợp lệ"
}

BẢNG MÃ LỖI

Mã lỗi Mô tả
0 Gửi thành công
-32 Vượt quá giới hạn request/phút.
-100 Xảy ra lỗi không xác định, vui lòng thử lại sau
-108 Số điện thoại không hợp lệ
-109 ID mẫu ZNS không hợp lệ
-110 Phiên bản Zalo app không được hỗ trợ. Người dùng cần cập nhật phiên bản mới nhất
-111 Mẫu ZNS không có dữ liệu
-112 Nội dung mẫu ZNS không hợp lệ
-113 Button không hợp lệ
-114 Người dùng không nhận được ZNS vì các lý do: Trạng thái tài khoản, Tùy chọn nhận ZNS, Sử dụng Zalo phiên bản cũ, hoặc các lỗi nội bộ khác
-115 Tài khoản ZNS không đủ số dư
-116 Nội dung không hợp lệ
-117 OA hoặc ứng dụng gửi ZNS chưa được cấp quyền sử dụng mẫu ZNS này
-118 Tài khoản Zalo không tồn tại hoặc đã bị vô hiệu hoá
-119 Tài khoản không thể nhận ZNS
-120 OA chưa được cấp quyền sử dụng tính năng này
-121 Mẫu ZNS không có nội dung
-122 Body request không đúng định dạng JSON
-124 Mã truy cập không hợp lệ
-125 ID Official Account không hợp lệ
-130 Nội dung mẫu ZNS vượt quá giới hạn kí tự
-131 Mẫu ZNS chưa được phê duyệt
-132 Tham số không hợp lệ
-133 Mẫu ZNS này không được phép gửi vào ban đêm (từ 22h-6h)
-135 OA chưa có quyền gửi ZNS (chưa được xác thực, đang sử dụng gói miễn phí)
-139 Người dùng từ chối nhận loại ZNS này
-140 OA chưa được cấp quyền gửi ZNS hậu mãi cho người dùng này
-141 Người dùng từ chối nhận ZNS từ Official Account
-144 OA đã vượt giới hạn gửi ZNS trong ngày
-145 OA không được phép gửi loại nội dung ZNS này
-146 Mẫu ZNS này đã bị vô hiệu hoá do chất lượng gửi thấp
-147 Mẫu ZNS đã vượt giới hạn gửi trong ngày