Send one personalized message per recipient (up to 50) in a single call. Shared fields form the base message; each recipients[] entry gets its own message to exactly one address, with per-recipient templateData and headers merged over the shared ones. Every message passes the same gates as send() and gets its own id; the response reports each recipient's outcome in order, so a batch can partially succeed. Pass scheduledAt to park the whole batch for later (one cancelable ssnd_… per recipient).
HTTP: POST /v1/send/batch
| Field |
Type |
Required |
Description |
from |
string |
✓ |
An address on a verified domain. Shared by every message in the batch. |
recipients |
array |
✓ |
One entry per message. Order is preserved in the response's results[]. |
subject |
string |
|
Required unless supplied by a template. May contain {{merge_tags}}, filled per recipient. |
html |
string |
|
May contain {{merge_tags}}, filled per recipient. |
text |
string |
|
May contain {{merge_tags}}, filled per recipient. |
templateId |
string |
|
Send using a saved template — a user template (tpl_…) or a base template (base_…). Its… |
templateData |
object |
|
Shared default merge values for every recipient; a recipient's own templateData overrides… |
headers |
object |
|
Shared extra raw MIME headers for every message, applied after threading headers (caller… |
replyTo |
string |
|
|
inReplyTo |
string |
|
Thread every message under this Message-ID. |
attachments |
array |
|
Attached to every message in the batch. Same shape as send()'s attachments. |
scheduledAt |
string,number |
|
Send later: ISO 8601, simple relative natural language ("in 2 hours"), or a ms-epoch. A… |
trackOpens |
boolean |
|
Open-tracking override for every message in the batch (HTML only). Omitted → the… |
trackClicks |
boolean |
|
Click-tracking override for every message in the batch (HTML only): http(s) links are… |
batch-send-response — see the batch-send-response schema.
Object res = mk.sendBatch(Map.of("from", "hello@app.mailkite.dev", "subject", "Your {{plan}} invoice", "html", "<p>Hi {{name}}, your {{plan}} invoice is attached.</p>", "templateData", Map.of("plan", "Pro"), "recipients", List.of(Map.of("to", "Ada Lovelace <ada@example.com>", "templateData", Map.of("name", "Ada")), Map.of("to", "grace@example.com", "templateData", Map.of("name", "Grace", "plan", "Team"), "headers", Map.of("X-Entity-Ref-ID", "inv-1043")))));
← All methods · Docs · mailkite.dev