Skip to main content
POST
Keys requiring send approval receive 403 confirmation_required for direct sends. Use pending sends for approved single or bulk SMS; raw sends have no approval workflow. Send up to 1,000 raw SMS messages in a single API call. Each message in the batch is validated independently — successfully validated messages are queued even if others in the batch fail. Each message object accepts a set of skip_* flags intended for granular control over validation and rate-limiting behavior.
The per-message skip_* flags are currently accepted but have no effect. The endpoint does not read them, so every check it performs runs regardless of what you pass. This endpoint skips the recipient consent checks that POST /v2/send/bulk runs before queuing — its only consent checks are for a pending, unconfirmed double opt-in (pending_confirmation) and an expired confirmation window (doi_expired). A recipient who has opted out of the list or is blocked on it is accepted here instead of rejected; that message is still dropped before delivery with status contact_blocked, so a 201 is not proof of delivery — read each message’s status. Every other consent decision is yours: use this endpoint only for recipients whose consent you manage yourself. Other checks, including sending-list ownership and the list’s warm-up schedule, still apply. It differs from POST /v2/send/bulk in more than link wrapping and contact-data macro substitution.
The following checks are always enforced:
  • Your account must own the sending list
  • Phone numbers must be in E.164 format
  • Your account must be in active status

Body Parameters

array
required
Array of raw message objects (maximum 1,000 per request). Each object supports the following fields:

Response Fields

integer
Number of messages successfully queued for delivery.
integer
Number of messages that failed validation or queueing.
array
Array of error objects for messages that failed validation or queueing. Each object contains:

Examples

Error Codes

Request-Level Errors

Partial successes return 201 with per-message errors. When no messages were confirmed queued, any publication failure makes the request return 502; otherwise, an unavailable cap or number-authority check makes it return 503, even if other items failed validation. Authenticated requests can also fail with 401 invalid_credentials, 403 account_suspended, or 429 rate_limited — see Error Codes. After the first unavailable cap check, the remaining eligible messages in that request receive send_cap_unavailable without retrying the counter store. Earlier successful sends remain queued, and other validation failures retain their own codes. A later request checks the counter again.

Per-Message Errors

Returned inside each failed entry of the response’s errors[] array as code.

Next Steps

Campaign Execution

How messages flow from queue to delivery

Create Contact

Add contacts before sending