Delivery Status
GET /api/external/delivery-status/:messageId
Auth: Authorization: Bearer ck_<api_key> (required)
Path parameters
| Field | Required | Type | Description |
|---|---|---|---|
messageId | Yes | string | Meta message ID (wamid.…) returned from send-message. URL-encoded values are decoded automatically. |
Response example (success)
{
"success": true,
"data": {
"messageId": "wamid.HBgMOTE5ODc2NTQzMjEwFQIAERgSQjAwMDAwMDAwMDAwMDAwAA==",
"status": "delivered",
"to": "919876543210",
"customerName": "Rahul Sharma",
"messageType": "template",
"content": "Your order ORD-90001 has been confirmed.",
"sentAt": "2026-07-13T07:00:00.000Z",
"deliveredAt": "2026-07-13T07:00:05.000Z",
"readAt": null,
"error": null
}
}status values include sent, delivered, read, and failed. When failed, error contains code and message.
Response example (not found)
{
"success": false,
"status": 404,
"message": "Message not found. The message may not have been saved to the database when it was sent.",
"suggestions": [
"The message was sent but not saved. It may be created when the first status update arrives via webhook.",
"Wait a few seconds and try again - webhook status updates may create the message record."
]
}Code samples
curl -X GET "https://chatyug.com/api/external/delivery-status/wamid.HBgMOTE5ODc2NTQzMjEwFQIAERgSQjAwMDAwMDAwMDAwMDAwAA==" \ -H "Authorization: Bearer ck_your_api_key_here"
const axios = require('axios');
const messageId = 'wamid.HBgMOTE5ODc2NTQzMjEwFQIAERgSQjAwMDAwMDAwMDAwMDAwAA==';
const res = await axios.get(
`https://chatyug.com/api/external/delivery-status/${encodeURIComponent(messageId)}`,
{ headers: { Authorization: 'Bearer ck_your_api_key_here' } }
);import requests
from urllib.parse import quote
message_id = 'wamid.HBgMOTE5ODc2NTQzMjEwFQIAERgSQjAwMDAwMDAwMDAwMDAwAA=='
r = requests.get(
f'https://chatyug.com/api/external/delivery-status/{quote(message_id, safe="")}',
headers={'Authorization': 'Bearer ck_your_api_key_here'}
)$messageId = 'wamid.HBgMOTE5ODc2NTQzMjEwFQIAERgSQjAwMDAwMDAwMDAwMDAwAA==';
$client = new GuzzleHttp\Client();
$client->get('https://chatyug.com/api/external/delivery-status/' . urlencode($messageId), [
'headers' => ['Authorization' => 'Bearer ck_your_api_key_here']
]);
Related webhook: Prefer
eventType: status webhooks for real-time delivery/read/failed updates instead of polling this endpoint.