# Get email by ID

> Fetch one email in full: bodies, attachments, and verdicts.

`GET https://inboundr.net/api/v1/emails/{id}`

Returns a single email in full — text and HTML bodies, attachment metadata, and
SPF/DKIM/spam verdicts. See [Emails & threads](/concepts/emails-and-threads).

<ParamField path="id" type="string" required>
  The email id (`em_…`).
</ParamField>

<ResponseExample>
```json 200
{
  "id": "em_abc123",
  "direction": "inbound",
  "threadId": "thr_xyz789",
  "messageId": "<CAEabc...@mail.gmail.com>",
  "inReplyTo": null,
  "fromAddress": "customer@example.com",
  "toAddresses": ["support@yourdomain.com"],
  "ccAddresses": [],
  "subject": "Can you help?",
  "textBody": "Hi there…",
  "htmlBody": "<p>Hi there…</p>",
  "attachments": [
    { "filename": "invoice.pdf", "contentType": "application/pdf", "size": 48210, "stored": true }
  ],
  "spamVerdict": "PASS",
  "spfVerdict": "PASS",
  "dkimVerdict": "PASS",
  "receivedAt": "2026-07-20T10:30:00.000Z"
}
```
</ResponseExample>

<ResponseField name="attachments[].stored" type="boolean">
  Whether the attachment can be [downloaded](/api-reference/attachments/download).
</ResponseField>

<Note>Returns `404` if the email doesn't exist or isn't yours.</Note>
