Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Retrieve an email

GET /emails/{id}

Returns the message with its full delivery timeline, including the receiving server’s own diagnostic text.

{ "id": "1042", "from": "hello@yourdomain.com", "to": ["someone@example.com"], "subject": "Your receipt", "status": "bounced", "created_at": 1735689600, "html": "<p>Thanks.</p>", "events": [ { "kind": "queued", "occurred_at": 1735689600 }, { "kind": "sent", "occurred_at": 1735689601 }, { "kind": "bounced", "bounce_type": "Permanent", "recipient": "someone@example.com", "detail": "550 5.1.1 user unknown", "occurred_at": 1735689640 } ] }

bounce_type is Permanent, Transient or Undetermined, passed through from the receiving infrastructure unchanged.

Status is monotonic. A message never moves backwards, so a late delivery notice for one recipient cannot overwrite a bounce recorded for another.

Content has a retention window; the record does not. html and text are kept for your plan’s retention period — 30 days by default — after which this endpoint still returns the message, its status and its full timeline, with the body omitted. Nothing about how the content is stored is visible to you: it moves out of the hot database within days, and reads are served transparently either way.