API

Gửi tin

POST /v1/messages: gửi một tin theo mẫu đã duyệt. Địa chỉ gốc: https://app.zapro.vn/v1.

POST/v1/messages Gửi một tin. Trả 202 kèm tin vừa tạo.

TrườngBắt buộcÝ nghĩa
oaCóMã OA (xem trang Zalo OA) hoặc "sandbox" để gửi thử.
toCóSố điện thoại người nhận: 0901234567 hoặc 84901234567.
templateCóMã mẫu hoặc mã mẫu của Zalo.
dataTheo mẫuGiá trị cho từng tham số của mẫu. ZaPro kiểm tra thiếu, thừa và độ dài trước khi gửi.
tracking_idKhôngMã đơn hoặc lịch hẹn bên hệ thống của bạn, tối đa 120 ký tự.
scheduled_atKhôngHẹn giờ gửi, ISO 8601, ví dụ 2026-11-08T09:00:00+07:00, trong vòng 30 ngày. Tên cũ send_at vẫn nhận.
curl -X POST https://app.zapro.vn/v1/messages \
  -H "Authorization: Bearer $ZAPRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "oa": "hoa-sen-spa",
    "to": "0901234567",
    "template": "xac-nhan-lich-hen",
    "data": { "ten": "Lan", "dich_vu": "Gội đầu dưỡng sinh", "gio": "15:30", "ngay": "08/11" }
  }'
Phản hồi 202
{
  "object": "message",
  "id": "msg_01jd9a7f…",
  "status": "queued",
  "oa": "hoa-sen-spa",
  "to": "0901234567",
  "template": "xac-nhan-lich-hen",
  "scheduled_at": null,
  "held_reason": null,
  "error": null
}

Trạng thái tin

queued → sending → sent → delivered. Ngoài ra: scheduled (hẹn giờ, hoặc đang được giữ vì ngoài khung giờ), failed, canceled.

Chống gửi trùng

Gửi header Idempotency-Key (tối đa 200 ký tự). Gửi lại cùng khóa chỉ tạo một tin và trả về đúng tin đó, kể cả khi lần đầu bị mất kết nối.

Khung giờ 07:00–22:00

Tin giao dịch đi ngay lúc nào cũng được. Tin chăm sóc và quảng cáo rơi ngoài 07:00–22:00 được trả về với status: "scheduled" và held_reason, rồi tự gửi lúc 07:00.

Gửi hàng loạt

POST/v1/messages/batch Body là mảng tối đa 100 tin, hoặc { "messages": [...] }. Trả 207 kèm kết quả từng tin theo thứ tự: mã tin, hoặc lỗi của riêng tin đó.