Nhấn Enter.
Nhận dữ liệu của bạn.
API REST /api/v1, 53 phạm vi, 239 điểm cuối, 11 sự kiện webhook và API JS cho tiện ích. Trò chuyện, danh bạ, AI, cơ sở kiến thức, yêu cầu và thanh toán — bất kể bảng điều khiển làm gì thì mã của bạn cũng có thể làm được.
# nhấn Enter hoặc dấu bên phải $ curl -H "Authorization: Bearer sb_••••" \ https://smartbtn.me/api/v1/chats?limit=1
Bắt đầu nhanh
Ba bước từ số 0 đến câu trả lời đầu tiên. Mọi yêu cầu được gắn với một tiện ích và được xác thực bằng mã thông báo mang.
- Phát hành mã thông báoTrang tổng quan → Mã thông báo API: tên, thời hạn sử dụng tùy chọn và phạm vi bạn cần. Mã thông báo thuộc về chính xác một tiện ích. Mã thông báo văn bản thuần túy được hiển thị một lần; Smartbtn chỉ lưu trữ hàm băm một chiều, do đó không thể khôi phục mã thông báo bị mất mà chỉ có thể thu hồi và phát hành lại.
- Bật API tiện íchTrong cài đặt tiện ích, hãy bật «Cho phép API tiện ích (JS và REST)». Việc phát hành mã thông báo không giúp bạn chuyển đổi công tắc này.
- Gửi yêu cầu đầu tiênMã thông báo chỉ đi vào tiêu đề
Ủy quyền— không bao giờ đi vào URL.
# liệt kê các cuộc trò chuyện của tiện ích curl -H "Authorization: Bearer $SMARTBTN_TOKEN" \ https://smartbtn.me/api/v1/chats
// 200 OK · phân trang con trỏ { "data": [ { "id": 48211, "status": "open", "last_message_at": "2026-10-17T09:41:12+03:00" }, … ], "next_cursor": "eyJpZCI6NDgyMTB9" // null — ở trang cuối cùng }
https://smartbtn.me/api/v1 là điểm cuối API chính cho tất cả dữ liệu dự án. Luôn gửi yêu cầu qua HTTPS và không bao giờ chuyển tiếp mã thông báo khi chuyển hướng.401 hoặc 403 với nội dung RFC‑7807 application/problem+json — xem Lỗi.Xác thực
Ba con đường, tùy ai gọi ai. Quyền truy cập bị từ chối theo mặc định: không có phạm vi - không có lệnh gọi.
Mọi yêu cầu đều mang theo Ủy quyền: Người mang . Trên máy chủ, mã thông báo phân giải thành một tiện ích và phạm vi của nó.
Các yêu cầu gửi đi được ký bằng bí mật của mỗi đối tượng thuê: X‑Smartbtn‑Signature. Một thông tin xác thực bổ sung có thể được thêm vào nếu phía bạn cần.
POST /v1/ai/replies sử dụng khung có chữ ký riêng, được ghim vào toán tử AI và tiện ích con của bạn, đồng thời được khóa bằng causation_id bền vững.
Công tắc người ta quên
«Cho phép API tiện ích (JS và REST)» trong cài đặt tiện ích sẽ mở cả API REST và API JS tiện ích. Việc phát hành mã thông báo không kích hoạt nó. Bạn có thể chỉnh sửa phạm vi của khóa hiện có trong trang tổng quan (mã thông báo API → khóa → Chỉnh sửa phạm vi) mà không cần phát hành lại — quá trình tích hợp vẫn tiếp tục hoạt động.
cài đặt trước
| cài sẵn | Phạm vi | Khi nào |
|---|---|---|
| thiết lập AI 9 | widget:read · widget:write · ai:read · ai:write · ai:apply · kb:read · kb:write · files:write · stats:read | Ứng dụng AI của bạn định cấu hình tiện ích: trợ lý, cơ sở kiến thức, văn bản. Thay thế toàn bộ lựa chọn phạm vi. |
| Chỉ đọc (bộ ví dụ) | chats:read · messages:read · contacts:read · stats:read | Trang tổng quan, BI, xuất khẩu. |
| Cầu trợ giúp (bộ ví dụ) | chats:read · messages:read · messages:write · webhooks:write · support:read | Phản chiếu các hộp thoại và yêu cầu vào CRM của bạn. |
ai:credentials:write khi chủ sở hữu ủy quyền thiết lập khóa nhà cung cấp. Không cần có tài khoản, quyền thanh toán và quyền đối tác để thiết lập AI. Khóa này được hiển thị một lần - thu hồi nó khi quá trình thiết lập hoàn tất.Phạm vi
53 phạm vi tuyến đường, cộng với một tuyến có điều kiện và một tuyến dành riêng. Yêu cầu chỉ thành công nếu mã thông báo giữ phạm vi tuyến đường (hoặc một giải pháp thay thế được liệt kê).
| Phạm vi | Tài trợ |
|---|---|
| chats · 2 | |
| chats:read | Đọc các cuộc trò chuyện và siêu dữ liệu của chúng |
| chats:write | Đóng cuộc trò chuyện, yêu cầu xếp hạng, chuyển nhượng, yêu cầu, đính kèm hoặc tách đại lý |
| messages · 2 | |
| messages:read | Đọc lịch sử tin nhắn của cuộc trò chuyện |
| messages:write | Gửi tin nhắn, gõ chỉ báo và đọc biên lai với tư cách là đại lý |
| contacts · 2 | |
| contacts:read | Đọc danh bạ |
| contacts:write | Cập nhật các trường và thuộc tính liên hệ |
| agents · 3 | |
| agents:read | Đọc đại lý và sự hiện diện của họ |
| agents:writenhạy cảm | Mời, cập nhật, tạm dừng, khôi phục hoặc xóa đại lý; người được mời xem mọi cuộc trò chuyện của tiện ích |
| agents:events:read | Đọc nhật ký sự kiện của tổng đài viên và số liệu trên mỗi tổng đài viên |
| tags · 2 | |
| tags:read | Đọc thẻ |
| tags:write | Đính kèm thẻ vào một liên hệ |
| files · 2 | |
| files:read | Tải xuống một tập tin đã tải lên |
| files:write | Tải lên một tập tin mới |
| stats · 1 | |
| stats:read | Đọc số liệu thống kê trò chuyện, tin nhắn và xếp hạng tổng hợp |
| channels · 3 | |
| channels:read | Đọc trạng thái trực tuyến của kênh tùy chỉnh |
| channels:write | Gửi tin nhắn gửi đến trên kênh tùy chỉnh |
| channels:register | Đăng ký kênh tùy chỉnh mới (chỉ ứng dụng đã cài đặt) |
| webhooks · 2 | |
| webhooks:read | Liệt kê đăng ký webhook |
| webhooks:write | Tạo, xóa hoặc gửi lại đăng ký |
| quick_phrases · 2 | |
| quick_phrases:read | Đọc cụm từ nhanh của đại lý |
| quick_phrases:write | Tạo, chỉnh sửa hoặc xóa cụm từ nhanh |
| ratings · 1 | |
| ratings:read | Đọc xếp hạng của khách truy cập và mỗi đại lý ghi điểm |
| responder · 2 | |
| responder:injectnhạy cảm | Đưa câu trả lời vào cuộc trò chuyện trực tiếp với tư cách là người điều hành AI hoặc bot bên ngoài |
| responder:escalatecó điều kiện | Đối với POST /v1/ai/replies: chuyển giao theo hướng người gọi thông qua escalse=true |
| widget · 2 | |
| widget:read | Đọc giao diện, hành vi và cài đặt nhúng của tiện ích |
| widget:write | Cập nhật cài đặt tiện ích và xóa bộ đệm tiện ích |
| departments · 2 | |
| departments:read | Đọc các phòng ban, đại lý và lịch trình của họ |
| departments:write | Tạo, cập nhật hoặc xóa các phòng ban và lịch trình |
| messengers · 2 | |
| messengers:read | Đọc những tin nhắn nào được kết nối (không bao giờ có thông tin xác thực) |
| messengers:writenhạy cảm | Kết nối hoặc ngắt kết nối tin nhắn; ghi thông tin xác thực của nhà cung cấp |
| ai · 4 | |
| ai:read | Đọc trợ lý AI, cấu hình và cảnh báo của chúng |
| ai:write | Tạo và cập nhật trợ lý, cài đặt AI và toán tử AI, bao gồm tính cách và lời nhắc |
| ai:credentials:writenhạy cảm | Lưu trữ thông tin xác thực của nhà cung cấp LLM bên thứ ba (BYOK) |
| ai:apply | Phê duyệt cải tiến viết lại tính cách của trợ lý trực tiếp |
| kb · 2 | |
| kb:read | Đọc các quy tắc cơ sở kiến thức và các nguồn đã nhập |
| kb:write | Tạo, cập nhật hoặc xóa các quy tắc và nguồn KB |
| transcripts · 1 | |
| transcripts:read | Xuất bản ghi cuộc trò chuyện |
| account · 2 | |
| account:read | Đọc hồ sơ tài khoản và tất cả các pháp nhân của nó |
| account:write | Chỉ cập nhật tên, họ và số điện thoại của tài khoản |
| billing · 2 | |
| billing:read | Đọc hồ sơ thanh toán và pháp nhân của tiện ích |
| billing:write | Tạo, cập nhật, xóa pháp nhân; không xuất hóa đơn, không chuyển tiền |
| partners · 2 | |
| partners:read | Đọc dữ liệu đối tác và giới thiệu |
| partners:withdrawdành riêng | Dành riêng: không có hoạt động thanh toán nào sử dụng nó ngày hôm nay |
| support · 4 | |
| support:read | Đọc yêu cầu, cuộc trò chuyện đang hoạt động, tin nhắn của họ và hành động được kiểm tra của riêng họ |
| support:replynhạy cảm | Trả lời khách hàng với tư cách là nhà điều hành hỗ trợ |
| support:write | Xác nhận hoặc hủy bỏ cuộc trò chuyện, đóng mà không trả lời, mở lại |
| support:tickets:close | Chỉ đóng một yêu cầu - không có gì khác |
| marketing · 2 | |
| marketing:read | Đọc các chiến dịch tiếp thị: biểu ngữ, cửa sổ bật lên, email |
| marketing:write | Tạo và chỉnh sửa chiến dịch, thay đổi trạng thái, bắt đầu gửi email |
| broadcasts · 2 | |
| broadcasts:read | Đọc các chương trình phát sóng trên Messenger (WhatsApp, Telegram, Messenger, Viber, VK, MAX) |
| broadcasts:write | Tạo, chỉnh sửa và bắt đầu phát sóng |
| problems · 2 | |
| problems:read | Đọc các cụm và cài đặt vấn đề của khách hàng |
| problems:write | Thay đổi cài đặt và trạng thái cụm: mới, đang tiến hành, đã giải quyết, định kỳ |
| invitations · 2 | |
| invitations:read | Đọc quy tắc mời, biến thể A/B, mẫu và kênh |
| invitations:write | Tạo, chỉnh sửa, bật hoặc xóa các quy tắc và mẫu |
Điểm cuối
Toàn bộ bề mặt công khai trong một danh sách. Lọc theo tài nguyên, tìm kiếm theo đường dẫn, nhấp vào một hàng để sao chép một lọn tóc đã sẵn sàng.
ai Trợ lý, người vận hành, chìa khóa, học tập, thị trường54
chats Hộp thoại, tin nhắn, chuyển giao, xếp hạng18
kb Cơ sở kiến thức: quy tắc, trình thu thập thông tin, tệp, tìm kiếm16
agents Đại lý, lời mời, số liệu14
messengers Sứ giả, mạng xã hội và kênh thị trường13
billing Số dư, đăng ký, hóa đơn, thực thể12
support Đại lý hỗ trợ: vé và trò chuyện12
widget Cài đặt, ngôn ngữ, bản dịch, giao diện, bộ đệm12
channels Kênh tùy chỉnh8
external‑operators Bot của bạn với tư cách là người điều hành8
webhook‑subscriptions đăng ký webhook8
broadcasts Chương trình phát sóng trên Messenger7
departments Các khoa và lịch trình7
invitations Lời mời thông minh7
marketing Chiến dịch tiếp thị7
partner Chương trình đối tác7
wishes Lời chúc dành cho AI7
contacts Danh bạ và thẻ5
problems Phân tích vấn đề của khách hàng4
quick‑phrases Cụm từ nhanh4
compat Khả năng tương thích di chuyển3
stats Thống kê3
account Tài khoản2
files Tập tin2
ratings Xếp hạng1
tags Thẻ1
v1 1
webhook‑events Danh mục sự kiện1
Các đường dẫn có liên quan đến https://smartbtn.me/api. Viết cần có Content‑Type: application/json và X‑Smartbtn‑Idempotency‑Key. Nhóm compat là lớp tương thích dành cho các nhóm chuyển từ nền tảng trò chuyện khác.
Webhook
JSON POST đã ký vào URL của bạn bất cứ khi nào xảy ra sự kiện đã đăng ký. Quản lý đăng ký qua /v1/webhook‑subscriptions hoặc trong trang tổng quan.
{
"id": "evt_01JAB3K9Q7",
"type": "ticket.created",
"data": {
"button_guid": "b_3f9c2e",
"ticket_number": 10482,
"chat_id": 48211,
"client_id": 9134,
"reason": "human_request",
"priority": "high",
"sla_hours": 4,
"source": "chat",
"created_at": "2026-10-17T10:15:00+03:00"
}
}lý do: human_request | thanh toán | ai_chưa được giải quyết | hành động_request | …; ưu tiên: cao | Bình thường; nguồn: trò chuyện | ứng dụng | địa điểm. Đọc vé và hộp thoại của nó bằng GET /v1/support/tickets/{number.
Tiêu đề phân phối
| X‑Smartbtn‑Event | Loại sự kiện, ví dụ: message.created. |
| X‑Smartbtn‑Signature | sha256=v1: của phần thân thô. |
| X‑Smartbtn‑Idempotency‑Key | Một giá trị cho mỗi sự kiện, ổn định trong nhiều lần thử lại. Khấu trừ nó. |
| X‑Smartbtn‑Delivery | Một giá trị cho mỗi lần gửi — cho nhật ký của bạn. |
| X‑Smartbtn‑Timestamp | Thời gian gửi Unix. Thông tin, không có chữ ký. |
Xác minh chữ ký
HMAC‑SHA256 của phần nội dung thô (byte đã nhận, trước khi phân tích cú pháp JSON) cùng với bí mật điểm cuối của bạn; so sánh trong thời gian không đổi. Bí mật được hiển thị một lần khi đăng ký được tạo; xoay nó bằng POST /v1/webhook‑subscriptions/{id}/rotate‑secret.
// Node.js · ví dụ, bí mật là một phần giữ chỗ import crypto from 'node:crypto'; function verify(rawBody, header, secret) { const expected = 'sha256=v1:' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex'); const a = Buffer.from(expected), b = Buffer.from(header || ''); return a.length === b.length && crypto.timingSafeEqual(a, b); }
// PHP $expected = 'sha256=v1:' . hash_hmac('sha256', file_get_contents('php://input'), $secret); if (!hash_equals($expected, $_SERVER['HTTP_X_SMARTBTN_SIGNATURE'] ?? '')) { http_response_code(401); exit; }
Thử lại và đặt hàng
- Tối đa 4 lần thử (lần gửi đầu tiên cộng với 3 lần thử lại), thời gian chờ
min(60, 2^attempt × 5)s — khoảng 10, 20, 40 giây. - Không phải 2xx hoặc thời gian chờ được tính là một lần thử không thành công. Việc gửi không thành công có thể được gửi lại bằng
POST /v1/webhook‑subscriptions/{id}/redeliver— cùng một khóa tạm thời, id gửi mới. - Việc giao hàng được thực hiện ít nhất một lần và không được đặt hàng. Tải trọng tối thiểu - id, không phải bản ghi đầy đủ; tìm nạp thông tin chi tiết thông qua API REST.
JS API
Chuyển thẳng những gì bạn đã biết về khách truy cập tới đại lý. Cuộc gọi chỉ được chấp nhận từ miền được đặt trong cài đặt tiện ích.
smartbtn_widget_api.setContactInfo(info)
Đặt dữ liệu liên hệ của khách truy cập. Nhân viên coi như thể khách truy cập đã điền vào mẫu giới thiệu. Tên, số điện thoại và email đóng một vai trò đặc biệt trong Smartbtn — do đó có một phương thức riêng biệt.
| Tên | Loại | Mô tả |
|---|---|---|
| name | string | Tên khách |
| string | Email của khách truy cập | |
| phone | string | Điện thoại của khách |
| description | string | Bất kỳ thông tin bổ sung nào về khách hàng |
Smartbtn_api.setClientInfo({ name: "Alex Morgan", email: "email@example.com", phone: "+17584987855", description: "Description text" });
smartbtn_widget_api.setCustomData(fields)
Mọi dữ liệu bổ sung cho bảng thông tin ở bên phải ứng dụng tổng đài viên. Gọi nó bao nhiêu lần tùy thích — trong hộp thoại mở, bảng điều khiển sẽ cập nhật theo thời gian thực. Các trường được hiển thị theo thứ tự mảng.
| Tên | Loại | Mô tả |
|---|---|---|
| fields | array | Danh sách các trường dữ liệu |
| field.title | string | Tiêu đề phía trên sân |
| field.content | string | Nội dung trường; thẻ đã thoát |
| field.link | string | URL được mở khi nhấp chuột |
Smartbtn_api.setClientCustomData([ { title: "Order", content: "#10482 · 3 items", link: "https://shop.example/orders/10482" }, { title: "Actions", content: "Open customer profile", link: "https://crm.example/c/9134" } ]);
smartbtn_widget_api.setSkin(skin, opts) · open() · close()
Chuyển đổi chủ đề tiện ích một cách nhanh chóng mà không cần tải lại trang (classic, minimal, capsule, liquid) hoặc điều khiển cửa sổ trò chuyện theo chương trình. Để tùy chỉnh vĩnh viễn cho mỗi dự án, hãy chuyển các trường tương tự tới PATCH /v1/widget/settings.
// JS API · chuyển đổi giao diện trên trang trong thời gian thực smartbtn_widget_api.setSkin("minimal"); smartbtn_widget_api.setSkin("capsule", { capsuleTitle: "Smartbtn AI", capsuleSubtitle: "Trả lời sau ~1 giây" }); // REST API · PATCH /v1/widget/settings (phạm vi widget:write) { "skin": "minimal", "widget_header_align": "center", "widget_show_operator_avatars": false, "widget_show_tabs_bar": false, "chat_bg": "#FAF8F5", "capsule_title": "Smartbtn AI", "capsule_subtitle": "Trực tuyến 24/7" }
widget_api_contact_sync được bật, các lệnh gọi này cũng kích hoạt webhook contact.updated.Support‑agent API
Một nhân viên hỗ trợ tự động xử lý hàng đợi yêu cầu và cuộc trò chuyện của khách hàng: thực hiện trò chuyện, trả lời với tư cách là nhà điều hành hỗ trợ con người của bạn, đóng yêu cầu. Tắt cho đến khi chủ sở hữu widget bật nó lên.
- Chủ sở hữu cho phép nóLiệt kê các mã thông báo được phép đóng vai trò là đại lý hỗ trợ và IP mà chúng có thể gọi từ đó.
- Đọc hàng đợi
GET /v1/support/tickets·GET /v1/support/chats - Thuê một cuộc trò chuyện
POST …/chats/{id}/claim·…/release - trả lờiVăn bản thuần túy, chỉ liên kết đến các máy chủ được phép của tiện ích.
201chỉ khi tin nhắn được lưu trữ. - Đóng hoặc mở lại
POST …/tickets/{number}/close·…/reopen
| Phạm vi | Cho phép |
|---|---|
| support:read | Vé, cuộc trò chuyện đang hoạt động, tin nhắn được gắn nhãn client / ai / support / system, hành động được kiểm tra riêng |
| support:write | Yêu cầu/hủy bỏ cuộc trò chuyện, đóng mà không trả lời, mở lại |
| support:reply | Trả lời khách hàng với tư cách là người điều hành hỗ trợ (nhạy cảm) |
| support:tickets:close | Chỉ đóng một yêu cầu - đối với nút «câu hỏi đã được giải quyết» trên phần phụ trợ của bạn |
curl -X POST https://smartbtn.me/api/v1/support/chats/48211/reply \ -H "Authorization: Bearer $AGENT_TOKEN" \ -H "Content-Type: application/json" \ -H "X-Smartbtn-Idempotency-Key: $(uuidgen)" \ -d '{"text">Xong, quyền truy cập đã được khôi phục."}'
API AI
Mọi thứ mà phần AI của bảng điều khiển thực hiện: trợ lý, khóa nhà cung cấp của riêng bạn, cơ sở kiến thức, tự học với khôi phục, mong muốn, vấn đề, tín hiệu nhu cầu và trợ lý bên trong ứng dụng của bạn.
Một số trợ lý có vai trò và ngôn ngữ riêng, được kiểm tra trước khi đi vào hoạt động, các toán tử được đặt tên theo ngôn ngữ.
- GET/v1/ai/assistants
- POST/v1/ai/assistants/{id}/test
- PATCH/v1/ai/operators/{id}
- POST/v1/ai/handoff
Claude, ChatGPT, DeepSeek, Gemini, Mistral, LLM khu vực hoặc bất kỳ LLM nào tương thích với OpenAI. Các mô hình được liệt kê trên mỗi khóa.
- GET/v1/ai/credentials
- POST/v1/ai/credentials
- GET/v1/ai/credentials/{id}/models
Trình thu thập thông tin cho trang web của bạn, tải lên PDF và DOCX, quy tắc, trạng thái tìm kiếm và lập chỉ mục.
- PUT/v1/kb/crawler
- POST/v1/kb/uploads
- POST/v1/kb/rules
- GET/v1/kb/search
Điều chỉnh các lần chạy, chu kỳ, lịch sử, phiên bản cá nhân bằng tính năng khôi phục và khóa chuyển đổi.
- POST/v1/ai/learning/tune
- GET/v1/ai/learning/cycles
- POST/v1/ai/learning/persona‑versions/{version}/revert
- GET/v1/ai/learning/kill‑switch
Một điều ước bằng lời nói đơn giản → bản xem trước không có tác dụng phụ → phê duyệt, từ chối hoặc hoàn nguyên.
- POST/v1/wishes
- GET/v1/wishes/{id}/preview
- POST/v1/wishes/{id}/approve
- POST/v1/wishes/{id}/revert
Các nhóm vấn đề có trạng thái và giới hạn chi tiêu hàng tháng; những gì khách hàng yêu cầu mà bạn không cung cấp.
- GET/v1/problems
- PATCH/v1/problems/settings
- POST/v1/problems/{id}/status
- GET/v1/ai/demand‑signals
Phần phụ trợ của bạn sẽ đẩy trạng thái khách hàng (đã đăng ký, đã thanh toán, khách hàng kể từ, trạng thái dịch vụ) trong yêu cầu do HMAC ký — AI sẽ cân nhắc trạng thái đó khi trả lời và chuyển lên cấp trên.
- POST/v1/ai/customer‑status
- POST/v1/ai/tickets
- GET/v1/ai/alerts
Chuyển đổi hộp thoại, liên kết tài khoản, chuyển lời nói thành văn bản và chuyển văn bản thành giọng nói, phiếu ứng dụng — thông qua tích hợp đã ký.
- POST/v1/ai/assistant/turn
- POST/v1/ai/assistant/account‑link
- POST/v1/ai/assistant/speech‑to‑text
- POST/v1/ai/assistant/text‑to‑speech
Trợ lý sẵn sàng theo từng vị trí: quán cà phê, phòng khám, cửa hàng, dịch vụ xe hơi. Áp dụng trong một yêu cầu.
- GET/v1/ai/marketplace/templates
- POST/v1/ai/marketplace/templates/{slug}/apply
Bot của riêng bạn trả lời các cuộc trò chuyện: trả lời không đồng bộ, chuyển giao, kiểm tra và vòng đời.
- POST/v1/ai/replies
- POST/v1/external‑operators/{public_id}/tests
- POST/v1/external‑operators/{public_id}/lifecycle
Giới hạn tỷ lệ
Mỗi mã thông báo có hai bộ đếm: số lần đọc và ghi được tính riêng biệt, vì vậy việc bỏ phiếu không bao giờ ngốn ngân sách ghi.
| X‑RateLimit‑Limit | Kích thước của bộ đếm mà yêu cầu này được tính vào (600 hoặc 120) |
| X‑RateLimit‑Remaining | Yêu cầu còn lại trong cửa sổ hiện tại |
| X‑RateLimit‑Reset | Khi cửa sổ đặt lại |
| Retry‑After | Trên 429: giây chờ đợi |
HTTP/1.1 429 Too Many Requests Content-Type: application/problem+json Retry-After: 12 X-RateLimit-Limit: 120 X-RateLimit-Remaining: 0 { "status": 429, "title": "Too Many Requests", "reason": "rate_limited" }
/v1/ai/assistant/tickets/status và /v1/ai/assistant/account‑link có bộ đếm riêng; API tác nhân hỗ trợ có thể ghi đè theo từng tiện ích.
Lỗi
Mọi lỗi đều là RFC‑7807 application/problem+json: trạng thái và lý do mà máy có thể đọc được, chi tiết mà con người có thể đọc được.
HTTP/1.1 403 · Content-Type: application/problem+json { "type": "https://smartbtn.me/problems/forbidden", "title": "Forbidden", "status": 403, "detail": "Token lacks scope chats:write.", "required_scopes": [ "chats:write" ], "hint": "Dashboard → API tokens → key → Edit scopes" }
Tên nội dung bắt buộc_scopes và nơi cấp chúng. Không cần phải cấp lại chìa khóa.
| Trạng thái | Ý nghĩa |
|---|---|
| 400 | Yêu cầu không đúng định dạng hoặc thiếu khóa tạm thời bắt buộc |
| 401 | Không có mã thông báo, mã thông báo không hợp lệ hoặc bị thu hồi |
| 403 | Mã thông báo thiếu phạm vi; phần nội dung thêm required_scopes và nơi cấp nó |
| 404 | Không tìm thấy trong tiện ích này |
| 405 | Phương pháp không được phép - dừng lại và báo cáo; đừng tìm cách viết thay thế |
| 409 | Khóa bình thường được sử dụng lại trong vòng 24 giờ hoặc xung đột trạng thái |
| 422 | Xác thực không thành công (ví dụ: trường chỉ đọc đã được gửi) |
| 429 | Giới hạn tỷ lệ; tôn trọng Thử lại sau |
sự bình thường
Mạng thất bại. Một khóa giúp việc ghi lại được an toàn: cùng một thao tác không bao giờ được áp dụng hai lần.
- Gửi
X‑Smartbtn‑Idempotency‑Keytrên mỗi POST / PATCH / PUT / DELETE: một UUID mới cho một thao tác mới, cùng một khóa để thử lại cùng một thao tác. - Các hoạt động được đánh dấu
x‑idempotency: bắt buộctrong OpenAPI: không có khóa → 400, khóa được sử dụng lại trong vòng 24 giờ → 409 (không phải là thành công được lưu vào bộ nhớ đệm). - Không chắc chắn nó đã đi qua? Đọc trạng thái đầu tiên. Không bao giờ tự động thay đổi chìa khóa; tôn trọng Thử lại sau.
- Một
502từ nhà cung cấp thượng nguồn sẽ giải phóng khóa — thử lại bằng chính khóa đó.
KEY=$(uuidgen) curl -X PATCH https://smartbtn.me/api/v1/widget/settings \ -H "Authorization: Bearer $SMARTBTN_TOKEN" \ -H "Content-Type: application/json" \ -H "X-Smartbtn-Idempotency-Key: $KEY" \ -d '{"language":"ru"}' # lỗi mạng à? lặp lại với cùng $KEY
Changelog
Những thay đổi đối với API công khai và webhooks vào năm 2026. Mọi thứ bên dưới đều mang tính bổ sung và vẫn ở v1.
Vé sự kiện trực tiếp mới đã được tạo. GET /v1/support/tickets trả lời bất kỳ khóa nào với support:read cho đến khi tác nhân hỗ trợ được định cấu hình. Phạm vi chính có thể chỉnh sửa mà không cần phát hành lại. 403 mức tăng cần_scopes.
POST/PATCH /v1/ai/operators chấp nhận name_i18n; tên mặc định được dịch sang ngôn ngữ widget; lựa chọn lời chào có thể dự đoán được.
Đọc - 600 mỗi phút, viết - 120. Bỏ phiếu không còn ngốn ngân sách ghi nữa. X‑RateLimit-* mô tả bộ đếm đã được sử dụng.
Trò chuyện có hoạt động ngay lập tức, cho dù chúng cũ đến mức nào. Giờ đây, mọi cuộc trò chuyện đều mang theo Last_message_at.
chat.account.email_requested - cuộc trò chuyện đang chờ địa chỉ; các đại lý không được bắt đầu một luồng mã khác.
Đóng một yêu cầu và không làm gì khác - để có nút «đã giải quyết câu hỏi» trên phần phụ trợ của bạn.
Bộ lọc has_client_messages=1 và q (2–100 ký tự).
POST /v1/ai/assistant/account‑link và /revoke. Tắt cho đến khi chủ sở hữu kích hoạt nó.
Các quy tắc được nhúng bằng phím tiện ích hoặc phím trợ lý được bật; một 502 giải phóng khóa bình thường.
Tài khoản sẽ hiển thị khi vé được mở và trong 7 ngày sau đó.
Nhóm /v1/support mới: xếp hàng, trò chuyện, cho thuê, trả lời, đóng và mở lại vé. Tắt cho đến khi chủ sở hữu kích hoạt nó.
Các trường code_pending, code_expires_at, Last_code_result và Last_code_at.
Plugin WordPress
Tiện ích trên trang web WordPress mà không cần chạm vào mã chủ đề.
- Tải xuốngkho lưu trữ plugin vào máy tính của bạn.
- cài đặtĐặt thư mục đã giải nén vào
wp‑content/plugins/— hoặc tải nó lên trong quản trị viên WordPress. - Kích hoạtMục Smartbtn xuất hiện trong menu.
- Dán mã thông báoSao chép mã thông báo bảo mật từ cài đặt tiện ích trong trang tổng quan của bạn.
Khi bạn thay đổi mật khẩu, mã thông báo bảo mật cũng thay đổi và mã cũ ngừng hoạt động — dán mã mới vào plugin.
Mẫu mã
Liệt kê mọi cuộc trò chuyện có hoạt động kể từ cuộc thăm dò cuối cùng của bạn — theo con trỏ đến cuối.
# trang đầu tiên curl -G https://smartbtn.me/api/v1/chats \ -H "Authorization: Bearer $SMARTBTN_TOKEN" \ --data-urlencode "updated_since=2026-10-17T09:00:00+03:00" # tiếp theo - với next_cursor từ phản hồi curl -G https://smartbtn.me/api/v1/chats \ -H "Authorization: Bearer $SMARTBTN_TOKEN" \ --data-urlencode "cursor=eyJpZCI6NDgyMDd9"