Docs
API · emails

Retrieve an email

Fetch a single message by id, including its full delivery lifecycle — the ordered list of events from queued through delivery, bounce, open, or click.

GET/v1/emails/{id}

Works for both directions. For outbound messages the events trace the send lifecycle; for inbound messages it reflects receipt. To read the rendered body, use GET /v1/emails/{id}/body.

01 Path parameters

idstringRequired
The message id returned by a send, batch item, reply, or list.

02 Request

curl https://api.drin.run/v1/emails/msg_01HZX9K3T2QF7P0M4N8B6C5D \
  -H "Authorization: Bearer $DRIN_API_KEY"

03 Response

200 OK — the message with its events lifecycle.

200 OK
{
  "id": "msg_01HZX9K3T2QF7P0M4N8B6C5D",
  "from": "onboarding@yourdomain.com",
  "to": ["you@example.com"],
  "subject": "Hello from Drin",
  "status": "delivered",
  "direction": "outbound",
  "createdAt": "2026-06-02T17:04:00Z",
  "events": [
    { "type": "queued",    "at": "2026-06-02T17:04:00Z" },
    { "type": "sent",      "at": "2026-06-02T17:04:01Z" },
    { "type": "delivery",  "at": "2026-06-02T17:04:03Z" }
  ]
}

Fields

idstringOptional
The message identifier.
fromstringOptional
The sender address.
tostring[]Optional
The recipient addresses.
subjectstring | nullOptional
The subject line.
statusstringOptional
The current status — e.g. queued, sent, delivered, bounced, complained.
directionstringOptional
outbound or inbound.
createdAtstringOptional
When the message was created (ISO 8601).
eventsobject[]Optional
The ordered lifecycle — each event has a type and a timestamp; engagement events may carry extra detail.
404not_found if no message with that id exists for this account. Ids are scoped to your account — you can never read another tenant's message.