Delivery Status

GET /api/external/delivery-status/:messageId

Auth: Authorization: Bearer ck_<api_key> (required)

Path parameters

FieldRequiredTypeDescription
messageIdYesstringMeta 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.
Meta reference: Webhook status object