---
title: "Get message"
method: GET
path: "/v1/email/messages/{id}"
tags: ["email"]
---

# Get message

`GET /v1/email/messages/{id}`

## Request

- Base URL: `https://agentlair.dev`
- URL: `https://agentlair.dev/v1/email/messages/{id}`
- Auth: HTTP bearer

Retrieve and mark a message as read.
- If E2E encryption is disabled: returns decrypted `body` (string).
- If E2E encryption is enabled: returns `body` (ciphertext, base64url),
  `ephemeral_public_key`, and `e2e_encrypted: true`. Decrypt client-side using
  X25519 ECDH + HKDF-SHA-256 + AES-256-GCM.

## Path parameters

- `id` string, required

## Query parameters

- `address` string, required

## Response `200`

Full message

- EmailMessageFull
  - `message_id` string
  - `from` string
  - `to` string
  - `subject` string
  - `snippet` string: First 120 characters of message body (list view)
  - `received_at` string, date-time
  - `read` boolean
  - `archived` boolean: Whether the message has been archived (default false)
  - `e2e_encrypted` boolean: Present and true when address has E2E key registered
  - `body` string: Decrypted body (plaintext) or base64url ciphertext if e2e_encrypted
  - `ephemeral_public_key` string: Present when e2e_encrypted=true, used for ECDH decryption

## Other responses

- `403`: Forbidden
- `404`: Message not found

---

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