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 string<date-time> optional

Optional future RFC 3339 UTC instant. Omit (or empty) to send immediately; supply a future time to schedule.

acknowledge_no_topic boolean optional

Confirm the no-topic warnings for a topic-less broadcast. Required (here or at create) before a topic-less broadcast can be sent.

Responses

Errors follow the RFC 7807 problem format — see the error reference.

202 Send accepted (immediate) or scheduled application/json
id string<uuid> required
status string enum required

sending for an immediate send (the pipeline runs asynchronously) or scheduled when a future scheduled_at was supplied.

One of: sending, scheduled

401 Missing, malformed, or unknown API key application/problem+json
403 Either the credential lacks the required scope (code: invalid_scope), or it is bound to the test environment and this operation is irreversible (code: test_environment_forbidden). Branch on code: the first is fixed by granting the scope, the second only by using a live credential. See the "Live and test credentials" section of the API description. 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