Skip to content
ONPADDocs

Docs / API

Look up a message

GET /v1/messages — check the delivery status of a message you sent.

View as Markdown

Returns the current state of a message you sent through the API.

GET https://app.onpad.in/api/v1/messages?id={id}

Parameters

ParameterInRequiredDescription
idqueryYesThe message id returned by POST /messages

Example

curl "https://app.onpad.in/api/v1/messages?id=6f1b9a2c-4d7e-4a31-9f08-2b5c7d1e3a40" \
  -H "Authorization: Bearer wh_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Response

{
  "ok": true,
  "message": {
    "id": "6f1b9a2c-4d7e-4a31-9f08-2b5c7d1e3a40",
    "to": "+919876543210",
    "type": "template",
    "status": "delivered",
    "meta_message_id": "wamid.HBgMOTE5ODc2NTQzMjEwFQIAERgSMUY4...",
    "attempts": 1,
    "error": null,
    "created_at": "2026-10-04T09:21:33+05:30",
    "sent_at": "2026-10-04T09:21:35+05:30",
    "delivered_at": "2026-10-04T09:21:37+05:30",
    "read_at": null
  }
}

Statuses

StatusMeaning
queuedAccepted, waiting for the worker
processingBeing sent to Meta right now
sentMeta accepted it and is delivering
deliveredIt reached the recipient's phone
readThe recipient opened it
failedIt did not go. error says why

read only appears if the recipient has read receipts switched on. Plenty of people do not, so absence of read says nothing about whether the message was seen.

Status codes

CodeMeaning
200Found
401invalid_api_key
404message_not_found — no such id in this workspace
422missing_message_id — the id parameter was not provided

A message belonging to a different workspace returns 404, not 403 — the API does not confirm that an id exists somewhere else.

How to poll

Delivery usually completes within seconds, but a switched-off phone can delay it for hours.

A reasonable approach:

  1. Wait 2 seconds after the 202, then check.
  2. If still queued or processing, check again after 5 seconds, then 15, then 30.
  3. Once sent, the message is with Meta — delivered may follow at any time, or much later.
  4. Stop polling at delivered, read or failed. Those are final as far as the API is concerned.

Do not poll in a tight loop. Nothing changes faster than the worker runs, and every call is logged against your key.

If you need delivery updates pushed to you rather than polled, say so — webhooks are planned and knowing who needs them decides the order they arrive in.

Still stuck?

Ask ONPAD, the assistant inside your workspace, can answer questions about your own data — how a specific campaign performed, why one message failed, what your limits are right now.

Ask ONPAD in your workspaceEmail support@onpad.in