Send batch emails

Send up to 100 different emails in a single request.

POSThttps://api.cresca.xyz/api/v1/emails/batch

The body is a JSON array of up to 100 emails. Each item takes the same fields as Send email, except attachments and scheduled_at, which are not supported in batches. Works with sending-access and full-access keys.

A batch is all or nothing: if any email is invalid, the request fails and no email is sent. The error message names the failing email, for example Email 3: Invalid `to` ... (zero-based index).

Example

Request
curl -X POST 'https://api.cresca.xyz/api/v1/emails/batch' \
  -H 'Authorization: Bearer cr_live_xxxxxxxxx' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: weekly-digest/2026-10-19' \
  -d '[
  {
    "from": "Acme <hello@acme.com>",
    "to": "ana@example.com",
    "subject": "Your weekly summary",
    "html": "<p>Hi Ana, here is your summary.</p>"
  },
  {
    "from": "Acme <hello@acme.com>",
    "to": "ben@example.com",
    "subject": "Your weekly summary",
    "html": "<p>Hi Ben, here is your summary.</p>"
  }
]'
Response 200
{
  "data": [
    {
      "id": "b6d1f2a0-5e2f-4c8e-9a51-0c8b5f1d2e33"
    },
    {
      "id": "0f7e3c11-9b2a-4f6d-8e44-7a1c2d3e4f55"
    }
  ]
}

Ids are returned in the same order as the emails in the request. One Idempotency-Key covers the whole batch.