Send your first SMS
One authenticated POST puts an SMS on its way to an Indian number. Here's the whole round trip — send, response, delivery receipt — in three languages.
1. Authenticate
Pass your API key as a bearer token on every request, against the base URL https://api.smsapi.in/v1. Keep the key server-side; never ship it in a client.
2. Send a message
POST to /sms with your sender header, the route, one or more E.164 numbers, the body, and the two DLT identifiers India requires. Switch route to promotional for marketing traffic.
curl https://api.smsapi.in/v1/sms \
-H "Authorization: Bearer $SMSAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender": "SMSAPI",
"route": "transactional",
"numbers": ["+919876543210"],
"message": "Your OTP is 481920. Valid for 10 minutes.",
"dlt_template_id": "1707170000000000000",
"dlt_entity_id": "1101400000000000000"
}'3. Read the response and the receipt
The response returns a request ID and a per-number message ID. When the operator confirms the final state, we POST a delivery receipt to your webhook with that message ID — match on it to reconcile. Errors come back as a non-2xx status with a stable error code.
{
"request_id": "req_3f9a2b",
"messages": [
{ "message_id": "sms_9c81a0", "to": "+919876543210", "status": "submitted" }
]
}
// Later, on your webhook:
{ "event": "sms.dlr", "message_id": "sms_9c81a0", "status": "delivered",
"at": "2026-06-09T09:14:31+05:30" }Request shapes are representative pending the white-label telco API spec (FLAGS_AND_ASSUMPTIONS.md).
Next steps
- — Get DLT-registered to obtain your entity and template IDs.
- — Receive replies with two-way SMS on a long or short code.
- — Read the Bulk SMS API overview for routes, throughput, and reporting.