---
title: "Send up to 100 emails"
method: POST
path: "/emails/batch"
tags: ["Emails"]
---

# Send up to 100 emails

`POST /emails/batch`

## Request

- Base URL: `https://api.eusend.dev`
- URL: `https://api.eusend.dev/emails/batch`
- Auth: HTTP bearer

The body is a top-level array of email objects. Each item is accepted or refused independently — a failed item never fails the batch, and the response maps positionally to the request. Attachments and `scheduled_at` are not supported here; send those individually.

## Request body

- SendEmailRequest[]
  - `from` string, required: Sender address, bare (`hello@acme.com`) or with a display name (`Acme <hello@acme.com>`). The domain must be verified on your account.
  - `to` union, required: A single address, or a list of them. Accepts `Name <user@example.com>` form.
    - string, email
    - string[]
  - `cc` union: A single address, or a list of them. Accepts `Name <user@example.com>` form.
    - string, email
    - string[]
  - `bcc` union: A single address, or a list of them. Accepts `Name <user@example.com>` form.
    - string, email
    - string[]
  - `reply_to` union: A single address, or a list of them. Accepts `Name <user@example.com>` form.
    - string, email
    - string[]
  - `subject` string: Line breaks are rejected.
  - `html` string
  - `text` string
  - `template_id` string, uuid: Render a stored template instead of inline `html`/`text`.
  - `variables` object: Values substituted into the template or into `{{placeholders}}` in the body.
  - `headers` object: Extra MIME headers. Line breaks in names or values are rejected.
  - `tags` union: Labels for log filtering and webhook routing. Accepts a flat object or Resend’s `[{ name, value }]` array; responses always use the object form. Up to 10 tags; names and values are ASCII letters, digits, underscores and dashes.
    - object
    - object[]
      - `name` string, required
      - `value` string, required
  - `track_opens` boolean: Overrides the organization default.
  - `track_clicks` boolean: Overrides the organization default.
  - `attachments` Attachment[]
    - `filename` string, required: Name the recipient sees.
    - `content` string, byte: Base64-encoded file bytes.
    - `path` string, uri: Public URL the server fetches at send time.
    - `content_type` string: MIME type; inferred from the filename when omitted.
    - `content_id` string: Content-ID for an inline attachment, referenced from HTML as `cid:<content_id>`.
  - `scheduled_at` string: Send in the future, at most 30 days out. An ISO 8601 timestamp or natural language (`in 1 hour`, `tomorrow at 9am`). Relative phrasings resolve against the server clock in UTC.

## Response `200`

Per-item outcomes.

- BatchSendResponse
  - `data` BatchItemResult[], required
    - union: Per-item outcome, positionally mapped to the request array. Branch on the presence of `id`: a failed item never fails the whole batch.
      - object
        - `id` string, uuid, required
      - object
        - `error` string, required
        - `code` 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'VALIDATION_ERROR' | 'RATE_LIMITED' | 'MONTHLY_LIMIT_EXCEEDED' | 'DAILY_LIMIT_EXCEEDED' | 'PLAN_LIMIT_EXCEEDED' | 'ALL_SUPPRESSED' | 'RECIPIENT_DOMAIN_UNDELIVERABLE' | 'DOMAIN_NOT_VERIFIED' | 'SENDING_SUSPENDED' | 'ACCOUNT_RESTRICTED' | 'WORKSPACE_INACTIVE' | 'SENDER_NOT_PERMITTED' | 'SERVICE_PAUSED' | 'LIST_SEND_HELD' | 'BROADCAST_HELD' | 'ATTACHMENT_STORAGE_ERROR' | 'INTERNAL_ERROR' | 'CONFLICT' | 'BAD_REQUEST' | 'PAYLOAD_TOO_LARGE', required

## Other responses

- `400`: The request body or query failed validation (`VALIDATION_ERROR`).
- `401`: Missing, malformed, or revoked API key (`UNAUTHORIZED`).
- `403`: The key exists but may not reach this resource — a `sending_access` key outside the send paths, a test-mode key writing live state, or an account on hold (`FORBIDDEN`, `ACCOUNT_RESTRICTED`).
- `429`: Rate limit exceeded (`RATE_LIMITED`).
- `500`: Unexpected server error (`INTERNAL_ERROR`). Carries `request_id`.

---

[API](https://skmtc.dev/eusend/apis/eusend-api.md) · [All operations](https://skmtc.dev/eusend/apis/eusend-api/llms.txt) · [OpenAPI document](https://skmtc.dev/eusend/apis/eusend-api/revisions/bec561f55488?raw)
