API referenceBroadcasts
Cancel a draft or scheduled broadcast
POST
draft/scheduled → cancelled. Any other status (already sending/paused/sent/cancelled) is a 409 not_cancelable — including the race where the fan-out cron claimed it between your read and this call.
bearerAuthheader
AuthorizationBearer <token>API key sent as Authorization: Bearer <key>. Looked up by SHA-256
hash (email_core::sha256_hex) against api_keys.hash; revoked
keys and keys belonging to a suspended tenant are rejected. See the
top-level Authentication section for permission levels.
id*stringCancelled.
application/json- response
id?stringname?stringsubject?stringfrom_domain_id?string|nullbody_html?string|nullbody_text?string|nulltarget_kind?|Value in
"audience""segment"nulltarget_id?string|nullstatus?stringValue in
"draft""scheduled""sending""paused""sent""cancelled"scheduled_at?|Format
int64total_recipients?integerA best-effort snapshot computed at send time (audience member count, or a segment's live match count).
sent_count?integerAdvanced by the fan-out cron as recipients are enqueued.
created_at?integerFormat
int64updated_at?integerFormat
int64sent_at?|Format
int64curl -X POST "https://example.com/v1/broadcasts/string/cancel"{ "id": "string", "name": "string", "subject": "string", "from_domain_id": "string", "body_html": "string", "body_text": "string", "target_kind": "audience", "target_id": "string", "status": "draft", "scheduled_at": 0, "total_recipients": 0, "sent_count": 0, "created_at": 0, "updated_at": 0, "sent_at": 0}