Messages
More ways to use this page
Read a message
GET/v1/
TypeScript sendora
Python sendora
Key sk_… a server key
The message as the log holds it, its attachments described but not returned, and every event on its timeline. Bodies are never returned.
Parameters
idin pathstring (uuid)requiredThe message id.
Responses
200The message with its attachments described and its timeline.
messageIdstring (uuid)requiredstreamIdstring (uuid)requiredThe stream the message went on.
broadcastIdstring (uuid) or nullrequiredThe broadcast the message belongs to; null for a message sent on its own.
status"accepted" | "injected" | "failed"requiredaccepteduntil handed to the mail server,injectedafter;failedif that never worked.fromstringrequiredsubjectstringrequiredtagstring or nullrequiredmetadatamap of string to stringrequiredsubmittedAtstring (date-time)requiredtestbooleanrequiredTrue when the message went through a test server: its events were simulated and nobody received it.
recipientsarray of objectrequiredaddressstringrequiredkind"to" | "cc" | "bcc"requiredstatus"queued" | "delivered" | "deferred" | "bounced" | "expired"requiredqueued until the receiver answers; deferred while it keeps saying try later.
attachmentsarray of objectrequirednamestringrequiredcontentTypestringrequiredcontentIdstring or nullrequiredsizeintegerrequiredBytes before encoding.
eventsarray of objectrequiredOldest first.
recipientstring or nullrequiredThe recipient the event is about; null when it concerns the message as a whole.
type"Reception" | "Delivery" | "Bounce" | "TransientFailure" | "Expiration" | "AdminBounce" | "OOB" | "Feedback" | "AdminRebind" | "DeferredInjectionRebind" | "Rejection" | "Delayed"requiredReception when the mail server took it, Delivery, TransientFailure, Bounce, OOB for a bounce report received by mail, Feedback for a spam complaint.
atstring (date-time)requiredcodeinteger or nullrequiredThe SMTP status code the receiver answered.
detailsstring or nullrequiredThe receiver’s response text.
classificationstring or nullrequiredHow a bounce was classified, such as InvalidRecipient.
Example (47 lines)
{
"messageId": "5f432ffd-c005-499b-aa3a-5b8a088ea20e",
"streamId": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"broadcastId": null,
"status": "injected",
"from": "no-reply@example.se",
"subject": "Your invoice for September",
"tag": "invoice",
"metadata": {
"invoiceId": "2026-0912"
},
"submittedAt": "2026-09-15T12:00:00.000Z",
"test": false,
"recipients": [
{
"address": "anna@example.com",
"kind": "to",
"status": "delivered"
}
],
"attachments": [
{
"name": "invoice.pdf",
"contentType": "application/pdf",
"contentId": null,
"size": 48213
}
],
"events": [
{
"recipient": "anna@example.com",
"type": "Reception",
"at": "2026-09-15T12:00:00.000Z",
"code": 250,
"details": null,
"classification": null
},
{
"recipient": "anna@example.com",
"type": "Delivery",
"at": "2026-09-15T12:00:02.000Z",
"code": 250,
"details": "2.0.0 OK",
"classification": null
}
]
}Errors
Every error answers error, the code, and message, a sentence for a person. A code that adds fields is shown in full below the table.
| Code | Status | Meaning |
|---|---|---|
unauthorized | 401 | The key is missing, malformed or revoked. |
wrong_ | 403 | The key is of the other kind: a server key (sk_) where an account key (ak_) is needed, or the reverse. The message names the kind the operation takes. |
not_ | 404 | No such message of this server. |