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.
/api/broadcasts/{id}/contentA 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
Shorthand for one universal (no-audience) segment.
1 <= itemsResponse Body
curl -X POST "https://app.stethq.com/api/broadcasts/string/content" \ -H "Content-Type: application/json" \ -d '{ "markdown": "string" }'{
"blocks": [
{
"id": "string",
"position": 0,
"type": "string",
"audienceIds": [
"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"
}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`).
Suggest audiences from channel-name prefixes
Requires `write` (`audience:manage`). Pure heuristic, no LLM: groups channels by a shared `prefix-` in their name (≥3 channels) and proposes a name like "All Marketing", derived from the shared channel-name prefix. Nothing is created — the caller follows up with `POST /api/audiences` to accept a suggestion.