Skip to main content
Send the same letter to many recipients in one call. A batch takes a stored letter template and a recipient list, renders one letter per recipient, and groups them under a single letter_batch you can track together.
Batches use the same scopes as single letters: creating a batch needs letters:send; reading one needs letters:read.

Create a batch

POST /v1/letters/batches takes a templateId and a recipients array — one entry per letter, up to 1,000. Each recipient is a postal to address plus the optional templateData that fills the template’s placeholders for that one letter. Every other option is set once and applies to every letter in the batch.

Request fields

The whole request is validated before anything is created — the template id, the shared options, and every recipient’s address and country. One malformed recipient fails the call with 400 or 422 and no letter is created. Past create, each letter is its own irreversible physical send: the cancellation window applies per letter, not to the batch as a whole.

Track a batch

GET /v1/letters/batches/{id} returns the batch with a live rollup: its member letters counted by status in statusCounts, and completed — the number of letters in a terminal state (delivered, undeliverable, canceled, or failed).
To work with the letters individually, list them with the batchId filter — each member is an ordinary letter you can fetch, track, and cancel one at a time on Send a letter. Each member’s letter.status_changed webhook events also carry the batchId, so a webhook consumer can attribute every update to its batch.
cURL

From an MCP agent

Connect an MCP-compatible agent to the hosted server and batches are available as named tools, gated by the same scopes. Sending is state-changing, so send_letters requires an explicit confirm: true.
MCP
To project a batch’s cost, price one letter with the template’s page count and your delivery class. Each member is priced for its own page count, so when every recipient renders the same number of pages the batch total is the recipient count times the per-letter price.

Next steps

  • API reference — full request and response schemas for batches.