Cancel the rest of a broadcast
Nobody still waiting gets their text, and texts queued but not yet taken by your Mac are canceled.
/v1/broadcasts/{id}/cancel
Nobody still waiting gets their text, and texts queued but not yet taken by your Mac are canceled. Texts already sent stay sent. broadcast.completed fires with state: "canceled".
Needs a key with the messages:send scope.
Send an Idempotency-Key so a retry never acts twice.
Path parameters
idstringrequiredThe broadcast’s id.
Starts with
bc_.
Headers
Idempotency-KeystringAny string of up to 255 characters, new for each request. A retry with the same key gets the first answer back for 24 hours, with
Idempotent-Replayed: true.Up to 255 characters.
Example
/v1/broadcasts/bc_1Hq2LxW9cVbN3mKpRtYs0a/cancelcurl -X POST "https://usebluebot.com/api/v1/broadcasts/bc_1Hq2LxW9cVbN3mKpRtYs0a/cancel" \
-H "Authorization: Bearer $BLUEBOT_API_KEY" \
-H "Idempotency-Key: 0f6d8c2e-5b1a-4c7e-9d3f-2a8b6e1c4d70"Response
200: The broadcast, canceled.
idstringrequiredA bc_ id.
Starts with
bc_.object"broadcast"requirednamestringrequiredtextstring or nullrequiredThe words, with
{{variables}}, as you wrote them. Each person’s filled-in text is on their message. Null once they’re deleted, 30 days after the broadcast finished.text_deletedbooleanrequiredTrue once the words, and the values each person’s list row brought, were deleted 30 days after the broadcast finished.
template_idstring or nullrequiredThe template the words came from, when one did.
audienceanyrequiredWho the broadcast goes to.
servicestringrequiredOne of
auto,imessage,sms.statestringrequireddraft,scheduled(waiting forsend_at),sending,completedorcanceled.One of
draft,scheduled,sending,completed,canceled.send_attimestamp or nullrequiredWhen it starts, for a scheduled broadcast.
started_attimestamp or nullrequiredWhen the first text was queued.
completed_attimestamp or nullrequiredWhen every text had settled.
canceled_attimestamp or nullrequiredWhen the rest was canceled.
recipient_countintegerrequiredHow many people it goes to, up to 500.
countsmap of integerrequiredHow many recipients are in each state:
pending,queued,sent,delivered,read,failed,skippedand so on.estimateBroadcastEstimate or nullrequiredFor a scheduled or sending broadcast, when the rest should go. Worked out on
GET /v1/broadcasts/{id}and when it is made; null in lists.Show its 6 fieldsHide its fields
first_attimestamp or nullrequiredWhen the first text should go.
last_attimestamp or nullrequiredWhen the last text should go, given your pace, quiet hours and daily limits.
daysintegerrequiredHow many days the sending spans in your time zone.
waits_forarray of stringsrequiredHolds the texts will meet on the way:
quiet_hours,daily_new_people_limit,platform_daily_limit.blocked_bystring or nullrequiredA hold with no end that stops the broadcast from going, such as
plan_lapsed.mac_onlinebooleanrequiredWhether your Mac is online now. The estimate assumes it stays on.
created_viastringrequiredOne of
dashboard,api,assistant,mcp,zapier,cli.created_attimestamprequiredWhen it was made.
{
"id": "bc_1Hq2LxW9cVbN3mKpRtYs0a",
"object": "broadcast",
"name": "Open house Saturday",
"text": "Hi {{first_name|there}}, open house at 412 Oak St this Saturday 1–4. Reply STOP to opt out.",
"text_deleted": false,
"template_id": null,
"audience": {
"kind": "tags",
"tags": [
"buyer"
]
},
"service": "auto",
"state": "canceled",
"send_at": "2026-11-14T15:00:00.000Z",
"started_at": null,
"completed_at": null,
"canceled_at": "2026-11-13T19:41:00.000Z",
"recipient_count": 42,
"counts": {
"sent": 20,
"canceled": 21,
"skipped": 1
},
"estimate": null,
"created_via": "api",
"created_at": "2026-11-13T19:41:00.000Z"
}Errors
Every refusal has the same envelope and a page of its own. These are the ones this operation can give.
| Code | Status | What it means |
|---|---|---|
| 401 | The request carried no key, or a key BlueBot doesn’t know: mistyped, revoked, or a test key sent to the live API. | |
| 403 | The key doesn’t carry the scope the endpoint needs. Each endpoint’s reference names its scope. | |
| 429 | Too many requests. A key may make 120 requests a minute. The RateLimit header says how many are left, and Retry-After how long to wait. | |
| 500 | Something went wrong on BlueBot’s side. It was reported. Send the request again; with an Idempotency-Key that is always safe. | |
| 404 | There is no such thing on this account. Ids are prefixed by kind, so a message id starts with msg_. | |
| 409 | The request doesn’t fit the thing’s current state, or another request with the same Idempotency-Key is still running. |
Try it
Call this operation from the page with your own key. The key stays in this tab and is forgotten when you leave.