eusend
Emails

Batch Send

Send up to 100 emails in a single request. Each email is independent — failures are per-email.

POST/emails/batch

Request body

An array of up to 100 email objects. Each object has the same schema as POST /emails, except that attachments and scheduled_at are not supported here — send or schedule those individually via POST /emails.

request
curl -X POST https://api.eusend.dev/emails/batch \
  -H "Authorization: Bearer eu_live_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "from": "noreply@acme.com",
      "to": "alice@example.com",
      "subject": "Receipt #1001",
      "html": "<p>Thanks, Alice!</p>"
    },
    {
      "from": "noreply@acme.com",
      "to": "bob@example.com",
      "subject": "Receipt #1002",
      "html": "<p>Thanks, Bob!</p>"
    }
  ]'

Response

One result per input email, in the same order: data[i] describes emails[i]. A queued email carries its id; an email that could not be queued carries error and code instead (for example an unverified sender domain, all recipients suppressed, or an exhausted quota). Failed items never fail the rest of the batch — retry just those.

response — 201 Created
{
  "data": [
    { "id": "9a8b7c6d-5e4f-4a3b-8c1d-0e9f8a7b6c5d" },
    { "error": "All recipients are suppressed", "code": "ALL_SUPPRESSED" }
  ]
}

Batch sends count toward your daily and monthly limits. A batch of 50 emails uses 50 of your quota.