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

# Get email details

`GET /v1/emails/{id}`

## Request

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

Retrieve the current status and delivery events for a specific email by its ID.

## Path parameters

- `id` string, required

## Response `200`

Email details

- Email
  - `id` string, required
  - `from` string, required: As sent, so it can include a display name: Name <hello@yourapp.com>
  - `to` string[], required
  - `cc` string[], required
  - `bcc` string[], required
  - `subject` string, required
  - `html` string, nullable, required: The stored body. For an API send the {{unsubscribe_url}} placeholder is filled in when the email goes out, so it appears here unreplaced; broadcast and form emails are stored with the real link. Null when there was no HTML body or the retention window removed it.
  - `text` string, nullable, required: The stored plain-text body, null when there was none or the retention window removed it.
  - `created_at` string, date-time, required
  - `last_event` string, required: The type of the newest event, or the status when the email has no events yet. Resend-compatible.
  - `body_cleared_at` string, date-time, nullable, required: When the retention window removed html and text. Null while the body is kept, so null html and text with a timestamp here means the content is no longer stored.
  - `source` string, required: api, smtp, dashboard, broadcast or broadcast_test
  - `category` 'transactional' | 'marketing', required: Decides which suppressions apply and whether the List-Unsubscribe header went out. marketing unless the email was labelled transactional; broadcasts, signup form emails and emails sent before categories existed are marketing.
  - `status` 'queued' | 'scheduled' | 'sending' | 'sent' | 'delivered' | 'opened' | 'clicked' | 'bounced' | 'complained' | 'failed' | 'canceled', required
  - `reply_to` string, nullable, required: The Reply-To address the email was sent with, or null.
  - `tags` object[], required: The tags given at send time, as name/value pairs. Empty when none were given.
    - `name` string, required
    - `value` string, required
  - `message_id` string, nullable, required: The RFC 5322 Message-ID on your sending domain, the one a recipient's server and bounce reports quote. Null until the email is sent.
  - `ses_message_id` string, nullable, required: The Amazon SES message id. Kept for older integrations; correlate with message_id.
  - `sent_at` string, date-time, nullable, required
  - `delivered_at` string, date-time, nullable, required
  - `opened_at` string, date-time, nullable, required
  - `clicked_at` string, date-time, nullable, required
  - `bounced_at` string, date-time, nullable, required
  - `unsubscribed_at` string, date-time, nullable, required: When the recipient unsubscribed through this email. status keeps its delivery value.
  - `error_message` string, nullable, required
  - `events` object[], required: Every event of the email, oldest first.
    - `type` string, required: queued, scheduled, sending, retrying, sent, delivered, delivery_delayed, bounced, complained, opened, clicked, failed, suppressed or unsubscribed
    - `metadata` object, nullable, required: Event details such as the bounce type or the clicked URL
    - `timestamp` string, date-time, required

## Other responses

- `401`: Invalid or missing API key
- `404`: Resource not found
- `429`: Rate limit exceeded - retry after the period indicated in the Retry-After header
- `500`: Internal server error

---

[API](https://skmtc.dev/smtpfa/apis/smtpfast-api.md) · [All operations](https://skmtc.dev/smtpfa/apis/smtpfast-api/llms.txt) · [OpenAPI document](https://skmtc.dev/smtpfa/apis/smtpfast-api/revisions/79dda742f53e?raw)
