Skip to main content
GET
Get message

Authorizations

x-api-key
string
header
required

Your ps_ API key

Path Parameters

id
string
required

Internal id, correlationId, or externalMessageId (Meta wamid).

Response

Get message

id
string

Internal message id — the id returned by POST /v1/messages/send.

Example:

"msg_01HZX..."

externalMessageId
string | null

Provider message id (on an official number, Meta's wamid). null until the provider accepts the message.

Example:

"wamid.HBg..."

status
enum<string>

Current delivery status.

Available options:
QUEUED,
SENT,
DELIVERED,
READ,
PLAYED,
FAILED,
CANCELED
Example:

"FAILED"

correlationId
string

Correlation identifier of the send.

Example:

"corr_01HZX..."

destinationNumber
string

Destination phone number.

Example:

"5511988887777"

createdAt
string<date-time>

When the message was created (UTC, ISO 8601).

Example:

"2026-06-20T10:00:00.000Z"

sentAt
string<date-time> | null

When the message was sent, or null.

Example:

"2026-06-20T10:00:01.000Z"

deliveredAt
string<date-time> | null

When the message was delivered, or null.

Example:

null

readAt
string<date-time> | null

When the message was read, or null.

Example:

null

errorCode
string | null

Machine-readable failure reason — the same value GET /v1/messages returns for this message. null when there is no error, and always null on DELIVERED, READ, PLAYED and CANCELED. Branch on this, never on errorMessage. The set grows (see Log Error Codes): treat an unknown code as "needs review".

Example:

"META_OUTSIDE_24H_WINDOW"

errorMessage
string | null

Human-readable failure reason, or null. Its wording is not a contract — do not parse it; use errorCode.

Example:

"Re-engagement message: Message failed to send because more than 24 hours have passed since the customer last replied to this number."

template
string

Name of the template the message was sent with. The key is omitted (not null) when the send used no template.

Example:

"boas_vindas"

origin
enum<string> | null

Which rail the message went out on. null means no recognised send request — it does not mean inbound. Outbound messages Pilot Status did not send — APP, LAYER, and CHATWOOT replies from a native WhatsApp Cloud inbox — are listed only by GET /v1/messages and GET /v1/messages/history; this endpoint answers 404 for them.

Available options:
API,
MCP,
CHATWOOT,
CHAT,
DASHBOARD,
SYSTEM,
null
Example:

"API"

metaPricing
object | null

Meta's own billing verdict for this message. null until Meta reports it, and always null on non-Meta numbers.