List Messages
Returns messages sent by the authenticated account, paginated by creation time descending.
GET/api/v1/messages
X-API-KeyQuery parameters
| Field | Type | Required | Description |
|---|---|---|---|
| status | string | optional | Filter by pending, queued, sending, sent, delivered, or failed |
| api_key_id | number | optional | Filter to messages sent with a specific API key |
| search | string | optional | Partial match across to_number, content, and reference_id |
| from | string | optional | RFC3339 lower bound on created_at, e.g. 2026-01-01T00:00:00Z |
| to | string | optional | RFC3339 upper bound on created_at |
| page | number | optional | 1-indexed page number, default 1 (values below 1 are treated as 1) |
| limit | number | optional | Page size, default 20, max 100 |
Example response
{
"success": true,
"data": {
"data": [
{
"api_key_id": 7,
"api_key_name": "Production",
"api_key_prefix": "uk_live_ab12",
"app_name": "MyApp",
"reference_id": "550e8400-e29b-41d4-a716-446655440000",
"to_number": "+99361394459",
"content": "Your code is 482153",
"status": "delivered",
"sent_at": "2026-04-21T11:20:02Z",
"delivered_at": "2026-04-21T11:20:08Z",
"created_at": "2026-04-21T11:20:00Z"
}
],
"total": 42,
"page": 1,
"limit": 20
}
}
Message objects have the same shape as in Get Message. Unparseable from/to values and non-positive api_key_id values are ignored rather than rejected.
Errors
| Code | Description |
|---|---|
| 401 UNAUTHORIZED | API key missing or invalid |
| 429 RATE_LIMITED | Too many requests — retry after Retry-After |