---
title: "Get mailbox inbox thread"
method: GET
path: "/mailboxes/{id}/inbox/threads/{thread_id}"
tags: ["Mailboxes"]
---

# Get mailbox inbox thread

`GET /mailboxes/{id}/inbox/threads/{thread_id}`

## Request

- Base URL: `https://shipmail.to/api/v1`
- URL: `https://shipmail.to/api/v1/mailboxes/{id}/inbox/threads/{thread_id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://shipmail.to/api/auth/oauth2/authorize`, token URL `https://shipmail.to/api/auth/oauth2/token`)

Fetch full inbound JMAP thread messages for a mailbox, including body parts and attachment metadata. The response carries the conversation's current version: pass it as expected_version when creating a reply draft.

## Headers

- `X-Shipmail-Organization` string

## Response `200`

Mailbox inbox thread.

- InboxThread
  - `object` 'inbox_thread', required
  - `mailbox_id` string, required
  - `address` string, email, required
  - `thread_id` string, required: Deprecated and not stable: a legacy thread ID that changes when the mail server re-threads its IDs or a relayed send's placeholder key is replaced. It remains supported in thread paths; store conversation_id instead.
  - `conversation_id` string, nullable, required: Stable Shipmail conversation identifier (thd_...). Store this: it survives thread merges and mail-server re-threading, which thread_id does not.
  - `version` integer, nullable, required: Current conversation version. Pass it as expected_version when creating a reply draft. Null when the thread has no conversation.
  - `data` InboxFullMessage[], required
    - `object` 'inbox_message_full', required
    - `id` string, required
    - `thread_id` string, required: Deprecated and not stable: a legacy thread ID that changes when the mail server re-threads its IDs or a relayed send's placeholder key is replaced. It remains supported in thread paths; store conversation_id instead.
    - `conversation_id` string, nullable, required: Stable Shipmail conversation identifier (thd_...). Store this: it survives thread merges and mail-server re-threading, which thread_id does not.
    - `mailbox_id` string, required
    - `address` string, email, required
    - `folder_ids` string[], required
    - `keywords` object, required
    - `from` InboxEmailHeader[], nullable, required
      - `name` string, nullable, required
      - `email` string, nullable, required
    - `to` InboxEmailHeader[], nullable, required
      - `name` string, nullable, required
      - `email` string, nullable, required
    - `subject` string, nullable, required
    - `received_at` string, date-time, required
    - `preview` string, required
    - `has_attachment` boolean, required
    - `size` integer, required
    - `cc` InboxEmailHeader[], nullable, required
      - `name` string, nullable, required
      - `email` string, nullable, required
    - `reply_to` InboxEmailHeader[], nullable, required
      - `name` string, nullable, required
      - `email` string, nullable, required
    - `message_id` string[], nullable, required
    - `in_reply_to` string[], nullable, required
    - `references` string[], nullable, required
    - `body_values` object, required
    - `text_body` InboxBodyPart[], required
      - `part_id` string, required
      - `type` string, required
    - `html_body` InboxBodyPart[], required
      - `part_id` string, required
      - `type` string, required
    - `attachments` InboxAttachment[], required
      - `part_id` string, required
      - `blob_id` string, required
      - `name` string, nullable, required
      - `content_type` string, required
      - `size` integer, required
      - `download_path` string, required: Path relative to the API base URL for downloading this attachment.
    - `authentication_results` EmailAuthenticationResults, required
      - `spf` 'pass' | 'fail' | 'softfail' | 'neutral' | 'none' | 'temperror' | 'permerror' | 'policy' | 'unknown', required: Normalized email authentication verdict. pass means the check succeeded; fail or softfail means it did not; neutral, none, and policy mean no positive authentication result; temperror and permerror are evaluation errors; unknown means no recognized verdict was available.
      - `dkim` 'pass' | 'fail' | 'softfail' | 'neutral' | 'none' | 'temperror' | 'permerror' | 'policy' | 'unknown', required: Normalized email authentication verdict. pass means the check succeeded; fail or softfail means it did not; neutral, none, and policy mean no positive authentication result; temperror and permerror are evaluation errors; unknown means no recognized verdict was available.
      - `dmarc` 'pass' | 'fail' | 'softfail' | 'neutral' | 'none' | 'temperror' | 'permerror' | 'policy' | 'unknown', required: Normalized email authentication verdict. pass means the check succeeded; fail or softfail means it did not; neutral, none, and policy mean no positive authentication result; temperror and permerror are evaluation errors; unknown means no recognized verdict was available.
      - `spam` object, required
        - `isSpam` boolean, nullable, required
        - `scoreMilli` integer, nullable, required: Spam score multiplied by 1000, or null when unavailable.
      - `raw` object, required
        - `authenticationResults` string, nullable, required
        - `receivedSpf` string, nullable, required
        - `spamStatus` string, nullable, required
    - `reply_text` string, nullable, required: What the sender newly wrote, computed from the text body (or the HTML body when there is no text part). Quoted history, the attribution line before it, signatures after `-- ` and mobile footers such as "Sent from my iPhone" are removed. Inline replies between quoted lines are kept. Null when nothing is left; read `body_values` then. At most 20,000 characters.

## Other responses

- `401`: Authentication failed.
- `403`: Insufficient permissions.
- `404`: Resource not found.
- `422`: Validation failed.
- `429`: Rate limit exceeded.

---

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