---
title: "List thread emails"
method: GET
path: "/v1/inboxes/{inbox_id}/threads/{thread_id}/emails"
tags: ["Inboxes"]
---

# List thread emails

`GET /v1/inboxes/{inbox_id}/threads/{thread_id}/emails`

## Request

- Base URL: `https://smtpfa.st/api`
- URL: `https://smtpfa.st/api/v1/inboxes/{inbox_id}/threads/{thread_id}/emails`
- Auth: HTTP bearer

The messages of a thread, received and sent together, oldest first (after walks newer, before walks older). Not in Resend: latest=true returns the newest page instead of the oldest, still oldest first within it, so has_more means older messages exist; page back with before. Received messages carry status and the SPF, DKIM, DMARC, spam and virus verdicts (not in Resend), so an agent can tell a spoofed or flagged message from a clean one. Reading does not mark anything read. Requires the inbound:read scope.

## Path parameters

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

## Query parameters

- `latest` boolean
- `limit` integer
- `after` string
- `before` string

## Response `200`

A page of messages

- object
  - `object` string
  - `has_more` boolean
  - `data` InboxThreadEmail[]
    - `id` string: For a received message, also its id under /v1/emails/receiving
    - `direction` 'inbound' | 'outbound'
    - `from` string
    - `to` string[]
    - `cc` string[]
    - `bcc` string[]
    - `reply_to` string[]
    - `subject` string, nullable
    - `message_id` string, nullable
    - `html` string, nullable
    - `text` string, nullable
    - `attachments` object[]
      - `id` string
      - `filename` string, nullable
      - `size` integer, nullable
      - `content_type` string, nullable
    - `read` boolean
    - `received_at` string, date-time
    - `status` string: delivered or quarantined for a received message, the send status for a sent one. Not in Resend.
    - `verdicts` object, nullable: SES authentication and scan verdicts of a received message (null for sent ones). Not in Resend.
      - `spf` string, nullable
      - `dkim` string, nullable
      - `dmarc` string, nullable
      - `spam` string, nullable
      - `virus` string, nullable
    - `in_reply_to` string, nullable: Not in Resend

## Other responses

- `400`: Bad request - check your payload
- `401`: Invalid or missing API key
- `403`: Forbidden - domain not verified or insufficient permissions
- `404`: Resource not found
- `429`: Rate limit exceeded - retry after the period indicated in the Retry-After header
- `500`: Internal server error

---

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