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

# Get email details

`GET /emails/{id}`

Retrieve detailed information about a specific email including
delivery status, timestamps, and optionally the email content.

Use the `expand` parameter to include additional data like the
HTML/text body, headers, or delivery attempts.

## Path parameters

- `id` string, required

## Query parameters

- `expand` string

## Response `200`

Email details

- EmailDetails
  - `success` true, required
  - `data` object, required
    - `id` string, required — Unique message identifier (token)
    - `scope` 'outgoing' | 'incoming', required — Message direction
    - `to` string, email, required — Recipient address
    - `from` string, required — Sender address
    - `subject` string, required — Email subject line
    - `messageId` string — SMTP Message-ID header
    - `status` 'pending' | 'sent' | 'softfail' | 'hardfail' | 'bounced' | 'held', required — Current delivery status: - `pending` - Email accepted, waiting to be processed - `sent` - Email transmitted to recipient's mail server - `softfail` - Temporary delivery failure, will retry - `hardfail` - Permanent delivery failure - `bounced` - Email bounced back - `held` - Held for manual review
    - `tag` string — Optional categorization tag
    - `timestamp` number, required — Unix timestamp when the email was sent
    - `timestampIso` string, date-time, required — ISO 8601 formatted timestamp
    - `spam` boolean — Whether the message was flagged as spam
    - `spamScore` number — Spam score (if applicable)
    - `htmlBody` string — HTML body content (included if expand=content)
    - `plainBody` string — Plain text body (included if expand=content)
    - `headers` object — Email headers (included if expand=headers)
    - `deliveries` Delivery[] — Delivery attempt history (included if expand=deliveries)
      - `id` string, required — Delivery attempt ID
      - `status` string, required — Delivery status (lowercase)
      - `details` string — Status details
      - `output` string — SMTP server response from the receiving mail server
      - `code` integer — SMTP response code
      - `sentWithSsl` boolean — Whether TLS was used
      - `timestamp` number, required — Unix timestamp
      - `timestampIso` string, date-time, required — ISO 8601 timestamp
    - `activity` object — Opens and clicks tracking data (included if expand=activity)
      - `opens` object[] — List of email open events
        - `ipAddress` string — IP address of the opener
        - `userAgent` string — User agent of the email client
        - `timestamp` number — Unix timestamp of the open event
        - `timestampIso` string, date-time — ISO 8601 timestamp of the open event
      - `clicks` object[] — List of link click events
        - `url` string, uri — URL that was clicked
        - `ipAddress` string — IP address of the clicker
        - `userAgent` string — User agent of the email client
        - `timestamp` number — Unix timestamp of the click event
        - `timestampIso` string, date-time — ISO 8601 timestamp of the click event
    - `attachments` AttachmentDetails[] — File attachments (included if expand=attachments)
      - `filename` string, required — Original filename of the attachment
      - `contentType` string, required — MIME type of the attachment
      - `size` integer, required — Size of the attachment in bytes
      - `hash` string, required — SHA256 hash of the attachment content for verification
      - `data` string, required — Base64 encoded attachment content. Decode this to get the raw file bytes.
    - `rawMessage` string — Complete raw MIME message, base64 encoded (included if expand=raw). Decode this to get the original RFC 2822 formatted email.
  - `meta` ApiMeta, required
    - `requestId` string, required — Unique request identifier for debugging and support

## Other responses

- `401` — Invalid or missing API key
- `404` — Resource not found
- `500` — Internal server error

## Changes

- **2026-01-30** `65d92724dca2` — 1 info
  - added the required property `data/token` to the response with the `200` status

[Change history](https://skmtc.dev/arkhq-io/apis/ark-email-api/changes/emails/:id/get.md)

---

[API](https://skmtc.dev/arkhq-io/apis/ark-email-api.md) · [All operations](https://skmtc.dev/arkhq-io/apis/ark-email-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/arkhq-io/ark-email-api/revisions/39b91ffd46b6/schema)
