---
title: "Get a thread and a page of its messages"
method: GET
path: "/email_inboxes/{inbox_id}/threads/{thread_id}"
tags: ["Email Inboxes"]
---

# Get a thread and a page of its messages

`GET /email_inboxes/{inbox_id}/threads/{thread_id}`

Returns a bounded page of inbound and outbound thread messages interleaved in chronological order using stable cursor pagination.

## Path parameters

- `inbox_id` string, uuid, required
- `thread_id` string, uuid, required

## Query parameters

- `page[size]` integer
- `page[after]` string

## Response `200`

Thread summary and chronological messages.

- object
  - `data` InboundThreadDetail, required
    - `id` string, uuid, required
    - `record_type` 'email_thread', required
    - `inbox_id` string, uuid, required
    - `subject` string, nullable, required
    - `preview` string, nullable, required
    - `message_count` integer, required — Total inbound and outbound messages in the thread.
    - `unread_count` integer, required — Unread inbound messages; outbound messages never increment this count.
    - `last_message_id` string, uuid, required
    - `last_message_at` string, date-time, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `labels` string[], required — Mutable thread labels used for agent workflow state. Independent of the labels on the thread's messages, and distinct from the send-time `tags` on outbound messages.
    - `messages` ThreadMessage[], required
      - `id` string, uuid, required
      - `record_type` 'email_message', required
      - `direction` 'inbound' | 'outbound', required
      - `status` string, required — Received for inbound messages; the current send status for outbound messages.
      - `inbox_id` string, uuid, required
      - `thread_id` string, uuid, required
      - `message_id` string, nullable, required — RFC Message-ID header. Null is possible for legacy outbound messages.
      - `in_reply_to` string, nullable, required
      - `references` string[], required — Ordered RFC Message-ID values from the References header.
      - `from` InboundEmailAddress, required
        - `email` string, email, required
        - `name` string
      - `to` InboundEmailAddress[], required
        - `email` string, email, required
        - `name` string
      - `cc` InboundEmailAddress[], required
        - `email` string, email, required
        - `name` string
      - `bcc` InboundEmailAddress[], required
        - `email` string, email, required
        - `name` string
      - `reply_to` InboundEmailAddress[], required
        - `email` string, email, required
        - `name` string
      - `subject` string, nullable, required
      - `text_body_url` string, uri, nullable, required — URL for an offloaded plain-text body. Null means the body is not offloaded to a URL; an inline plain-text body may still exist but is not returned on list reads. `reply_text` and `has_quoted_text` are persisted during ingest before any body offload.
      - `html_body_url` string, uri, nullable, required — URL for an offloaded HTML body. Null means the body is not offloaded to a URL; an inline HTML body may still exist but is not returned on list reads. Reply extraction uses only the plain-text body during ingest.
      - `reply_text` string, nullable, required — Conservatively extracted new-reply content persisted from the plain-text body during ingest. Null means no plain-text extraction input was available or extraction was skipped or failed; HTML bodies are not parsed.
      - `has_quoted_text` boolean, required — Whether conservative plain-text extraction detected a quoted tail. False does not prove that the source contains no quoted content.
      - `headers` object, required
      - `inline_files` object[], required
      - `attachments` object[], required
      - `labels` string[], required — Mutable message labels used for agent workflow state (for example `spam`, `needs_review`, `processed`). Distinct from the immutable send-time `tags` on outbound messages: labels are never propagated to Email Detail Records or Mission Control reporting. Always empty for outbound messages. Labels on a message are independent of the labels on its thread.
      - `read_at` string, date-time, nullable, required — Time the inbound message was marked read. Null means unread.
      - `received_at` string, date-time, nullable, required — Receipt time for inbound messages; null for outbound messages.
      - `sent_at` string, date-time, nullable, required — Creation/send-acceptance time for outbound messages; null for inbound messages.
      - `created_at` string, date-time, required
      - `updated_at` string, date-time, required
  - `meta` EmailPaginationMeta, required
    - `page_size` integer, required
    - `page_cursor` string — Cursor for the next page, when more results are available.

## Other responses

- `401` — Not authorized (10006).
- `404` — Resource not found (10001).
- `422` — Validation Failed (10015) or changeset validation error.
- `503` — Inbound thread storage is temporarily unavailable.

---

[API](https://skmtc.net/team-telnyx/apis/telnyx-api-2.md) · [All operations](https://skmtc.net/team-telnyx/apis/telnyx-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/team-telnyx/telnyx-api-2/versions/8f5f4e537994/schema)
