Get a single message
Returns the full structured message — parsed sender/recipients, `text`/ `html` bodies, the reply-history-stripped `extracted_*`, `headers`, threading headers, and the attachment list. A `spam`-labeled message requires the key's `label_spam_read` permission. Unknown/cross-tenant inbox or message ids return an indistinguishable `404`.
Returns the full structured message — parsed sender/recipients, text/
html bodies, the reply-history-stripped extracted_*, headers,
threading headers, and the attachment list. A spam-labeled message
requires the key's label_spam_read permission. Unknown/cross-tenant
inbox or message ids return an indistinguishable 404.
The per-tenant API key. Sent as the x-api-key request header. The key
is tenant-scoped.
In: header
Path Parameters
The inbox's opaque id (e.g. inb_…).
The message id.
Response Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/inboxes/string/messages/string"{ "id": "string", "thread_id": "string", "inbox_id": "string", "labels": [ "string" ], "from": "string", "to": [ "string" ], "cc": [ "string" ], "bcc": [ "string" ], "reply_to": [ "string" ], "subject": "string", "text": "string", "html": "string", "extracted_text": "string", "extracted_html": "string", "preview": "string", "headers": {}, "in_reply_to": "string", "references": [ "string" ], "size": 0, "timestamp": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "attachments": [ { "id": "string", "filename": "string", "content_type": "string", "size": 0, "content_disposition": "string", "content_id": "string" } ]}{ "name": "string", "message": "string"}{ "name": "string", "message": "string"}{ "name": "string", "message": "string"}Get an attachment download URL GET
Returns the attachment's metadata plus a short-lived presigned `download_url` — the client fetches the bytes from that URL. The URL expires (`expires_at`); re-call this endpoint to mint a fresh one. Unknown/cross-tenant ids return an indistinguishable `404`.
Cumulative usage time-series GET
Return usage as a **cumulative time-series**: for each requested `usage_types` dimension, a list of `{ timestamp, value }` points where `value` is the **running total** at that bucket boundary. Counts (`inbox_count`, `message_count`, `thread_count`) accumulate over the window; `storage_bytes` reports the current live counter at each point. The window is `start`–`end` (ISO-8601, at most 90 days apart), bucketed by `period` seconds. The number of buckets — `(end − start) ÷ period` — may not exceed 500; use a larger `period` for a longer window. `limit` takes at most that many buckets from the tail of the window, and `descending` returns the newest bucket first. Requires the key's `metrics_read` permission; a key without it gets `403`.