Broadcast
List broadcast campaigns
Return broadcast campaigns with their status and delivery counts.
Returns broadcast jobs, newest first, each with its template, audience size, status and how many messages were sent, delivered or failed. Use it to check whether a send has finished before starting another. Read-only. Paginated: follow meta.pagination.nextCursor until hasMore is false.
query Parameters
limitRows to return, 1-100. Defaults to 25.
Rows to return, 1-100. Defaults to 25.
cursorThe meta.pagination.nextCursor value from the previous call. Omit it to read the first page.
The meta.pagination.nextCursor value from the previous call. Omit it to read the first page.
statusJob status, e.g. QUEUED, PROCESSING, COMPLETED or CANCELLED.
Job status, e.g. QUEUED, PROCESSING, COMPLETED or CANCELLED.
List broadcast campaigns › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successSend a broadcast
Send a WhatsApp template to many customers at once.
Starts a mass send to every customer in the audience you name and begins charging for each message immediately. Messages already dispatched cannot be recalled — cancelling only stops what has not gone out yet. Use it only on an explicit instruction that names the audience and the template; check the template is APPROVED with templates.list first. Requires the separate broadcast:send scope and is limited to 5 calls per minute.
Send a broadcast › Request Body
templateNameName of an APPROVED template from templates.list.
customerIdsCustomer ids from customers.list. Every eligible one is messaged; customers without consent or on the blacklist are skipped.
languageCodeLanguage code of the template variant to send, e.g. id or en_US. Defaults to the language of the named template.
Template placeholder values keyed by placeholder number, e.g. {"1":"{customer_name}","2":"20%"}. A value may use {customer_name}, {customer_email}, {customer_phone}, {customer_tags}, {customer_lead_score} or {customer_instagram} to personalise per recipient. Takes precedence over templateParams.
templateParamsShorthand for variableValues: values for the template placeholders, in order.
messageDelayMsPause between messages in milliseconds, 0-30000. Defaults to 1000. A longer pause sends more slowly.
whatsappPhoneNumberIdNumber to send from, id from channels.phoneNumbers.
Send a broadcast › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successList stalled broadcasts
Return broadcasts that are PROCESSING but have stopped making progress.
Returns the broadcasts that are still marked PROCESSING but whose worker has not reported for over 5 minutes, with how many recipients were processed and how many remain. Use it when a send seems to have frozen, then decide whether to call broadcasts.resume. Read-only. Paginated: follow meta.pagination.nextCursor until hasMore is false.
query Parameters
limitRows to return, 1-100. Defaults to 25.
Rows to return, 1-100. Defaults to 25.
cursorThe meta.pagination.nextCursor value from the previous call. Omit it to read the first page.
The meta.pagination.nextCursor value from the previous call. Omit it to read the first page.
List stalled broadcasts › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successRead one broadcast
Fetch a single broadcast with its per-recipient delivery statistics.
Returns one broadcast job with its template, its audience and the breakdown of who received, read or failed. Use it to diagnose a send that did not land. Read-only.
path Parameters
idBroadcast job id from broadcasts.list.
Broadcast job id from broadcasts.list.
Read one broadcast › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successCancel a running broadcast
Stop a broadcast from sending anything further.
Halts a running broadcast so the queued messages are never sent. Messages already delivered cannot be undone — this only stops the remainder. Use it the moment a wrong audience or template goes out, because every second costs more messages. Requires broadcast:send and is limited to 5 calls per minute.
path Parameters
idBroadcast job id from broadcasts.list. Messages already sent stay sent — only what is still queued is stopped.
Broadcast job id from broadcasts.list. Messages already sent stay sent — only what is still queued is stopped.
Cancel a running broadcast › Responses
The API key is missing, malformed, expired, or its owner is inactive.
successResume a stalled broadcast
Re-queue a broadcast that froze mid-send so the remaining recipients are messaged.
Queues a PROCESSING broadcast for recovery so it carries on from where it stopped. This SENDS the remaining recipients' messages and is charged per message exactly like the original send, and delivered messages cannot be recalled. Use it only after broadcasts.stuck lists the job and the owner wants it finished; use broadcasts.cancel instead to abandon it. Refused when the job is not PROCESSING or is already queued for recovery. Requires broadcast:send and is limited to 5 calls per minute.
path Parameters
idBroadcast job id from broadcasts.stuck. Only PROCESSING jobs can be resumed.
Broadcast job id from broadcasts.stuck. Only PROCESSING jobs can be resumed.
Resume a stalled broadcast › Responses
The API key is missing, malformed, expired, or its owner is inactive.
success