Error format
Errors return a non-2xx status code and a JSON body:HTTP status codes
Error codes
Verify API errors
See OTP verification for the full flow.
Sender ID request errors
Errors by endpoint
Message statuses
Responses also include a
mode field: live for billable carrier sends, sandbox for sandbox sends, and mixed on bulk batches that contain both.
Bulk results
POST /sms/bulk returns one result per recipient. A failed recipient has success: false, a null message_id, and a description in error. Use dispatched_count and failed_count to check the batch totals.
Rate limits
The API allows 600 requests per minute (10 requests per second). Requests above the limit return429 RATE_LIMIT_EXCEEDED.
Idempotency
Add anIdempotency-Key header to POST /sms/send to retry safely without sending or billing twice.
- Use a unique value up to 128 characters, such as a UUID v4.
- Keys are cached for 24 hours per account.
- Replayed requests return the header
X-Cache-Lookup: HIT (Idempotent).
Compliance pre-check
CallPOST /compliance/inspect to run the 21-rule UCC compliance and segmentation check before sending. It flags prohibited spam keywords, deceptive financial text, and length issues. See Compliance.
