# Read a sent message

GET /v1/sent/{message_id}

Source: https://cherami.to/docs/api/sending/get-sent-message



{/* Generated from apps/web/openapi. Edit the contract, not this file. */}

`GET /v1/sent/{message_id}`

Requires a [Claim-issued API key](https://cherami.to/docs/api#authentication): `Authorization: Bearer YOUR_CREDENTIAL`.

`GET /v1/sent/{message_id}` returns `200` with the sent metadata (without the list-only `preview`), top-level `reply_text`, and `submission`. `reply_text` is heuristic extraction, null if unavailable, or an empty string when no new text is detected. The original attributed bodies remain in `submission`.

The sender and recipient names are historical snapshots, not current inbox settings. Older full submissions may retain bare-address strings. Stored attachments contain original base64 bytes; source-derived inline files also include Content-ID relationships.

Missing or other-account IDs return `404`; unavailable content can return `503`. An available sent copy is not evidence of delivery; inspect its status.

## Parameters [#parameters]

| Parameter    | Location | Required | Type   | Meaning                                        |
| ------------ | -------- | -------- | ------ | ---------------------------------------------- |
| `message_id` | path     | Yes      | string | Owned Cherami resource ID returned by the API. |

## curl example [#curl-example]

Replace resource-ID placeholders with returned IDs. Supply `CHERAMI_API_KEY` through your private shell environment.

```sh
curl --silent --show-error --include --request GET \
  "https://cherami.to/v1/sent/MESSAGE_ID" \
  --header "Authorization: Bearer $CHERAMI_API_KEY"
```

## Responses [#responses]

### HTTP 200 [#http-200]

Successful operation; inspect resource state and outcome fields.

* `X-Request-ID`: Support correlation ID, not an idempotency key.

Content type: `application/json`.

[SentDetail](#schema-sentdetail)

```json
{
  "id": "11111111-1111-4111-8111-111111111111",
  "inbox_id": "11111111-1111-4111-8111-111111111111",
  "created_at": "2026-10-01T00:00:00.000Z",
  "recipient_count": 0,
  "status": "unknown",
  "provider_message_id": null,
  "error_code": null,
  "thread_id": null,
  "in_reply_to": null,
  "labels": [],
  "reply_text": null,
  "submission": {
    "from": {
      "address": "my-agent@cherami.to"
    },
    "to": [],
    "cc": [],
    "bcc": [],
    "subject": "Example",
    "text": "Example",
    "attachments": []
  }
}
```

### HTTP 401 [#http-401]

`unauthorized`: Provide a valid bearer credential. Use [human-approved recovery](https://cherami.to/docs/guides/recovery) if access is lost.

* `X-Request-ID`: Support correlation ID, not an idempotency key.
* `WWW-Authenticate`: `"Bearer"`

Content type: `application/json`.

[Error](#schema-error)

### HTTP 404 [#http-404]

`not_found`: Resource is absent or inaccessible to this account. Reply targets must be in the sending inbox.

* `X-Request-ID`: Support correlation ID, not an idempotency key.

Content type: `application/json`.

[Error](#schema-error)

### HTTP 503 [#http-503]

`content_unavailable`: Expected stored content is unavailable. Retry the read later.

`outbound_unavailable`: Outbound operation failed and a send's outcome may be unknown. Recover using the original key and unchanged payload within its window, or inspect sent messages.

* `X-Request-ID`: Support correlation ID, not an idempotency key.

Content type: `application/json`.

[Error](#schema-error)

## Schema: SentDetail [#schema-sentdetail]

| Field                 | Required | Type                                        | Meaning and constraints                                                                                                              |
| --------------------- | -------- | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `id`                  | Yes      | string                                      | Cherami resource ID, distinct from the RFC Message-ID. Use the returned value.                                                       |
| `inbox_id`            | Yes      | string                                      | Cherami resource ID, distinct from the RFC Message-ID. Use the returned value.                                                       |
| `created_at`          | Yes      | string                                      | UTC service instant with milliseconds and Z suffix. `format`: `date-time` `pattern`: `^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$` |
| `recipient_count`     | Yes      | integer                                     | `minimum`: `0`                                                                                                                       |
| `status`              | Yes      | `"accepted"` or `"rejected"` or `"unknown"` |                                                                                                                                      |
| `provider_message_id` | Yes      | string or null                              |                                                                                                                                      |
| `error_code`          | Yes      | string or null                              |                                                                                                                                      |
| `thread_id`           | Yes      | string or null                              |                                                                                                                                      |
| `in_reply_to`         | Yes      | string or null                              |                                                                                                                                      |
| `labels`              | Yes      | array of string                             |                                                                                                                                      |
| `reply_text`          | Yes      | string or null                              |                                                                                                                                      |
| `submission`          | Yes      | [Submission](#schema-submission)            |                                                                                                                                      |

## Schema: Submission [#schema-submission]

Stored attributed submission, not final signed MIME. Historical recipient/address strings remain strings. Forwarded files may be inline.

| Field         | Required | Type                                                  | Meaning and constraints |
| ------------- | -------- | ----------------------------------------------------- | ----------------------- |
| `to`          | Yes      | array of [Mailbox](#schema-mailbox) or string         |                         |
| `cc`          | Yes      | array of [Mailbox](#schema-mailbox) or string         |                         |
| `bcc`         | Yes      | array of [Mailbox](#schema-mailbox) or string         |                         |
| `subject`     | Yes      | string                                                |                         |
| `text`        | Yes      | string                                                |                         |
| `html`        | No       | string                                                |                         |
| `attachments` | Yes      | array of [StoredAttachment](#schema-storedattachment) |                         |
| `from`        | Yes      | [Mailbox](#schema-mailbox) or string                  |                         |
| `headers`     | No       | object                                                |                         |

### `headers` fields [#headers-fields]

| Field         | Required | Type   | Meaning and constraints |
| ------------- | -------- | ------ | ----------------------- |
| `In-Reply-To` | Yes      | string |                         |
| `References`  | Yes      | string |                         |

## Schema: Mailbox [#schema-mailbox]

| Field     | Required | Type   | Meaning and constraints                                                                                                              |
| --------- | -------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| `address` | Yes      | string | Bare ASCII address, at most 254 characters, local part at most 64. No display-name header syntax. `maxLength`: `254`                 |
| `name`    | No       | string | Unicode name, trimmed; blank means unnamed. No control characters. At most 256 UTF-8 bytes after trimming. `x-max-utf8-bytes`: `256` |

Unknown fields are rejected.

## Schema: StoredAttachment [#schema-storedattachment]

| Field         | Required | Type                         | Meaning and constraints                                                                                                                                                           |
| ------------- | -------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filename`    | Yes      | string                       | Nonempty, no control characters, slash or backslash. At most 255 UTF-8 bytes. `minLength`: `1` `x-max-utf8-bytes`: `255`                                                          |
| `type`        | Yes      | string                       | MIME type without parameters. `maxLength`: `127` `pattern`: `^[A-Za-z0-9!#$&^_.+-]+/[A-Za-z0-9!#$&^_.+-]+$`                                                                       |
| `content`     | Yes      | string                       | Padded base64 original bytes, no whitespace; encoded length must be a multiple of four. Empty files are accepted. `contentEncoding`: `base64` `pattern`: `^[A-Za-z0-9+/]*={0,2}$` |
| `disposition` | Yes      | `"attachment"` or `"inline"` |                                                                                                                                                                                   |
| `contentId`   | No       | string                       | Present for source-derived inline files.                                                                                                                                          |

## Schema: Error [#schema-error]

| Field   | Required | Type   | Meaning and constraints |
| ------- | -------- | ------ | ----------------------- |
| `error` | Yes      | object |                         |

### `error` fields [#error-fields]

| Field     | Required | Type   | Meaning and constraints                                                                       |
| --------- | -------- | ------ | --------------------------------------------------------------------------------------------- |
| `code`    | Yes      | string | Programmatic error code. Handle unrecognized codes by status and operation-specific recovery. |
| `message` | Yes      | string | Human-readable context, not a stable string to match.                                         |

[HTTP conventions, errors and pagination](https://cherami.to/docs/api/errors) · [Download OpenAPI 3.1](https://cherami.to/openapi.json)
