Skip to content

Paginated list of sent messages with filtering.

GET /api/v1/sms/messages · Permission: sms.read

Terminal window
curl "https://restlink23telecom.com/api/v1/sms/messages?status=delivered&limit=10" \
-H "X-API-Key: $API_KEY"
Parameter Default Description
page 1 Page number
limit 25 Results per page (max 100)
status — delivered, undelivered, expired, pending, sent, failed, unknown, not_billed
phone — Search by phone number (substring)
country — ISO code: US, GB, …
sender — Filter by sender ID
period 7d today, yesterday, 7d, 30d, this_month, last_month
from / to — Custom range YYYY-MM-DD (omit period; the to day is included)
200 OK
{
"messages": [
{
"id": 1847,
"client_message_id": "api_42_1743667200123456789_a3f8b2c1d9e45f67",
"recipient": "+14155551234",
"sender_id": "MyApp",
"message": "Your verification code is 847291",
"status": "DELIVRD",
"status_code": "000",
"segments": 1,
"cost": 0.0085,
"created_at": "2026-02-13T10:30:00Z",
"delivered_at": "2026-02-13T10:30:04Z"
}
],
"total": 1250,
"page": 1,
"limit": 10,
"total_pages": 125
}
Filter Matches statuses
delivered DELIVRD
undelivered UNDELIV, UNKNOWN, REJECTD, DELETED — messages that reached a carrier and failed there
expired EXPIRED
pending pending, sent, ENROUTE, ACCEPTD
sent Every status except not_billed (messages sent to the network)
not_billed credit_rejected, and failed messages the gateway rejected before routing (no route available). Never charged.
failed Legacy alias: undelivered plus gateway rejections
unknown Legacy alias, same as failed

GET /api/v1/sms/messages/unified · Permission: sms.read

Combines API traffic and broadcast campaigns in one view. Accepts the same parameters as /sms/messages plus:

Parameter Default Description
source all api, broadcasts, all
Terminal window
curl "https://restlink23telecom.com/api/v1/sms/messages/unified?source=all&limit=20" \
-H "X-API-Key: $API_KEY"
200 OK (unified, one item)
{
"messages": [
{
"id": "3201",
"source": "campaign",
"recipient": "+447911123456",
"sender_id": "Promo",
"message": "50% off today!",
"status": "DELIVRD",
"status_code": "000",
"cost": 0.042,
"sent_at": "2026-02-13T09:00:00Z",
"delivered_at": "2026-02-13T09:00:03Z",
"clicked": true,
"clicked_at": "2026-02-13T09:05:12Z",
"action_type": "registration",
"action_at": "2026-02-13T10:00:00Z",
"message_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"client_message_id": null,
"segments": 1,
"broadcast_id": 42,
"broadcast_name": "February Promo"
}
],
"total": 5420,
"page": 1,
"limit": 20,
"total_pages": 271
}

GET /api/v1/sms/messages/unified/export · Permission: sms.read

Streaming CSV export with the same filters as the unified list:

Terminal window
curl "https://restlink23telecom.com/api/v1/sms/messages/unified/export?period=30d" \
-H "X-API-Key: $API_KEY"

What to expect:

  • Excel-compatible — the body starts with a UTF-8 BOM.
  • Row cap — default 1,000,000 rows; the active cap is advertised in the X-Export-Limit response header. Larger result sets are truncated silently, so narrow the date window to drill down.
  • Content-Disposition: attachment; filename="messages_export_<timestamp>.csv".