---
title: "Get one exact mailbox inbox message"
method: GET
path: "/mailboxes/{id}/inbox/messages/{message_id}"
tags: ["Mailboxes"]
---

# Get one exact mailbox inbox message

`GET /mailboxes/{id}/inbox/messages/{message_id}`

## Request

- Base URL: `https://shipmail.to/api/v1`
- URL: `https://shipmail.to/api/v1/mailboxes/{id}/inbox/messages/{message_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`)

## Headers

- `X-Shipmail-Organization` string

## Response `200`

Exact full inbox message.

- InboxFullMessage
  - `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)
