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

# Get an email

`GET /transactional/emails/{id}`

## Request

- Base URL: `https://api.sendfox.com`
- URL: `https://api.sendfox.com/transactional/emails/{id}`
- Auth: OAuth 2
  - Authorization code: `https://sendfox.com/oauth/authorize`
  - Token URL: `https://sendfox.com/oauth/token`

The message without its bodies, plus its event timeline.

## Path parameters

- `id` string, required

## Response `200`

Successful response

- TransactionalMessage
  - `id` string: Opaque message id (`tm_` and 24 hex characters). Store it as a string; it is random, not sequential.
  - `status` 'queued' | 'sent' | 'delivered' | 'bounced' | 'complained' | 'failed' | 'suppressed'
  - `mode` 'live' | 'test': test for messages to the sandbox test addresses, which never reach a mailbox and are never counted.
  - `from` string
  - `to` string[]
  - `cc` string[]
  - `bcc` string[]
  - `reply_to` string, nullable
  - `subject` string
  - `tag` string, nullable
  - `headers` object: The custom headers the email was sent with; `{}` when there were none.
  - `attachments` object[]: Only on `GET /transactional/emails/{id}`. The files sent with the email (never their content).
    - `filename` string
    - `content_type` string
    - `size` integer: Decoded size in bytes.
  - `idempotency_key` string, nullable
  - `failure` object, nullable
    - `name` string
    - `message` string
  - `accepted_at` string, date-time
  - `sent_at` string, date-time, nullable
  - `delivered_at` string, date-time, nullable
  - `failed_at` string, date-time, nullable
  - `created_at` string, date-time
  - `events` TransactionalEvent[]: Present on GET /transactional/emails/{id} only.
    - `event` 'sent' | 'delivered' | 'delayed' | 'bounced' | 'complained' | 'failed'
    - `occurred_at` string, date-time
    - `reason` string, nullable: The receiving server's response, when there is one.
    - `status` string, nullable: SMTP status code, when there is one (e.g. 5.1.1).

## Other responses

- `401`: missing_api_key or invalid_api_key
- `403`: insufficient_scope (needs transactional:read), feature_not_available, account_restricted
- `404`: not_found

## Changes

- **2026-10-14** `82cbee9ea496`: 1 info
  - added the optional property `attachments` to the response with the `200` status
- **2026-10-13** `066d2e37ee10`: 1 info
  - added the optional property `headers` to the response with the `200` status
- **2026-10-10** `113bf2f04aad`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/sendfox/apis/sendfox-api/changes/transactional/emails/:id/get.md)

---

[API](https://skmtc.dev/sendfox/apis/sendfox-api.md) - [All operations](https://skmtc.dev/sendfox/apis/sendfox-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sendfox/apis/sendfox-api/revisions/e45b66045d53?raw)
