Skip to main content
POST
Sends an approved pending send. The stored payload goes through exactly the path a direct POST /v2/send or /v2/send/bulk would take, under the key making this call: suppression, double opt-in, warmup, the key’s list policy and daily send cap, and attribution (api_key_id on the message rows) all apply at this moment. A sandbox key executes a simulation. On completed submission the pending send moves to sent and result carries the send response (message_id and status, or the bulk queued_count / error_count / errors). A partially accepted batch can be sent even when some messages were refused; read result.errors for those. If every bulk recipient is refused before publication, the response is 207, the hold remains approved, and last_error contains the refusal details. Partial submission with a known completed result returns 201 sent; inspect per-recipient errors. A refusal before any publication intent can leave the send approved, with last_error set, for retry before expires_at. Once publication may have occurred, an uncertain or interrupted execution becomes unknown_execution. Do not create a replacement or automatically resend it: poll the same pending ID and inspect its execution evidence. Recovery requires every recipient to have positive publication evidence or an explicit recorded refusal before publication, and preserves exact bulk counts and indexed errors. Missing evidence never implies refusal. An expired claim with valid evidence and no publication intents can return to approved, including an all-refused batch. Only one concurrent caller can claim execution. Any authorized key on the same account and in the same sandbox mode may execute; that caller’s current list restrictions and quota apply. Sandbox execution stores a simulation result without SMS/carrier submission. Single-send simulation may emit a best-effort signed account webhook; bulk simulation does not. Retrying a simulation after an expired empty claim can repeat that webhook. Completion emits best-effort pending_send.sent activity; an activity-write failure does not undo durable send state. For live sends, sent means submitted, not delivered. The dashboard review pins rendered recipients, senders, message text, and destinations. Allocated message and short-link IDs appear as placeholders. A changed render or link configuration is refused before the first publication with 409 pending_send_render_changed; submit a new hold for review. Holds with missing or malformed reviews cannot execute.

Path Parameters

string
required
Pending send ID.

Errors

Underlying send errors can be returned when no publication intent exists. An error after publication may have started returns unknown_execution instead. Also 401 invalid_credentials.

Examples