SMS API
SMS API for OTPs and product alerts.
Send A2P SMS with stable message IDs, idempotency keys, delivery states, and webhook events your backend can trust.
Send a test SMSSMS send contract
The request should include the recipient, template or body, and an idempotency key. A successful response should return a message ID and the first delivery state.
Response
message_id + queued status
Retry safety
idempotency key required
Trace the whole lifecycle.
When a user says they did not get the code, you should know where it stopped.
Stable IDs
Every accepted request returns a message_id your team can search, store, and trace.
Idempotent sends
Use idempotency_key for retries so network failures do not create duplicate OTPs.
Failure reasons
Expose provider responses and normalized errors so support is not guessing.
Webhook events
Handle message.sent, message.delivered, and message.failed in your backend.
Expected SMS states
queuedsentdeliveredfailedexpired