Skip to Content
API ReferenceSend Batch

Send Batch

POST /v1/emails/batch

Queues up to 10,000 emails in one request. All emails are validated and stored first; the request is all-or-nothing — if any email fails validation, nothing is queued. The worker then sends them at the platform’s provider rate, retrying transient failures with exponential backoff. Emails that exhaust all retries are marked failed (dead-lettered).

Track progress with Get Batch, watch the live stats on the dashboard’s Emails page, or subscribe to Webhooks for per-email events.

Request body

FieldTypeRequiredDescription
emailsobject[]Yes1–10,000 email objects, each with the same fields as Send Email.

Every from domain used in the batch must be registered and verified on your account (a batch may mix multiple verified domains).

Example

import { Retransmit } from "retransmit.dev"; const retransmit = new Retransmit(process.env.RETRANSMIT_API_KEY); const { data, error } = await retransmit.batch.send([ { from: "Acme <hello@yourdomain.com>", to: "one@example.com", subject: "Hello", html: "<p>Hi one</p>", }, { from: "Acme <hello@yourdomain.com>", to: "two@example.com", subject: "Hello", html: "<p>Hi two</p>", }, ]);

Response

202 Accepted

{ "id": "bt_xxxxxxxxxxxx", "total": 2, "status": "queued", "created_at": "2026-09-01T12:00:00.000Z" }

Errors

StatusCodeCause
400invalid_jsonBody is not valid JSON.
422validation_errorAn email failed validation. The message includes its index, e.g. emails.42.subject: .... Nothing is queued.
403domain_not_found / domain_not_verifiedA from domain in the batch is missing or unverified. Nothing is queued.
401unauthorizedMissing, malformed, or revoked API key.
Last updated on