cherami.
API referenceReceived messages

Read a received message

GET /v1/messages/{message_id}

Read as Markdown โ†—

GET /v1/messages/{message_id}

Requires a Claim-issued API key: Authorization: Bearer YOUR_CREDENTIAL.

Returns received metadata, raw size and processing completion time. The list-only from and preview are omitted.

Ready content includes original prepared bodies, parsed header values, extracted reply text and attachment metadata. Unfinished and failed detail responses omit content.

Each received attachment has id (string), filename (string or null), size (bytes), mime_type, disposition (string or null), content_id (string or null), and related (boolean). Use its id in the attachment download route.

Reply extraction preserves original bodies and does not change full-body search. It prefers plain text and derives text from HTML-only mail without rendering or fetching resources. It can miss unusual quoting or omit inline answers; read text or html when the full context matters. Explicitly marked forwards are retained rather than treated as quoted replies. Extraction failure does not fail ordinary retrieval.

Processing states

pending and processing mean prepared content is not ready. Check later with bounded backoff. ready supplies content; failed does not. All four states can return detail 200. Raw MIME remains available in unfinished and failed states. Missing stored content can return 503 content_unavailable.

Parameters

ParameterLocationRequiredTypeMeaning
message_idpathYesstringOwned Cherami resource ID returned by the API.

curl example

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

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

Responses

HTTP 200

Successful operation; inspect resource state and outcome fields.

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

Content type: application/json.

ReceivedDetail

{
  "id": "11111111-1111-4111-8111-111111111111",
  "inbox_id": "11111111-1111-4111-8111-111111111111",
  "thread_id": null,
  "envelope_from": "sender@example.com",
  "envelope_to": "my-agent@cherami.to",
  "subject": null,
  "received_at": "2026-10-01T00:00:00.000Z",
  "processing_status": "ready",
  "labels": [],
  "message_id": null,
  "raw_size": 0,
  "processed_at": null,
  "content": {
    "from": null,
    "sender": null,
    "reply_to": [],
    "to": [],
    "cc": [],
    "bcc": [],
    "subject": null,
    "message_id": null,
    "in_reply_to": null,
    "references": null,
    "date": null,
    "reply_text": null,
    "text": null,
    "html": null,
    "attachments": []
  }
}

HTTP 401

unauthorized: Provide a valid bearer credential. Use human-approved recovery if access is lost.

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

Content type: application/json.

Error

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

HTTP 500

internal_error: Operation failed; a write may already have happened. Follow the operation-specific recovery below.

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

Content type: application/json.

Error

HTTP 503

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

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

Content type: application/json.

Error

Schema: ReceivedDetail

Exactly one of these shapes applies.

Alternative 1

FieldRequiredTypeMeaning and constraints
idYesstringCherami resource ID, distinct from the RFC Message-ID. Use the returned value.
inbox_idYesstringCherami resource ID, distinct from the RFC Message-ID. Use the returned value.
thread_idYesstring or null
envelope_fromYesstring
envelope_toYesstring
subjectYesstring or null
received_atYesstringUTC 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$
processing_statusYes"ready"
labelsYesarray of string
message_idYesstring or null
raw_sizeYesintegerminimum: 0
processed_atYesstring or null
contentYesReceivedContent

Alternative 2

FieldRequiredTypeMeaning and constraints
idYesstringCherami resource ID, distinct from the RFC Message-ID. Use the returned value.
inbox_idYesstringCherami resource ID, distinct from the RFC Message-ID. Use the returned value.
thread_idYesstring or null
envelope_fromYesstring
envelope_toYesstring
subjectYesstring or null
received_atYesstringUTC 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$
processing_statusYes"pending" or "processing" or "failed"
labelsYesarray of string
message_idYesstring or null
raw_sizeYesintegerminimum: 0
processed_atYesstring or null

Schema: ReceivedContent

FieldRequiredTypeMeaning and constraints
fromYesParsedAddress or null
senderYesParsedAddress or null
reply_toYesarray of ParsedAddress
toYesarray of ParsedAddress
ccYesarray of ParsedAddress
bccYesarray of ParsedAddress
subjectYesstring or null
message_idYesstring or null
in_reply_toYesstring or null
referencesYesstring or null
dateYesstring or null
reply_textYesstring or null
textYesstring or null
htmlYesstring or null
attachmentsYesarray of ReceivedAttachment

Schema: ParsedAddress

Sender-controlled MIME address or group, not verified identity.

Exactly one of these shapes applies.

Alternative 1

FieldRequiredTypeMeaning and constraints
nameYesstring
addressYesstring

Alternative 2

FieldRequiredTypeMeaning and constraints
nameYesstring
groupYesarray of object

group fields

FieldRequiredTypeMeaning and constraints
nameYesstring
addressYesstring

Schema: ReceivedAttachment

FieldRequiredTypeMeaning and constraints
idYesstring
filenameYesstring or null
sizeYesintegerminimum: 0
mime_typeYesstring
dispositionYesstring or null
content_idYesstring or null
relatedYesboolean

Schema: Error

FieldRequiredTypeMeaning and constraints
errorYesobject

error fields

FieldRequiredTypeMeaning and constraints
codeYesstringProgrammatic error code. Handle unrecognized codes by status and operation-specific recovery.
messageYesstringHuman-readable context, not a stable string to match.

HTTP conventions, errors and pagination ยท Download OpenAPI 3.1

On this page