API docs
Messages and batches
Look up the status of a message or a batch by its id.
GET
/v1/messages/{id}The status of one message. The message body is never returned.
curl https://api.wesend.mn/v1/messages/0b9c1a52-6f0e-4d8b-9a3c-2f1e5d7c8a90 \
-H "Authorization: Bearer $WESEND_API_KEY"Response200 OK
{
"id": "0b9c1a52-6f0e-4d8b-9a3c-2f1e5d7c8a90",
"status": "sent",
"channel": "sms",
"to": "99112233",
"parts": 1,
"rate_multiplier": 1,
"credits": 70,
"batch_id": null,
"error": null,
"created_at": "2026-10-06T08:15:30.000Z",
"sent_at": "2026-10-06T08:15:31.000Z"
}Response fields
idstring- The message id (UUID).
statusstringqueued,processing,sentorfailed.channelstringsmsoremail.tostring- The recipient: an 8-digit number or an email address.
partsinteger- Number of SMS parts. SMS only.
rate_multiplierinteger- The holiday rate multiplier. SMS only.
creditsinteger- Credits charged.
batch_idstring | null- The batch, if the message was part of one.
errorobject | null- For a failed message, an object with
codeandmessage. created_atstring- When it was created, ISO 8601 (UTC).
sent_atstring | null- When it was sent.
sent means the operator accepted the message. Delivery reports from the handset are not available yet.
Batches
GET
/v1/batches/{id}The progress of a bulk send.
curl https://api.wesend.mn/v1/batches/5d2a7c1e-93b4-4f6a-8e0d-b1c2d3e4f5a6 \
-H "Authorization: Bearer $WESEND_API_KEY"Response200 OK
{
"id": "5d2a7c1e-93b4-4f6a-8e0d-b1c2d3e4f5a6",
"status": "completed",
"channel": "sms",
"total": 500,
"sent": 497,
"failed": 3,
"credits": 35000,
"created_at": "2026-10-06T08:15:30.000Z",
"completed_at": "2026-10-06T08:19:02.000Z"
}status is processing or completed. credits is the amount charged up front; each failed message has been refunded.