`lumail@2.1.0` · [`lumail.emails`](/docs/sdk/v2/emails)

```typescript
emails.get(id: string): Promise<LumailResult<EmailObject>>
```

One queued or sent transactional email, including `last_event`. List rows omit `html`, `text`, and `tags`.

## Path Parameters

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

## Response Fields

| Field | Type | Description |
| -------------- | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------- |
| `object` | `"email"` or `"list"` | Discriminator. Always `email` on this endpoint. |
| `id` | string | Lumail email id. |
| `message_id` | string or null | Provider message id once accepted. `null` while 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. |
| `bcc` | string[] or null | Blind carbon copies from send, otherwise `null`. |
| `cc` | string[] or null | Carbon copies from send, otherwise `null`. |
| `reply_to` | string[] or null | Reply-To addresses from send, otherwise `null`. |
| `last_event` | `"queued"` / `"sent"` / `"delivered"` / `"opened"` / `"clicked"` / `"bounced"` / `"complained"` / `"failed"` | Latest delivery or tracking event. |
| `scheduled_at` | `null` | Always `null`. Scheduled send is not supported. |
| `tags` | `{ name, value }[]` | Tags from send. Empty array when none. |
| `created_at` | string | ISO 8601 timestamp. |

`data` is the email object. Failures return `{ data: null, error: { name, message, statusCode } }`.


## 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, error } = await lumail.emails.get("eml_abc123def456");
if (error) {
  throw error;
}
console.log(data.last_event);
console.log(data.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",
    },
  },
);
const data = await response.json();
```

### 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
}
```
