Skip to main content

GET /v1/messages/{id}

Read one message with its delivery timeline.

Scope: messages:read

curl https://api.msgpanda.com/v1/messages/ea62acf4-2973-4fec-884a-ddab50214a48 \
-H "Authorization: Bearer $API_KEY"
{
"id": "ea62acf4-2973-4fec-884a-ddab50214a48",
"to": "919811100010",
"category": "utility",
"kind": "template",
"status": "sent",
"meta_msg_id": "wamid.HBgM…",
"error": null,
"created_at": "2026-11-04T21:16:13+05:30",
"updated_at": "2026-11-04T21:16:14+05:30",
"events": [
{ "kind": "sent", "at": "2026-11-04T21:16:14+05:30", "detail": { "meta_msg_id": "wamid.HBgM…" } }
]
}

Fields​

FieldNotes
statusCurrent state — see the table on Send a message
meta_msg_idMeta's wamid; null until Meta accepts the message
errorReason for a failed status, otherwise null
eventsAppend-only timeline: queued, sent, delivered, read, failed

Listing messages​

GET /v1/messages

curl "https://api.msgpanda.com/v1/messages?status=failed&limit=50" \
-H "Authorization: Bearer $API_KEY"
QueryDefaultNotes
statusallqueued, sending, sent, delivered, read, failed
limit200Max 500

Returns { "messages": [...] }, newest first, without the events array — fetch a single message for the timeline.

Polling

There is no outbound webhook for delivery events yet. Poll GET /v1/messages/{id} every few seconds after sending, with backoff: most messages move to sent within a second and to delivered within seconds. Stop polling once the status is terminal (delivered, read, failed).