DocumentationBatch send
Batch send
POST /emails/batch — up to 100 recipients with per-recipient variables.
Send the same template to multiple recipients in one request. Each recipient can have its own merge variables.
POST https://api.mailingcore.com/emails/batch
Authorization: Bearer mc_live_xxxx
X-Tenant-Id: clxxxxxxxx
Content-Type: application/json
Required scope: email:send.
Request body
{
"recipients": [
{ "to": "[email protected]", "vars": { "name": "Alice" } },
{ "to": "[email protected]", "vars": { "name": "Bob" } }
],
"subject": "Hello {{name}}",
"htmlBody": "<p>Hi {{name}}, welcome aboard.</p>",
"fromEmail": "[email protected]",
"templateVersionId": "clxversion..."
}
Fields
| Field | Required | Description |
|---|---|---|
recipients | Yes | Array of { to, vars? } — max 100 per request |
recipients[].to | Yes | Recipient email |
recipients[].vars | No | Key/value map for {{var}} substitution in subject and HTML |
subject | Yes | Subject line (supports {{var}} placeholders) |
htmlBody | Yes* | HTML body (*or use templateVersionId) |
templateVersionId | No | Published template version |
fromEmail, fromName, replyTo | No | Sender fields — domain must be verified |
Response
{
"results": [
{ "to": "[email protected]", "id": "clxlog...", "status": "QUEUED" },
{ "to": "[email protected]", "id": "", "status": "REJECTED", "error": "Email is suppressed" }
],
"accepted": 1,
"rejected": 1
}
| Field | Description |
|---|---|
results | Per-recipient outcome |
accepted | Count of successfully queued/sent |
rejected | Count of suppressed or failed recipients |
Limits
- 100 recipients maximum per batch request. Split larger audiences into multiple calls or use campaigns.
- Each accepted recipient counts against your monthly quota.
See also Send email for single-recipient sends.