Submit batches of up to 500 messages in one request. Stream status via webhooks and query individual message results through the same REST API.
Submit a batch and get back a batch ID. Poll or subscribe via webhook for per-recipient delivery status — every message is tracked individually even inside a bulk send.
[
{
"from": "news@yourapp.com",
"to": "alice@example.com",
"subject": "Your July digest, Alice",
"template_alias": "monthly-digest",
"template_model": { "name": "Alice", "posts": 12 }
},
{
"from": "news@yourapp.com",
"to": "bob@example.com",
"subject": "Your July digest, Bob",
"template_alias": "monthly-digest",
"template_model": { "name": "Bob", "posts": 7 }
}
]
Infrastructure that scales to your peak send volume without pre-warming or capacity planning on your end.
We throttle outbound to match ISP rate limits, protecting your sender score on large sends.
Submit a batch now, specify a future send_at timestamp, and it fires exactly when you need it.
Query the status of any individual message inside a batch via GET /messages/:id.
Don't poll — subscribe to webhooks and receive a notification for every delivery event across the batch.
Suppressed addresses are silently skipped before the batch is queued — no bounces, no wasted sends.
Bulk sends go on a dedicated broadcast IP pool so they can never affect your transactional deliverability.
500
Messages per batch call
10M+
Emails sent per day on our platform
2
Separate IP streams (transactional + bulk)
Upgrade to a plan with Bulk API access and start batching millions of personalised emails today.
No credit card required · Cancel anytime