Bỏ qua tới nội dung

Quy ước chung

Envelope

Thành công:

json
{ "success": true, "data": { }, "pagination": { "limit": 50, "has_more": true, "next_before": 1760000000000 }, "request_id": "..." }

Lỗi:

json
{ "success": false, "error": { "code": "VALIDATION_ERROR", "message": "Tham số body không hợp lệ", "details": [{ "path": "body.text", "message": "Tối đa 10000 ký tự" }] }, "request_id": "..." }

Mỗi response có header X-Request-Id: gửi kèm khi báo lỗi.

Mã lỗi

HTTP code Ý nghĩa
400 VALIDATION_ERROR, INVALID_JSON Tham số sai
401 UNAUTHORIZED Thiếu/sai/thu hồi/hết hạn key
403 FORBIDDEN_SCOPE, FORBIDDEN_ACCOUNT, FORBIDDEN_IP, FORBIDDEN_ERP Không đủ quyền
404 NOT_FOUND Không có endpoint hoặc dữ liệu
409 ACCOUNT_OFFLINE, CONFLICT Tài khoản chưa kết nối / xung đột
413 PAYLOAD_TOO_LARGE Body/file quá lớn
422 CHANNEL_UNSUPPORTED Kênh không hỗ trợ thao tác
429 RATE_LIMITED, AUTH_BLOCKED Vượt giới hạn bạn đặt / IP bị tạm chặn
502 UPSTREAM_ERROR Zalo/Facebook/Telegram trả lỗi
503 API_DISABLED, WORKSPACE_UNAVAILABLE API tắt / máy đang mở workspace nhân viên
504 TIMEOUT Xử lý quá lâu

Phân trang

  • Danh sách thường: ?limit=50&offset=0, đọc pagination.next_offset.
  • Tin nhắn: mới → cũ, ?limit=50&before=<epoch ms>; trang sau dùng pagination.next_before. Tin cùng mốc thời gian có thể lặp ở ranh giới → khử trùng theo msg_id.

Dữ liệu

  • Thời gian: epoch mili giây.
  • Tên trường: snake_case theo cột DB. Cột JSON (attachments, reactions, quote) đã được parse.
  • Không trả cookie, session, mật khẩu, đường dẫn file trên máy.
  • ID tài khoản = accounts.zalo_id (Facebook: Facebook ID; Telegram: ID tài khoản Telegram).

Idempotency

Với POST, gửi header Idempotency-Key: <chuỗi duy nhất>. Gọi lại cùng key trong 24 giờ trả nguyên kết quả cũ (header Idempotent-Replayed: true) thay vì gửi tin lần hai. Lỗi tạm thời (409, 429, 5xx) không được lưu để bạn retry.

Giới hạn

  • Body JSON tối đa 10 MB, file upload tối đa 100 MB (đổi trong Cài đặt).
  • Mặc định không giới hạn tốc độ. Bạn có thể đặt giới hạn cho từng key hoặc mặc định toàn cục.
  • Lời gọi được xếp hàng tối đa N việc đồng thời (mặc định 4) để app không bị giật; request không bị từ chối vì hàng đợi.
  • Gửi tin đi qua cùng hàng đợi gửi theo tài khoản như app để tài khoản Zalo không bị khoá do gửi dồn.

Chưa tìm thấy câu trả lời?

Nhắn hỗ trợ qua Telegram