Skip to main content

Message status

Look up the current status of a message you sent through the API.

GEThttps://api.cloudmetis.com/v1/sms/status/{message_id}scope: sms:read

Prefer webhooks for tracking delivery — they arrive as soon as the status changes. Use this endpoint to check a single message on demand or to recover after missed webhooks.

Request​

curl https://api.cloudmetis.com/v1/sms/status/msg_247 \
-H "Authorization: Bearer cm_live_your_key"

Response (200)​

{
"message_id": "msg_247",
"to": "+254712345678",
"status": "delivered",
"sms_parts": 1,
"network": "Safaricom",
"sent_at": "2026-11-01T14:30:21+03:00",
"delivered_at": "2026-11-01T14:30:25+03:00",
"failure_reason": null,
"sandbox": false
}
FieldDescription
statusSee the table below
sms_partsUnits used by this message
networkSafaricom, Airtel, Telkom or null if unknown
sent_atWhen the message was handed to the network
delivered_atWhen the network confirmed delivery, or null
failure_reasonWhy it failed, or null

Statuses​

StatusMeaningFinal?
queuedAccepted, waiting to be sentNo
submittedHanded to the gateway, waiting for the networkNo
sentAccepted by the mobile networkNo
deliveredThe phone received itYes
failedThe network could not deliver it (phone off too long, number not in service…)Yes
expiredThe network gave up after its delivery windowYes
rejectedThe network refused it (invalid number, blocked sender…)Yes
optedoutThe number opted out of your messagesYes

Once a message reaches a final status it never changes.

Errors​

StatusCodeWhen
404not_foundUnknown ID, or the message belongs to another organisation or was not sent through the API
403scope_deniedThe key lacks sms:read

Only messages sent through the API can be looked up. Messages sent from the app's campaigns are not visible here.