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

# Get an email by id

`GET /v1/emails/{id}`

## Request

- Base URL: `https://api.honkio.ca`
- URL: `https://api.honkio.ca/v1/emails/{id}`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Requires `emails:r`.

## Path parameters

- `id` string, required

## Response `200`

The sent email, with its event timeline.

- object: The sent email, with its event timeline.
  - `id` string, required
  - `from` string, required
  - `to` string[], required
  - `subject` string, required
  - `body_purged_at` string, date-time, nullable, required: Set once retention purged the subject and body.
  - `status` 'queued' | 'scheduled' | 'sending' | 'sent' | 'delivered' | 'bounced' | 'complained' | 'rejected' | 'failed' | 'cancelled', required
  - `ses_message_id` string, nullable, required
  - `is_commercial` boolean, required
  - `attachments_count` integer, required
  - `livemode` boolean, required
  - `tags` object[], required
    - `name` string, required
    - `value` string, required
  - `created_at` string, date-time, required
  - `from_name` string, nullable, required
  - `cc` string[], required
  - `bcc` string[], required
  - `html` string, nullable, required
  - `text` string, nullable, required
  - `template` object, nullable, required
    - `id` string, required
    - `version` integer, nullable, required: The published version a live send rendered. Null for a test send, which renders the draft.
  - `attachments` object[], required
    - `filename` string, required
    - `content_type` string, required
    - `content_id` string, nullable, required
    - `size_bytes` integer, required
  - `cost_cents` integer, required: Whole cents this send debited from the balance; often 0 for one sub-cent email.
  - `charge_millicents` integer, required: The exact price the send consumed, in CAD millicents.
  - `attachment_bytes` integer, required: Total attachment bytes the charge was computed on.
  - `scheduled_at` string, date-time, nullable, required
  - `updated_at` string, date-time, required
  - `events` object[], required
    - `type` string, required
    - `occurred_at` string, date-time, required
    - `payload` unknown, required

## Other responses

- `401`: Missing, invalid, revoked or expired API key.
- `402`: The account has no balance, or a LIVE key was used before the first top-up.
- `403`: The API key lacks the permission this operation requires, or the account is suspended or closed.
- `404`: NOT_FOUND (details.resource "email"): no email with that id on this account in the calling key's mode. A test key finds only test sends, a live key only live ones.
- `429`: Rate limit reached: 100 requests per second per account, or a route-specific limit (Retry-After set where one applies).
- `500`: Unexpected server error.

---

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