---
title: "Read one conversation, oldest message first"
method: GET
path: "/api/emails/{address}/threads/{id}"
tags: ["Email"]
---

# Read one conversation, oldest message first

`GET /api/emails/{address}/threads/{id}`

## Request

- Base URL: `https://domani.run`
- URL: `https://domani.run/api/emails/{address}/threads/{id}`
- Auth: HTTP bearer

Every message of the thread (trash included, so nothing is missing from the story) with its text, oldest first, plus the participants and the unread count. Auth mail is redacted the way message reads are.

## Path parameters

- `address` string, required
- `id` string, required

## Response `200`

The conversation

- object
  - `id` string, required
  - `subject` string, nullable
  - `participants` string[], required
  - `message_count` integer, required
  - `unread_count` integer, required
  - `first_message_at` string, date-time
  - `last_message_at` string, date-time
  - `messages` object[], required
    - `id` string
    - `thread_id` string
    - `labels` string[]
    - `message_id` string, nullable
    - `direction` 'in' | 'out'
    - `from` string: The sender's display name and address from the From header (e.g. 'Alice <alice@example.com>'), or the bare address when the mail carried no name.
    - `to` string: Every To recipient from the header, with display names, in the order the sender wrote them (not only the envelope address that routed this mail to the mailbox).
    - `cc` string, nullable: Every Cc recipient from the header, with display names, or null when the mail carried no Cc.
    - `bcc` string, nullable: Bcc recipients, present only on your own outbound message (never on one you received, and never delivered as a header).
    - `subject` string, nullable
    - `text` string, nullable
    - `html` string, nullable
    - `in_reply_to` string, nullable
    - `references` string, nullable
    - `folder` string
    - `is_read` boolean
    - `starred` boolean
    - `spam_detected` boolean
    - `label` string, nullable
    - `status` string
    - `created_at` string, date-time

## Other responses

- `401`: Missing or invalid API key
- `404`: Mailbox or thread not found
- `429`: Rate limit exceeded - wait and retry

---

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