Send a broadcast immediately
Requires `write` (`broadcast:send`). Dispatches an immediate SendBroadcastWorkflow instance (`sendAt: null`). If the broadcast is already `scheduled`, pass `confirm=true` to cancel the pending schedule and send now instead (never transits `canceled`); without `confirm=true` this 409s with the active schedule so the caller can prompt for confirmation. 422s if no audience is targeted or an `actions` block has a link-less button (`assertButtonsLinked`).
/api/broadcasts/{id}/send-nowA Stet API key (prefix bk_), created under Settings → API keys. The whole API requires the Growth plan or higher; keys are scoped read or write — composing and sending require write.
In: header
Path Parameters
Query Parameters
Confirms a cancel-and-send when the broadcast is already scheduled.
falseHeader Parameters
Required client-generated key (UUID). Missing → 400 (idempotency-key-required). Replaying a request with the same key returns the original result instead of repeating the side effect; note that this replay layer is best-effort response caching, not a single-flight lock — the send pipeline's atomic claim is the real exactly-once guarantee for a dispatched send.
uuidResponse Body
curl -X POST "https://app.stethq.com/api/broadcasts/string/send-now?confirm=false" \ -H "Idempotency-Key: 497f6eca-6276-4993-bfeb-53cbbbba6f08"{
"broadcastId": "string",
"workflowInstanceId": "string",
"status": "sending"
}{
"type": "http://example.com",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string"
}{
"type": "http://example.com",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string"
}{
"type": "http://example.com",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string"
}{
"type": "http://example.com",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string"
}{
"type": "http://example.com",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string"
}{
"type": "http://example.com",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string"
}{
"type": "http://example.com",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string"
}Schedule a broadcast
Requires `write` (`broadcast:send`). Arms a SendBroadcastWorkflow instance that sleeps until `send_at`. Callable from any status except `sending` (including re-scheduling an already-scheduled broadcast, or re-scheduling a terminal one) — see docs/api/broadcast-lifecycle.md §1 for the full state machine.
Set content from Markdown
Requires `write` (`broadcast:compose`). Converts Markdown to blocks and reconciles them via the same doc-is-truth path as `PUT .../blocks`. Draft-only — `409` on any other status. A construct the converter can't represent (images, raw HTML, tables, nested list blocks) 400s with `UnsupportedMarkdownProblem` instead of silently dropping content.