Re-sync channels from Slack
Requires `write` (`channel:manage`). Refreshes channel metadata (including bot membership) without disconnecting Slack. Detects a Slack-side auth revocation and soft-disconnects the workspace (`409 connection-disconnected`) if the token is dead.
/api/channels/syncA 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
Response Body
curl -X POST "https://app.stethq.com/api/channels/sync"{
"upserted": 0,
"skipped": 0,
"lastChannelSyncAt": "2019-08-24T14:15:22Z"
}{
"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"
}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.
Send a throwaway test render
Requires `write` (`broadcast:send`). Posts to the caller's own Slack DM or a chosen channel using the exact same render path as a real send — "what you test is what lands" — then a small "this is a test" marker as a follow-up message. Mutates nothing: no broadcast row, no `sends` rows, no idempotency.