---
title: "Get an email"
method: GET
path: "/v1/emails/{id}"
tags: ["Emails"]
---

# Get an email

`GET /v1/emails/{id}`

## Request

- Base URL: `https://api.mailbeast.ai`
- URL: `https://api.mailbeast.ai/v1/emails/{id}`
- Auth: HTTP bearer

Fetch one email with its body – the only endpoint that returns the body. A `null` body means none was stored; if the stored body can't be read right now the call returns `503` rather than a false empty.

Requires one of the following scopes: `emails:read`, `emails:all`, `all:read`, `all:all`.

## Path parameters

- `id` string, uuid, required

## Response `200`

- EmailDetailApiDto
  - `id` string, required
  - `threadId` string, nullable, required: Conversation this email belongs to. `null` when the email is not part of a conversation. An opaque identifier: pass it back as-is, do not parse or construct it.
  - `messageId` string, nullable, required: RFC 5322 Message-ID as set by the sending server.
  - `mailbox` EmailMailboxDto, required
    - `id` string, required
    - `email` string, required
  - `from` EmailParticipantDto, required
    - `email` string, required
    - `name` string, nullable, required
  - `to` string[], required
  - `cc` string[], required
  - `bcc` string[], required
  - `subject` string, required
  - `snippet` string, nullable, required: Short preview of the message. Always present in list results.
  - `isUnread` boolean, nullable, required: Read state. `null` when the email is not part of a conversation and therefore has no read state, which is not the same as read.
  - `type` 'sent' | 'received', required
  - `campaignId` string, nullable, required
  - `leadId` string, nullable, required
  - `hasAttachments` boolean, required
  - `receivedAt` string, date-time, required
  - `sentAt` string, date-time, nullable, required
  - `body` EmailBodyDto, required
    - `html` string, nullable, required: HTML body. `null` when the message has no HTML part.
    - `text` string, nullable, required: Plain-text body. `null` when the message has no text part.

## Other responses

- `401`: Missing or invalid API key.
- `403`: The key lacks a required scope, or the plan does not include API access.
- `404`: The resource does not exist in your workspace.
- `413`: The message is too large to return its body inline. Its `snippet` is still available from the list, and the message can be opened in the dashboard.
- `429`: Rate limit exceeded - retry after the interval in the Retry-After header.
- `503`: A dependency is temporarily unavailable.

---

[API](https://skmtc.dev/mailbeast/apis/mailbeast-public-api.md) · [All operations](https://skmtc.dev/mailbeast/apis/mailbeast-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mailbeast/apis/mailbeast-public-api/revisions/6440ce0738a4?raw)
