Skip to main content
POST
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 runs regardless of what you pass. Until the flags are wired up, this endpoint behaves the same as POST /v2/send/bulk except that it does not perform link wrapping or 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

Individual messages that fail are reported per-message (below) and the request still returns 201. The request returns 502 only when every message fails to queue for delivery. Authenticated requests can also fail with 401 invalid_credentials, 403 account_suspended, or 429 rate_limited — see Error Codes.

Per-Message Errors

Returned inside each failed entry of the response’s errors[] array (as code), with the request status 201.

Next Steps

Campaign Execution

How messages flow from queue to delivery

Create Contact

Add contacts before sending