Message status
Two reads: one message, or one day of them.
Read one message
/api/v1/sms/messages/{message_id}
curl "https://api.splashifypro.com/api/v1/sms/messages/0f1c2d3e-4a5b-6c7d-8e9f-0a1b2c3d4e5f" \
-H "Authorization: Bearer sms_live_your_key_here"{
"success": true,
"message_id": "0f1c2d3e-4a5b-6c7d-8e9f-0a1b2c3d4e5f",
"to": "919876543210",
"sender_id": "SPLSFY",
"body": "Your OTP is 482913. Valid for 10 minutes.",
"category": "service_implicit",
"status": "delivered",
"detail": "DELIVERY_SUCCESS",
"parts": 1,
"unicode": false,
"created_at": "2026-08-30T09:14:22Z",
"submitted_at": "2026-08-30T09:14:23Z",
"delivered_at": "2026-08-30T09:14:29Z"
}A message id that is not yours returns 404, the same as one that does not
exist. There is no way to read another account's message by guessing an id.
List a day
/api/v1/sms/messages
curl "https://api.splashifypro.com/api/v1/sms/messages?day=2026-08-30&limit=200" \
-H "Authorization: Bearer sms_live_your_key_here"A day at a time, on purpose
Messages are stored partitioned by day, so a single-day read stays the same speed whether you sent ten messages last month or ten million. An endpoint that returned everything would get slower for you every week you stayed a customer.
To cover a range, request each day. The days are UTC, so a late-evening IST send lands on the following UTC day; if you present days to your own users in IST, convert on your side.
Statuses
Polling
If you poll rather than receiving webhooks:
- Poll the single-message endpoint for messages you care about, not the list endpoint in a loop.
- Back off. Most messages settle within seconds; a few take minutes. Every ten seconds for the first minute, then every minute, is plenty.
- Stop at a final status.
delivered,failedandrejecteddo not change afterwards. - Give up after 48 hours. Anything unresolved by then is settled automatically, and under charged-on-delivery billing it is refunded.
Receiving a delivery webhook is cheaper than polling if you can accept one.