Skip to main content
Use an active template, a connected test Slack workspace, and an API key with templates:read and messages:create. Use a test channel in your account; see availability for environment separation.
1

Configure your environment

Load the real key through your secret manager in a deployed application.
2

Discover the input shape

Match the selected version’s inputs. The example below assumes the Quickstart fields user.name and user.role.
3

Send to a test channel

Replace C_TEST_CHANNEL with a channel ID. Generate one operation ID per intended send and preserve it for retries of that send.
4

Verify the result

A successful response contains success, channel, and message_ts. Save the message coordinates and response request ID. Check Slack for the resolved name and role, then test the handbook link.
A representative success response is:

Destination choices

Supply exactly one destination per send: For POST /v1/templates/send-bulk, provide destinations with 1–100 such objects. Inspect every result, including when HTTP status is 200. Do not resend successful destinations as part of retrying a partial failure.

Compile without sending

Call POST /v1/templates/compile with template_id and data, omitting the destination. Compilation spends credits and returns compiled_message; it does not post to Slack. To check newly authored blocks without spending message credits, use POST /v1/templates/validate instead.

Handle errors and retries

A missing scope returns 403, with code: "insufficient_scope" and required_scopes. Invalid destination combinations return a validation error. Use the endpoint reference for exact response schemas. For retries, keep the same idempotency key and identical body. A timeout or 5xx can leave an uncertain outcome; inspect logs before attempting a new operation. Never change keys simply to bypass an in-progress or uncertain result. Completed responses below 500 can expire after 24 hours, so replay protection is not permanent. API conventions · Logs · Complete template example