Send bulk
Send a single template to up to 500 recipients across 50
destinations, each with their own variable map. Equivalent to AWS
SendBulkTemplatedEmail.
POST /api/v1/partner/email/send-bulkRequest body
{
"from": "hello@yourcompany.com",
"template_name": "newsletter-june",
"default_template_data": { "campaign": "june-2026" },
"destinations": [
{
"to": ["alex@example.com"],
"replacement_data": { "first_name": "Alex" }
},
{
"to": ["brett@example.com"],
"replacement_data": { "first_name": "Brett" }
}
],
"configuration_set_name": "marketing"
}| Field | Type | Required | Notes |
|---|---|---|---|
from | string | yes | Verified identity |
template_name | string | yes | |
default_template_data | object | no | Variables that apply to every recipient unless overridden |
destinations[] | array | yes | Up to 50 destinations per request |
destinations[].to | string[] | yes | Up to 50 recipients per destination |
destinations[].cc | string[] | no | |
destinations[].bcc | string[] | no | |
destinations[].replacement_data | object | no | Per-destination variable overrides — merged onto default_template_data |
reply_to | string | no | |
configuration_set_name | string | no | |
customer_id | string | no | |
category | string | no | transactional (default) or marketing |
tags | object | no |
Limits
- 50 destinations per request
- 50 recipients per destination
- 500 recipients total per request
For larger lists, paginate into multiple /send-bulk calls.
Response
{
"success": true,
"results": [
{
"destination": 0,
"recipient": "alex@example.com",
"message_id": "550e8400-...",
"status": "queued"
},
{
"destination": 1,
"recipient": "brett@example.com",
"message_id": "660e8400-...",
"status": "queued"
}
]
}results[].destination is the zero-based index into your
destinations[] array — so you can correlate per-recipient outcomes
back to the destination you submitted.
Variable resolution
For each destination:
- Start with
default_template_data - Merge
destinations[i].replacement_dataon top (per-destination overrides win) - Substitute
{{key}}tokens in subject + html_body + text_body
Per-destination 4xx behaviour
If one destination fails (e.g. recipient on suppression list):
- That destination gets
status: rejected+reason - Other destinations continue processing
If a 5xx fires (template-load failure, etc.):
- The entire bulk aborts
failed_atin the response indicates where we stopped- Already-processed destinations stay queued
cURL
curl https://apis.splashifypro.com/api/v1/partner/email/send-bulk \
-H "Authorization: Bearer $SPLASHIFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "hello@yourcompany.com",
"template_name": "newsletter",
"destinations": [
{"to": ["a@example.com"], "replacement_data": {"name": "A"}},
{"to": ["b@example.com"], "replacement_data": {"name": "B"}}
]
}'