SmaxAI Partner API cho phép các developer và đối tác tích hợp hệ thống bên ngoài (CRM, ERP, website, n8n, Make, Zapier…) với nền tảng SmaxAI — bao gồm quản lý khách hàng, gửi tin nhắn đa kênh, quản lý sản phẩm, đơn hàng và nhiều chức năng khác.
Tài liệu API tương tác (Swagger UI) có sẵn tại:
👉 https://smax.ai/api/partner/docs
Tất cả request đều gửi đến:
https://api.smax.ai
Các endpoint được tổ chức theo pattern:
/partner/bizs/{bizAlias}/...
trong đó {bizAlias} là mã định danh duy nhất của doanh nghiệp (Business) trên SmaxAI. Mỗi tài khoản có thể quản lý nhiều Business, mỗi Business có một bizAlias riêng.
💡 Tìm bizAlias ở đâu? Đăng nhập SmaxAI → chọn Business → xem trên URL hoặc trong phần Cài đặt doanh nghiệp.
| Thông tin | Giá trị |
|---|---|
| Đặc tả | OpenAPI 3.0 (OAS3) |
| Phiên bản | 1.0 |
| Giao thức | HTTPS (bắt buộc) |
| Định dạng dữ liệu | JSON |
| Encoding | UTF-8 |
┌─────────────────┐ HTTPS/JSON ┌─────────────────┐ │ Hệ thống │ ◄──────────────────────► │ SmaxAI │ │ bên ngoài │ │ Partner API │ │ │ │ │ │ • Website │ Authorization: Bearer │ api.smax.ai │ │ • CRM │ ──────────────────────► │ │ │ • n8n / Make │ │ /partner/bizs/ │ │ • WooCommerce │ ◄────────────────────── │ {bizAlias}/... │ │ • App mobile │ JSON Response │ │ └─────────────────┘ └─────────────────┘
Partner API sử dụng Bearer Token theo chuẩn JWT (JSON Web Token). Mọi request đều phải kèm header:
httpAuthorization: Bearer <YOUR_API_TOKEN>
Để lấy token, bạn thực hiện các bước sau trong giao diện SmaxAI:
⚠️ Bảo mật token:
- Không chia sẻ token qua kênh không an toàn (chat, email thường)
- Không commit token vào source code / GitHub
- Sử dụng biến môi trường (environment variable) để lưu token
- Mỗi token gắn với một Business cụ thể — nếu bạn quản lý nhiều Business, bạn cần nhiều token tương ứng
cURL:
bashcurl -X GET "https://api.smax.ai/partner/bizs/my-shop/customers?limit=10" \ -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \ -H "Content-Type: application/json"
JavaScript (fetch):
javascriptconst response = await fetch( "https://api.smax.ai/partner/bizs/my-shop/customers?limit=10", { method: "GET", headers: { "Authorization": "Bearer eyJhbGciOiJIUzI1NiIs...", "Content-Type": "application/json" } } ); const data = await response.json(); console.log(data);
Python (requests):
pythonimport requests url = "https://api.smax.ai/partner/bizs/my-shop/customers" headers = { "Authorization": "Bearer eyJhbGciOiJIUzI1NiIs...", "Content-Type": "application/json" } params = {"limit": 10} response = requests.get(url, headers=headers, params=params) print(response.json())
n8n (HTTP Request node):
| Field | Giá trị |
|---|---|
| Method | GET |
| URL | https://api.smax.ai/partner/bizs/{{ $json.bizAlias }}/customers |
| Authentication | Header Auth |
| Header Name | Authorization |
| Header Value | Bearer <token> |
Trước khi làm việc với API, bạn cần nắm rõ các khái niệm sau:
bizAlias — Mã doanh nghiệpMỗi doanh nghiệp trên SmaxAI có một alias duy nhất (dạng chuỗi, ví dụ: my-cosmetics-shop). Đây là tham số bắt buộc trong mọi endpoint.
page_pid — Mã trang kênhMỗi kênh đã kết nối (Facebook Page, Zalo OA, Website…) có một page_pid riêng. Bạn lấy danh sách trang qua endpoint:
GET /partner/bizs/{bizAlias}/pages
tid — Thread ID (Mã hội thoại)Mỗi cuộc hội thoại giữa khách hàng và trang có một tid duy nhất. Sử dụng để gửi/đọc tin nhắn trong cuộc hội thoại cụ thể.
customer_pid — Mã khách hàngMã định danh duy nhất của một khách hàng trên SmaxAI, dùng để tra cứu thông tin hoặc gửi tin nhắn đến khách.
Một số endpoint yêu cầu quyền (role) đặc biệt:
| Endpoint | Role yêu cầu |
|---|---|
GET /messages | GET_LIST_MESSAGE |
GET /customers | GET_LIST_CUSTOMERS |
GET /customers-internal | GET_LIST_CUSTOMERS |
POST /threads/threads | GET_LIST_THREAD |
Nếu token của bạn không có quyền tương ứng, API sẽ trả về lỗi 403 Forbidden.
Partner API bao gồm 9 nhóm chức năng chính với tổng cộng 28 endpoints:
Gửi tin nhắn qua block/script, gửi/đọc/xóa tin nhắn trong thread.
| Method | Endpoint | Mô tả |
|---|---|---|
POST | /partner/bizs/{bizAlias}/send | Gửi tin nhắn qua block hoặc cards |
POST | /.../threads/{tid}/messages | Gửi tin nhắn vào thread cụ thể |
GET | /.../threads/{tid}/messages | Lấy danh sách tin nhắn trong thread |
DELETE | /.../threads/{tid}/messages | Xóa tin nhắn (chỉ env dev) |
Tạo mới, tra cứu, lấy danh sách và đếm khách hàng.
| Method | Endpoint | Mô tả |
|---|---|---|
POST | /.../customers | Tạo khách hàng mới (bằng SĐT) |
GET | /.../customers/{customer_pid} | Lấy thông tin 1 khách hàng |
GET | /.../customers | Lấy danh sách khách hàng |
GET | /.../customers-internal | Danh sách KH (internal) |
GET | /.../customers/count | Đếm tổng số khách hàng |
Quản lý kết nối với hệ thống bên thứ 3.
| Method | Endpoint | Mô tả |
|---|---|---|
POST | /.../integrations | Tạo integration mới |
PUT | /.../integrations/{id} | Cập nhật integration |
DELETE | /.../integrations/{id} | Xóa integration |
| Method | Endpoint | Mô tả |
|---|---|---|
GET | /partner/bizs/{bizAlias} | Lấy thông tin doanh nghiệp |
Quản lý trang, kết bạn Zalo OA, gửi tin Zalo Web và ZNS.
| Method | Endpoint | Mô tả |
|---|---|---|
GET | /.../pages | Danh sách trang đã kết nối |
GET | /.../pages/{page_pid}/friends | Danh sách bạn bè (Zalo OA) |
GET | /.../pages/{page_pid}/friend | Thông tin 1 friend |
GET | /.../pages/{page_pid}/request-friend-status | Trạng thái lời mời kết bạn |
POST | /.../pages/{page_pid}/request-friend | Gửi lời mời kết bạn |
POST | /.../pages/{page_pid}/undo-request-friend | Hủy lời mời kết bạn |
POST | /.../pages/{page_pid}/zaloweb-messages | Gửi tin nhắn Zalo Web |
POST | /.../pages/{page_pid}/send-zns | Gửi ZNS notification |
| Method | Endpoint | Mô tả |
|---|---|---|
GET | /.../tags | Lấy danh sách tag |
| Method | Endpoint | Mô tả |
|---|---|---|
POST | /.../threads/threads | Lọc và lấy danh sách hội thoại |
GET | /.../threads/pages/{page_pid}/threads/{tid} | Chi tiết 1 hội thoại |
| Method | Endpoint | Mô tả |
|---|---|---|
GET | /.../blocks | Danh sách tất cả blocks |
GET | /.../blocks/{id} | Chi tiết 1 block |
Sản phẩm (5 endpoints):
| Method | Endpoint | Mô tả |
|---|---|---|
GET | /api/partner/bizs/{bizAlias}/products | Danh sách sản phẩm |
GET | /api/partner/.../products/{id} | Chi tiết sản phẩm |
PUT | /api/partner/.../products/{id} | Cập nhật sản phẩm |
DELETE | /api/partner/.../products/{id} | Xóa sản phẩm |
PUT | /api/partner/.../products/{id}/inventory | Cập nhật tồn kho |
Đơn hàng (4 endpoints):
| Method | Endpoint | Mô tả |
|---|---|---|
GET | /api/partner/.../orders | Danh sách đơn hàng |
POST | /api/partner/.../orders | Tạo đơn hàng mới |
GET | /api/partner/.../orders/{id} | Chi tiết đơn hàng |
PUT | /api/partner/.../orders/{id} | Cập nhật đơn hàng |
Mã khuyến mãi (2 endpoints):
| Method | Endpoint | Mô tả |
|---|---|---|
GET | /api/bizs/{bizAlias}/promotion-code | Danh sách mã KM |
GET | /api/bizs/{bizAlias}/promotion-code/code/{code} | Tra cứu mã KM cụ thể |
📌 Lưu ý: Nhóm Products, Orders và Promotion Code sử dụng prefix
/api/partner/hoặc/api/thay vì/partner/như các nhóm khác.
API trả về JSON với HTTP status 200 (GET) hoặc 201 (POST):
json{ "data": [ ... ], "total": 50, "page": 1, "limit": 10 }
hoặc với endpoint trả về đối tượng đơn lẻ:
json{ "id": "abc123", "name": "Nguyễn Văn A", "phone": "0901234567", ... }
| HTTP Status | Ý nghĩa | Nguyên nhân thường gặp |
|---|---|---|
400 | Bad Request | Thiếu tham số bắt buộc hoặc sai định dạng |
401 | Unauthorized | Token không hợp lệ hoặc đã hết hạn |
403 | Forbidden | Token không có quyền truy cập endpoint này |
404 | Not Found | bizAlias, customer_pid, hoặc id không tồn tại |
429 | Too Many Requests | Vượt quá giới hạn tần suất gọi API |
500 | Internal Server Error | Lỗi phía server |
Swagger UI tại https://smax.ai/api/partner/docs cho phép bạn test API trực tiếp trên trình duyệt mà không cần viết code.
Bearer <YOUR_TOKEN> (hoặc chỉ nhập token tùy giao diện)GET /partner/bizs/{bizAlias}/customers)bizAlias)Sau khi Execute, Swagger UI sẽ hiển thị lệnh cURL tương ứng. Bạn có thể copy lệnh này để chạy trên terminal hoặc chuyển đổi sang ngôn ngữ lập trình khác.
Để đảm bảo hiệu suất hệ thống, API áp dụng giới hạn số lượng request trong một khoảng thời gian. Khi vượt quá giới hạn, bạn sẽ nhận được response 429 Too Many Requests. Khuyến nghị:
Các endpoint trả về danh sách hỗ trợ phân trang qua query parameters:
| Parameter | Mô tả | Ví dụ |
|---|---|---|
limit | Số bản ghi mỗi trang | ?limit=20 |
page | Số trang (bắt đầu từ 1) | ?page=2 |
DELETE /messages được đánh dấu "For env dev" — chỉ sử dụng trong môi trường phát triển\
Trên trang này