tumbuh.ai
tumbuh.ai Public API

List broadcast campaigns

GET
https://<domain-anda>
/api/v1/public/broadcasts

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.

List broadcast campaigns › query Parameters

limit
​integer · min: 1 · max: 100

Rows to return, 1-100. Defaults to 25.

Rows to return, 1-100. Defaults to 25.

cursor
​string

The 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.

status
​string

Job 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.

success
​required
​object · required

Send a broadcast

POST
https://<domain-anda>
/api/v1/public/broadcasts

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

templateName
​string · required

Name of an APPROVED template from templates.list.

customerIds
​string[] · required

Customer ids from customers.list. Every eligible one is messaged; customers without consent or on the blacklist are skipped.

languageCode
​string

Language code of the template variant to send, e.g. id or en_US. Defaults to the language of the named template.

​object

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.

templateParams
​string[]

Shorthand for variableValues: values for the template placeholders, in order.

messageDelayMs
​integer · min: 0 · max: 30000

Pause between messages in milliseconds, 0-30000. Defaults to 1000. A longer pause sends more slowly.

whatsappPhoneNumberId
​string

Number to send from, id from channels.phoneNumbers.

Send a broadcast › Responses

The API key is missing, malformed, expired, or its owner is inactive.

success
​required
​object · required

List stalled broadcasts

GET
https://<domain-anda>
/api/v1/public/broadcasts/stuck

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.

List stalled broadcasts › query Parameters

limit
​integer · min: 1 · max: 100

Rows to return, 1-100. Defaults to 25.

Rows to return, 1-100. Defaults to 25.

cursor
​string

The 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.

success
​required
​object · required

Read one broadcast

GET
https://<domain-anda>
/api/v1/public/broadcasts/{id}

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.

Read one broadcast › path Parameters

id
​string · required

Broadcast 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.

success
​required
​object · required

Cancel a running broadcast

POST
https://<domain-anda>
/api/v1/public/broadcasts/{id}/cancel

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.

Cancel a running broadcast › path Parameters

id
​string · required

Broadcast 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.

success
​required
​object · required

Resume a stalled broadcast

POST
https://<domain-anda>
/api/v1/public/broadcasts/{id}/resume

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.

Resume a stalled broadcast › path Parameters

id
​string · required

Broadcast 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
​required
​object · required