Skip to main content

Messages API

All endpoints require Bearer JWT.


GET /v1/messages

List messages with optional filtering and pagination.

Query parameters

ParamTypeDescription
providerstringFilter by whatsapp, telegram, sms
statusstringFilter by message status
channelAccountIdUUIDFilter by channel account
pageintegerPage number (default: 1)
limitintegerItems per page (default: 20)
fromISO8601Start of date range
toISO8601End 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

ParamTypeDefaultDescription
daysinteger7Number of past days to include

Response 200

[
{ "date": "2025-01-01", "count": 320 },
{ "date": "2025-01-02", "count": 415 }
]