Skip to content
Beta — the Waasl API is in private beta. Endpoints marked Coming soon are designed but not live yet. Request early access

Broadcasts

Send an approved template to an audience, with throttling and per-recipient delivery reporting.

GET/v1/broadcastsComing soon

Query parameters

Field Type Description
cursor string The next_cursor from the previous page.
Terminal window
curl "https://api.waasl.io/v1/broadcasts" \
-H "Authorization: Bearer $WAASL_API_KEY"
Response 200 — A page of broadcasts
{
"data": [
{
"name": "string",
"channel_id": "string",
"template": {
"name": "string",
"language": "string"
},
"audience": {
"tags": [],
"stage_id": "string",
"recipients": []
},
"send_at": "2026-10-01T08:15:00Z",
"id": "bc_R2d9",
"status": "scheduled",
"counts": {
"total": 0,
"sent": 0,
"delivered": 0,
"read": 0,
"replied": 0,
"failed": 0
}
}
],
"next_cursor": "MjAyNi0xMC0wMVQwODoxNTowMC4wMDBafGN2XzNQekE5MQ",
"has_more": true
}
POST/v1/broadcastsComing soon

Sends an approved template to an audience — a tag, a stage, or an explicit list of up to 10,000 recipients with per-recipient template parameters. Schedule it with send_at, or omit it to start now. Messages are paced to stay inside your WhatsApp messaging tier.

Headers

Field Type Description
Idempotency-Key string A unique key (UUID recommended). Retrying with the same key returns the original result instead of acting twice. Kept for 24 hours.

Request body

Field Type Description
name required string
channel_id string
template required object
template.name string
template.language string
audience required object One of tags, stage_id or recipients.
audience.tags string[]
audience.stage_id string
audience.recipients object[]
send_at string (date-time)
Terminal window
curl -X POST "https://api.waasl.io/v1/broadcasts" \
-H "Authorization: Bearer $WAASL_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "Ramadan menu launch",
"channel_id": "ch_wa_7Yt2",
"template": {
"name": "ramadan_menu",
"language": "ar"
},
"audience": {
"tags": [
"active-subscriber"
]
},
"send_at": "2026-10-05T09:00:00+03:00"
}'
Response 201 — Scheduled broadcast
{
"name": "string",
"channel_id": "string",
"template": {
"name": "string",
"language": "string"
},
"audience": {
"tags": [
"string"
],
"stage_id": "string",
"recipients": [
{
"to": "string",
"params": []
}
]
},
"send_at": "2026-10-01T08:15:00Z",
"id": "bc_R2d9",
"status": "scheduled",
"counts": {
"total": 0,
"sent": 0,
"delivered": 0,
"read": 0,
"replied": 0,
"failed": 0
}
}
GET/v1/broadcasts/{broadcast_id}Coming soon

Includes live counts — queued, sent, delivered, read, replied, failed.

Path parameters

Field Type Description
broadcast_id required string
Terminal window
curl "https://api.waasl.io/v1/broadcasts/bc_R2d9" \
-H "Authorization: Bearer $WAASL_API_KEY"
Response 200 — The broadcast
{
"name": "string",
"channel_id": "string",
"template": {
"name": "string",
"language": "string"
},
"audience": {
"tags": [
"string"
],
"stage_id": "string",
"recipients": [
{
"to": "string",
"params": []
}
]
},
"send_at": "2026-10-01T08:15:00Z",
"id": "bc_R2d9",
"status": "scheduled",
"counts": {
"total": 0,
"sent": 0,
"delivered": 0,
"read": 0,
"replied": 0,
"failed": 0
}
}
POST/v1/broadcasts/{broadcast_id}/cancelComing soon

Stops a scheduled or sending broadcast. Messages already sent are not recalled.

Path parameters

Field Type Description
broadcast_id required string
Terminal window
curl -X POST "https://api.waasl.io/v1/broadcasts/bc_R2d9/cancel" \
-H "Authorization: Bearer $WAASL_API_KEY"
Response 200 — Cancelled broadcast
{
"name": "string",
"channel_id": "string",
"template": {
"name": "string",
"language": "string"
},
"audience": {
"tags": [
"string"
],
"stage_id": "string",
"recipients": [
{
"to": "string",
"params": []
}
]
},
"send_at": "2026-10-01T08:15:00Z",
"id": "bc_R2d9",
"status": "scheduled",
"counts": {
"total": 0,
"sent": 0,
"delivered": 0,
"read": 0,
"replied": 0,
"failed": 0
}
}