Skip to main content

List WhatsApp

Retrieve transactional WhatsApp messages sent by your organization, most recent first.

Endpoint​

GET /whatsapp

Returns: 200 OK

Transactional only

Campaign sends are not included. This lists only messages sent through POST /whatsapp/send.

Query Parameters​

ParameterTypeDefaultDescription
limitnumber20Items per page (min: 1, max: 100)
afterstring—Cursor — return items after this id (exclusive).
beforestring—Cursor — return items before this id (exclusive).

Results are returned newest first. See Pagination for cursor details.

Response​

{
"object": "list",
"has_more": false,
"data": [
{
"id": "01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a",
"to": "+966512345678",
"template_name": "order_shipped",
"language": "ar",
"category": "UTILITY",
"status": "delivered",
"failure_reason": null,
"sent_at": "2026-03-08T12:00:03.000Z",
"created_at": "2026-03-08T12:00:00.000Z"
}
]
}

Response Fields​

FieldDescription
idMessage ID
toRecipient in E.164 format
template_nameThe approved template that was sent
languageTemplate language code
categoryMARKETING, UTILITY, or AUTHENTICATION
statusSee Get WhatsApp
failure_reasonWhy the send failed. null unless status is failed.
sent_atWhen the provider accepted the message. null while still queued.
created_atWhen the message was submitted to Arsel
Template parameters are never returned

parameters is deliberately absent from every response. For an authentication template that field holds the one-time code, and an endpoint that reads codes back out would turn a leaked API key into an account-takeover tool.


Examples​

curl "https://api.arsel.sa/v1/whatsapp?limit=50" \
-H "Authorization: Bearer $ARSEL_API_KEY"

Error Responses​

{
"status_code": 401,
"name": "unauthorized",
"message": "Invalid API Key"
}