Returns one email in your organization. Use the `id` from [Send Email](/docs/api-reference/v2/emails-send) or [List Emails](/docs/api-reference/v2/emails-list). Permission: `emails`.

Call this after send when you need the body, tags, or the current `last_event`. List does not return `html`, `text`, or `tags`.

## Path Parameters

| Name | Type | Description |
| ---- | ---- | ----------- |
| `id` | string | **Required.** Email id (`eml_...`). |

## Response Fields

| Field | Type | Description |
| ----- | ---- | ----------- |
| `object` | `"email"` | Discriminator. Always `email` on this endpoint. |
| `id` | string | Lumail email id. |
| `message_id` | string or null | Provider message id (SES) once accepted. `null` while still queued. |
| `from` | string | Envelope From, including display name when you sent one. |
| `to` | string[] | Recipients. v2 send accepts one address. |
| `subject` | string | Subject line. |
| `html` | string or null | Rendered HTML body. |
| `text` | string or null | Plain-text body. Generated from HTML on send when you omit `text`. |
| `cc` | string[] or null | Carbon copies from send, otherwise `null`. |
| `bcc` | string[] or null | Blind carbon copies from send, otherwise `null`. |
| `reply_to` | string[] or null | Reply-To addresses from send, otherwise `null`. |
| `scheduled_at` | null | Always `null`. Scheduled send is not supported on v2 transactional emails. |
| `tags` | `{ name, value }[]` | Tags from send. Empty array when none. |
| `created_at` | string | ISO 8601 timestamp. |
| `last_event` | string | Latest delivery or tracking event. See below. |

## Last event

`last_event` is derived, not stored as a separate field. Tracking wins over delivery:

1. `clicked` if the recipient clicked a link
2. `opened` if the recipient opened the email
3. otherwise the delivery status

| Value | Meaning |
| ----- | ------- |
| `queued` | Accepted by Lumail, not yet handed to SES (`PENDING`) |
| `sent` | Handed to SES (`SENT`), or delivery status is still `null` |
| `delivered` | SES reported delivery |
| `opened` | At least one unique open |
| `clicked` | At least one unique click |
| `bounced` | SES bounce |
| `complained` | Spam complaint |
| `failed` | Send failed |

## Body content

`html` and `text` are the stored rendered bodies. `tiptap` is send-only: if you queued TipTap JSON, this response still returns HTML, never the TipTap document.

Campaign emails and test sends are retrievable by id. [List Emails](/docs/api-reference/v2/emails-list) only returns transactional API rows (`campaignId` null, `isTest` false).

## Errors

Email routes use `{ name, message, statusCode }`.

| Status | `name` | When |
| ------ | ------ | ---- |
| 401 | `missing_api_key` | Missing or invalid `Authorization: Bearer lum_...` |
| 403 | `validation_error` | Token lacks the `emails` permission |
| 404 | `not_found` | Unknown id, or the email belongs to another organization |

## Related

- [Send Email](/docs/api-reference/v2/emails-send)
- [List Emails](/docs/api-reference/v2/emails-list)
- [SDK: lumail.emails.get](/docs/sdk/v2/emails-get)


## API Reference
**Method:** GET
**Endpoint:** /api/v2/emails/{id}

### SDK
```ts
import { Lumail } from "lumail";

const lumail = new Lumail({ apiKey: process.env.LUMAIL_API_KEY });
const { data: email, error } = await lumail.emails.get(
  "eml_abc123def456",
);
if (error) {
  throw error;
}

console.log(email.last_event);
console.log(email.html);
```

### cURL
```bash
curl https://lumail.io/api/v2/emails/eml_abc123def456 \
  -H "Authorization: Bearer YOUR_API_TOKEN"
```

### JavaScript
```javascript
const response = await fetch(
  "https://lumail.io/api/v2/emails/eml_abc123def456",
  {
    headers: {
      Authorization: "Bearer YOUR_API_TOKEN",
    },
  },
);

if (!response.ok) {
  const error = await response.json();
  throw new Error(`${error.name}: ${error.message}`);
}

const email = await response.json();
console.log(email.last_event);
```

### Success Response
```json
{
  "object": "email",
  "id": "eml_abc123def456",
  "message_id": "0100018f3c2a1b2c-d4e5f6a7-89ab-cdef-0123-456789abcdef-000000",
  "to": ["user@example.com"],
  "from": "hello@yourdomain.com",
  "created_at": "2026-09-05T10:30:00.000Z",
  "subject": "Welcome",
  "html": "<p>Hello</p>",
  "text": "Hello",
  "last_event": "delivered",
  "tags": []
}
```

### Error Response
```json
{
  "name": "not_found",
  "message": "Email not found",
  "statusCode": 404
}
```
