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.
/api/broadcasts/{id}/scheduleA 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
Header 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.
uuidISO 8601 datetime WITH a UTC offset (zod .datetime({ offset: true })).
date-timeIANA zone name.
"UTC"Response Body
curl -X POST "https://app.stethq.com/api/broadcasts/string/schedule" \ -H "Idempotency-Key: 497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{ "send_at": "2019-08-24T14:15:22Z" }'{
"broadcastId": "string",
"workflowInstanceId": "string",
"status": "scheduled"
}{
"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"
}Revoke an API key
**Dashboard-session only** — this operation does not accept `bk_` Bearer auth. Requires capability `apikey:manage` (Admin role). Sets `revokedAt`; the row is kept (not deleted) for audit history.
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`).