---
title: "Send emails to a batch of recipients (max 1000)"
method: POST
path: "/v2/email/batch"
tags: ["email-send-v2"]
---

# Send emails to a batch of recipients (max 1000)

`POST /v2/email/batch`

## Request

- Base URL: `https://api.tracklysms.com/api`
- URL: `https://api.tracklysms.com/api/v2/email/batch`
- Auth: API key in header `X-Api-Key`

Supports per-recipient substitutions in subject, html, and text
using {{variable}} placeholders.

## Request body

- EmailBatchRequest
  - `from` EmailFrom, required
    - `email` string, required: Sender email address
    - `name` string: Sender display name
  - `headers` object: Custom email headers
  - `html` string: HTML body with {{substitution}} placeholders
  - `idempotency_key` string: Idempotency key
  - `metadata` object: Shared metadata
  - `recipients` EmailBatchRecipient[], required: Recipients (max 1000)
    - `substitutions` object: Per-recipient template substitutions
    - `to` string, required: Recipient email address
  - `reply_to` string: Reply-To address
  - `send_at` string, date-time: Scheduled send time
  - `subject` string, required: Email subject line
  - `text` string: Plain text body
  - `tracking` EmailTracking
    - `clicks` boolean: Track link clicks
    - `opens` boolean: Track opens

## Response `202`

Batch accepted

- EmailBatchResponse
  - `errorCount` integer: Number of messages that failed
  - `errors` object[]: Array of error details
  - `queuedCount` integer: Number of messages queued

## Other responses

- `400`: Validation error
- `401`: Authentication error
- `413`: Too many recipients
- `429`: Rate limit exceeded

---

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