Endpoint untuk mengirim pesan ke banyak penerima sekaligus. Kedua endpoint return immediately — pengiriman sebenarnya berjalan async di goroutine.
POST /v1/send_broadcast
Kirim broadcast one-shot — payload berisi daftar penerima dan pesan.
Handler: handlers/broadcast.go:237 SubmitBroadcastMessage
Request body
PayloadBroadcast struct (models/mongo_broadcast.go:15-38):
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
token | string | ✅ | Device token |
numbers | []string | ❌ | Daftar nomor tujuan |
message | []BroadcastMessages | ❌ | Daftar pesan (multi-variant) |
messagex | string | ❌ | Pesan tunggal alternatif |
sendMode | string | ❌ | Mode kirim |
send_all | string | ❌ | Numbers mode |
isFilter | bool | ❌ | Aktifkan filter |
criteria | string | ❌ | Kriteria filter |
teamId | string | ❌ | Team ID |
storeId | string | ❌ | Store ID |
productList | []string | ❌ | Filter produk |
statusList | []string | ❌ | Filter status |
startDate | string | ❌ | Filter tanggal mulai |
endDate | string | ❌ | Filter tanggal akhir |
statusStartDate | string | ❌ | Status start date |
statusEndDate | string | ❌ | Status end date |
tagList | []TagList | ❌ | Filter tag |
segmentList | []string | ❌ | Filter segment |
idBroadcast | string | ❌ | Broadcast ID |
idSceduler | string | ❌ | Scheduler ID (jika dari scheduler) |
batchId | string | ❌ | Batch ID |
runningMode | string | ❌ | Mode running |
Response (sukses)
{"result": true, "message": "test submit"}Response (error)
{"result": false, "message": "<err>"}Error source: GetDevicebyFilter({"token": payload.Token}) — device tidak ditemukan.
POST /v1/broadcast/scheduler
Trigger broadcast terjadwal — baca konfigurasi dari broadcast_scedulers collection, lalu fan-out.
Handler: handlers/broadcast.go:29 SubmitBroadcastScheduler
Request body
PayloadBroadcastScheduler struct (broadcast.go:1861-1865):
| Field | Tipe | Wajib | Deskripsi |
|---|---|---|---|
broadcast_scheduler_id | string | ✅ | ID scheduler di broadcast_scedulers collection |
batch_id | string | ❌ | Override batch ID |
running_mode | string | ❌ | manual atau auto |
Response (sukses)
{
"status": "success",
"message": "Broadcast Sedang Dalam Pengiriman"
}Response (error)
| Status | Kondisi | Body |
|---|---|---|
| 400 | BodyParser gagal | {"status": "error", "message": "Invalid request payload"} |
| 400 | broadcast_scheduler_id kosong | {"status": "error", "message": "Broadcast scheduler ID is required"} |
| 404 | Scheduler tidak ditemukan | {"status": "error", "message": "Scheduler not found"} |
| 500 | Database error | {"status": "error", "message": "Database error"} |
| 500 | Aggregate gagal | {"status": "error", "message": "Failed to process scheduler data"} |
| 500 | Decode gagal | {"status": "error", "message": "Failed to decode scheduler data"} |
| 404 | Data kosong | {"status": "error", "message": "Scheduler data not found"} |
| 400 | Device token kosong | {"status": "error", "message": "Device token not found"} |
| 400 | Pesan kosong | {"status": "error", "message": "No broadcast messages found"} |
Behavior fan-out
Kedua endpoint spawn RunningSubmitBroadcastMessage goroutine (broadcast.go:266):
- Rate limiter: 8 msg/s (token bucket, burst 8)
- Timeout: 60 menit overall, 90 detik per-pesan
- Endpoint WA gateway:
EngineUri + "send-broadcast"(text),EngineUri + "send-media"(media) - Log: per-pesan ke
broadcast_logscollection - Recovery: jika gagal dan mode
broadcast_sceduler, setonprogress: falsedi scheduler
Lihat Broadcast Scheduler untuk detail alur.
Contoh request
send_broadcast (one-shot)
curl -X POST https://api.dazo.id/v1/send_broadcast \
-H "Authorization: Bearer <jwt>" \
-H "Content-Type: application/json" \
-d '{
"token": "device-token-xxx",
"numbers": ["62812xxxx", "62813xxxx"],
"messagex": "Promo minggu ini!",
"teamId": "team-1",
"storeId": "store-1"
}'broadcast/scheduler
curl -X POST https://api.dazo.id/v1/broadcast/scheduler \
-H "Authorization: Bearer <jwt>" \
-H "Content-Type: application/json" \
-d '{
"broadcast_scheduler_id": "scheduler-uuid-xxx",
"running_mode": "manual"
}'Tenant CRM
POST /v1/send_broadcast_crm (handlers/broadcast_crm.go:127) — varian CRM, pakai EngineUriCRM + "send-broadcast" (:5003) dan submitPoint (non-context). Saat ini panic (MongoClientCrm nil).
Kembali ke
- API Reference Index — daftar semua grup
- Broadcast Scheduler — detail fan-out