Send (or schedule) a broadcast

Search Documentation

Search across all developer documentation

broadcasts

Send (or schedule) a broadcast

POST /v1/broadcasts/{id}/send
Auth required api.broadcasts.manage

Dispatches a draft (or scheduled) broadcast. With no body, or no scheduled_at, it sends immediately. With a future RFC 3339 scheduled_at it schedules the broadcast for delivery at that time.

Consent and suppression are enforced at send time: suppressed, globally-unsubscribed, and (when the broadcast has a topic) topic-opted-out recipients are filtered before SES hand-off. Poll GET /v1/broadcasts/{id}/results for per-recipient outcomes.

A topic-less broadcast degrades its unsubscribe link to an account-wide opt-out; sending one requires acknowledge_no_topic: true, otherwise the call returns 422 no_topic_acknowledgement_required with the warnings to confirm. Supports the Idempotency-Key header so a retried send does not double-fire. Returns 202 with the broadcast id and its accepted status.

Path parameters

id string<uuid> required

Resource UUID. An unparseable id reads as a clean 404 not_found.

Request body

Content type: application/json

{
  "scheduled_at": "2026-05-17T20:00:00Z",
  "acknowledge_no_topic": true
}

Responses

202 Send accepted (immediate) or scheduled application/json
401 Missing, malformed, or unknown API key application/problem+json
403 Key lacks the required scope or plan limit violated application/problem+json
404 Resource not found application/problem+json
422 Query parameter or path value failed validation application/problem+json
429 Per-org rate limit exceeded application/problem+json
500 Unexpected server-side failure. The code is internal_error. The request_id field can be quoted to SendOps support to investigate. application/problem+json