Get a message
GET
/messaging/v1/messages/{id}Returns a message by its id, with its current status, cost, and the reason if it wasn't delivered.
Path parameters
- The message's id, from the response when you sent it, or from a webhook.Example:
e2c38865-dc0a-4299-baef-c07a9bfa9c33
To follow a message as it changes, use a webhook. Don't poll this endpoint.
Example request
- curl
- Node.js
- Python
- PHP
curl "https://sandbox-api.ponitor.com/messaging/v1/messages/e2c38865-dc0a-4299-baef-c07a9bfa9c33" \
-H "apiKey: $PONITOR_API_KEY"
const response = await fetch('https://sandbox-api.ponitor.com/messaging/v1/messages/e2c38865-dc0a-4299-baef-c07a9bfa9c33', {
headers: { apiKey: process.env.PONITOR_API_KEY },
});
console.log(response.status, await response.json());
import os
import requests
response = requests.get(
"https://sandbox-api.ponitor.com/messaging/v1/messages/e2c38865-dc0a-4299-baef-c07a9bfa9c33",
headers={"apiKey": os.environ["PONITOR_API_KEY"]},
timeout=30,
)
print(response.status_code, response.json())
<?php
$ch = curl_init('https://sandbox-api.ponitor.com/messaging/v1/messages/e2c38865-dc0a-4299-baef-c07a9bfa9c33');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['apiKey: ' . getenv('PONITOR_API_KEY')],
]);
$body = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, ' ', $body, PHP_EOL;
Responses
- 200
- 401
- 404
- 429
OK. The message object, with its current status. A message that wasn't delivered has a failureCode (an E11 code) and a failedReason.
{
"message": {
"id": "e2c38865-dc0a-4299-baef-c07a9bfa9c33",
"content": "Your Acme order 42 is on its way.",
"text": "Your Acme order 42 is on its way.",
"sender": "ACME",
"status": "EXPIRED",
"channel": "SMS",
"direction": "OUTBOUND",
"recipient": "+231770000000",
"messageType": null,
"inServiceWindow": null,
"cost": 0.05,
"conversationId": null,
"failureCode": "E11001",
"failedReason": "Recipient unreachable: phone was off or out of coverage until the message expired",
"externalId": "order-42",
"createdAt": "2026-10-05T09:30:00.112Z",
"updatedAt": "2026-10-06T09:30:04.870Z"
}
}
Unauthorized. The API key is missing (E02001), wrong or revoked (E02002), or sent to the other base URL (E02003). See API keys and base URLs.
Not Found. Your team has no message with this id (E01005).
{
"error": {
"type": "not_found_error",
"code": "E01005",
"name": "NotFound",
"message": "message with id (e2c38865-dc0a-4299-baef-c07a9bfa9c33) not found",
"doc_url": "https://docs.ponitor.com/api/errors#E01005",
"request_id": "7d8e9f0a-1b2c-4d3e-8f4a-5b6c7d8e9f0a"
}
}
Every error has this error object. The body also still carries fields from before codes, which are deprecated. See The error body.
Too Many Requests. Your team went over its rate limit (E01011). Wait, then try again.