List physical-mail letters
List physical-mail letters (paginated)
Returns the project's letters newest first, limit per page (default 20, max 100), with an opaque pagination.nextCursor to pass back as cursor for the next page. Filter with status (one lifecycle value such as in_transit), country (ISO 3166-1 alpha-2, case-insensitive), and batchId; filters combine. List items carry only the recipient's city and country — fetch a single letter for the full address and its event timeline.
Scope: letters:read. Send the API key as a bearer token; Scopes lists what each one reaches.
Request
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
limit | integer | no | Maximum number of items in the page. (minimum 1, maximum 100, default 25) |
cursor | string | no | The nextCursor of the previous page; omit it for the first page (Pagination). |
status | LetterStatus | no | |
country | string | no | |
batchId | string | no | Filter to the member letters of one batch (the id returned by POST /v1/letters/batches). |
Response
200 Success. Body: application/json, LetterList.
| Field | Type | Required | Description |
|---|---|---|---|
object | "list" | yes | |
data | array of Letter | yes | |
pagination | Pagination | yes |
Errors
Every error has the same body, {"error": {"type", "code", "message", "param"}}; branch on code. Errors lists every code.
| Status | Meaning |
|---|---|
400 | The request is malformed or a value is invalid (invalid_request, invalid_domain, idempotency_key_mismatch). |
401 | The API key is missing or invalid. |
403 | The key lacks the scope this endpoint needs (scope_missing) or may not do this (not_permitted). |
404 | No such resource in this account (resource_not_found). |
422 | The request is well-formed but a field failed validation (validation_failed). |
429 | Rate limit, plan limit, budget or spend cap reached (rate_limited, plan_limit_reached, budget_exceeded, spend_cap_reached). |
500 | An unexpected error; retry with backoff, then contact support (internal_error). |
Get a batch with its live per-status rollup
Returns the letter_batch with a live rollup of its member letters: statusCounts maps each letter status to a count, and completed counts letters in a terminal state (delivered, undeliverable, canceled, or failed).
Create a physical-mail letter
Create (and queue) a physical-mail letter