Messages API
All endpoints require Bearer JWT.
GET /v1/messages
List messages with optional filtering and pagination.
Query parameters
| Param | Type | Description |
|---|---|---|
provider | string | Filter by whatsapp, telegram, sms |
status | string | Filter by message status |
channelAccountId | UUID | Filter by channel account |
page | integer | Page number (default: 1) |
limit | integer | Items per page (default: 20) |
from | ISO8601 | Start of date range |
to | ISO8601 | End of date range |
Response 200
{
"data": [ /* message objects */ ],
"total": 100,
"page": 1,
"limit": 20
}
GET /v1/messages/:id
Get a single message by ID.
Response 200
{
"id": "msg_01j...",
"tenantId": "ten_01j...",
"provider": "whatsapp",
"to": "+905551234567",
"type": "text",
"status": "delivered",
"body": { "text": "Hello!" },
"externalId": "waid.abc123",
"error": null,
"sentAt": "ISO8601",
"deliveredAt": "ISO8601",
"readAt": null,
"failedAt": null,
"createdAt": "ISO8601",
"updatedAt": "ISO8601",
"attachments": []
}
GET /v1/messages/stats
Aggregate counts grouped by status and provider for the last 30 days.
Response 200
[
{ "provider": "whatsapp", "status": "delivered", "count": 1500 },
{ "provider": "whatsapp", "status": "failed", "count": 12 }
]
GET /v1/messages/stats/daily
Daily message counts for the last N days.
Query parameters
| Param | Type | Default | Description |
|---|---|---|---|
days | integer | 7 | Number of past days to include |
Response 200
[
{ "date": "2025-01-01", "count": 320 },
{ "date": "2025-01-02", "count": 415 }
]