cherami.
API referenceSending and allowance

List sent messages

GET /v1/inboxes/{inbox_id}/sent

Read as Markdown ↗

GET /v1/inboxes/{inbox_id}/sent

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

GET /v1/inboxes/{inbox_id}/sent?limit=20 returns 200 with {"messages":[...],"next_cursor":null}.

Each entry contains sent metadata plus preview, with the same preview contract as received mail. All statuses are listed, newest-submitted first by default. Combine search and filters and choose newest, oldest, or relevance ordering. Limit is 1–100, default 20. Pass next_cursor as a URL-encoded cursor parameter on the same inbox's sent URL. Lists contain bounded previews, not full bodies or attachments. Use labels_all for required tags, optionally combined with labels_any and labels_none; keep the same filters with each cursor. See label filtering.

Parameters

ParameterLocationRequiredTypeMeaning
inbox_idpathYesstringOwned Cherami resource ID returned by the API.
limitqueryNointegerDecimal integer without signs, whitespace or leading zeroes. minimum: 1 maximum: 100 default: 20
cursorqueryNostringOpaque returned cursor. Keep resource URL, filters and ordering unchanged; stop when next_cursor is null.
queryqueryNostringNonempty lexical subject/body search, at most 512 UTF-16 code units and 16 words or closed quoted phrases. Every term must match; no raw FTS operators. Attachments and filenames are excluded.
fromqueryNostringExact case-insensitive bare parsed-header address. At most 320 UTF-16 code units before trimming; not the SMTP envelope.
recipientqueryNostringExact case-insensitive bare parsed-header address. At most 320 UTF-16 code units before trimming; not the SMTP envelope.
subjectqueryNostringCase-insensitive literal substring, nonblank and at most 998 UTF-16 code units before trimming.
afterqueryNostringInclusive lower service receipt/submission bound. Timezone-qualified valid calendar instant; after must precede before. URL-encode normally, including literal plus signs in offsets. pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?(?:Z|[+-]\d{2}:\d{2})$
beforequeryNostringExclusive upper service receipt/submission bound. Timezone-qualified valid calendar instant; after must precede before. URL-encode normally, including literal plus signs in offsets. pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?(?:Z|[+-]\d{2}:\d{2})$
labels_allqueryNoarray of LabelRequire every listed label. Repeat this parameter per label, never comma-separate. Groups combine with AND; contradictory filters match nothing. Omit unused groups; use labels_all even for one label. Normalized set order and duplicates do not change cursor scope. maxItems: 32
labels_anyqueryNoarray of LabelRequire at least one listed label. Repeat this parameter per label, never comma-separate. Groups combine with AND; contradictory filters match nothing. Omit unused groups; use labels_all even for one label. Normalized set order and duplicates do not change cursor scope. maxItems: 32
labels_nonequeryNoarray of LabelExclude any message carrying a listed label; unlabeled messages qualify. Repeat this parameter per label, never comma-separate. Groups combine with AND; contradictory filters match nothing. Omit unused groups; use labels_all even for one label. Normalized set order and duplicates do not change cursor scope. maxItems: 32
orderqueryNo"newest" or "oldest" or "relevance"relevance requires query. Listings are live views, not snapshots. default: newest

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/inboxes/INBOX_ID/sent" \
  --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.

FieldRequiredTypeMeaning and constraints
messagesYesarray of SentSummary
next_cursorYesstring or null
{
  "messages": [],
  "next_cursor": null
}

HTTP 400

invalid_limit: Use an integer from 1 to 100.

invalid_cursor: Use the cursor with its original resource and filters, or restart from the first page. Draft listings instead report invalid_draft.

invalid_search: Correct search terms, filters, timestamps, or ordering. See search.

invalid_labels: Correct label names, changes, filter groups, or discovery prefix.

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

Content type: application/json.

Error

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 503

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: Label

1–128 UTF-8 bytes after trimming. Well-formed Unicode without control characters; case-sensitive.

string. x-max-utf8-bytes: 128

Schema: SentSummary

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.
created_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$
recipient_countYesintegerminimum: 0
statusYes"accepted" or "rejected" or "unknown"
provider_message_idYesstring or null
error_codeYesstring or null
thread_idYesstring or null
in_reply_toYesstring or null
labelsYesarray of string
previewYesPreview or null

Schema: Preview

FieldRequiredTypeMeaning and constraints
textYesstringBeginning of selected text with normalized whitespace; empty is a valid extraction. maxLength: 300
truncatedYesboolean
sourceYes"reply_text" or "text" or "html"

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