Message details and statuses
Retrieve a message's bodies and events, and distinguish submission from delivery.
/v1/messages/outbound/{MessageID}/detailsRequest
Use an email:read key. Replace {MessageID} in the path with the UUID returned by a live send. An invalid UUID, a message from another organization, an expired message, or a test-send ID returns ErrorCode 701, HTTP 422.
Response fields
Details include every message summary field, plus:
| Field | Type | Meaning |
|---|---|---|
TextBody | string | Original plain-text body, or an empty string. |
HtmlBody | string | Original HTML body, or an empty string. |
Attachments | string array | Filenames only. Attachment bytes are not returned. |
MessageEvents | array | Chronological message-wide and recipient events. |
Each event has Recipient, Type, ReceivedAt, and Details. Recipient is an empty string for a message-wide event. Details is { "Summary": "..." } when a detail exists, or {}.
Message statuses
| Internal state | API Status | Meaning |
|---|---|---|
queued | Queued | Accepted and waiting for submission. |
sending | Queued | A worker is submitting it. The console distinguishes Sending. |
sent | Sent | The Prawnwire mail server accepted submission. |
failed | Failed | Submission failed permanently or exhausted retries. |
processed is a list-filter alias for sent, not a separate returned status.
Recipient statuses and events
The console stores a separate status per recipient. The API exposes recipient outcomes through events, not a RecipientStatus field in the summary.
| Recipient state | Event | Meaning |
|---|---|---|
queued | Queued (message-wide) | Waiting to be submitted. |
sent | Sent | Submitted to the sending mail server. |
delivered | Delivered | The receiving mail server accepted delivery. |
deferred | Deferred | A temporary delivery refusal; the mail server may retry. |
bounced | Bounced | Delivery was refused. Read the event detail. |
suppressed | Suppressed | Skipped before submission because the address was suppressed. |
failed | Failed | Sending failed rather than reaching the recipient. |
Sent versus delivered
Accepted means queued by the API. Sent means handed to the Prawnwire mail server. Delivered means the receiving server reported acceptance. None proves inbox placement, opening, or reading.
Delivery events arrive asynchronously from mail-server logs. The watcher reconciles recent submissions for up to three days; no delivery event is not proof of a bounce. Open/click tracking and asynchronous bounce-message (DSN) ingestion are not implemented in this API.
Messages and events are retained for 30 days.