Batch sending
Send up to 100 distinct messages — schedule and cancel as a unit.
POST to /api/v1/emails/batch to send many distinct messages in one request. Each entry is its own message with its own recipient, subject, and data. This is not one message to many people — for that, use a campaign.
The body is a JSON array of message objects, or an object { emails: [...], scheduled_at: "<ISO>" } to schedule the batch. Validation is all-or-nothing: if any item is invalid, nothing is queued.
Group, inspect, cancel
Read a live rollup with GET /api/v1/emails/batches/{id}, and stop every still-scheduled message with POST /api/v1/emails/batches/{id}/cancel. In the dashboard, batches appear under Emails → Batches.
# Schedule the whole batch
curl https://www.unitpost.com/api/v1/emails/batch \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"scheduled_at": "2026-07-01T15:00:00Z",
"emails": [
{ "from": "you@yourdomain.com", "to": "a@example.com", "subject": "Hi", "html": "<p>…</p>" },
{ "from": "you@yourdomain.com", "to": "b@example.com", "subject": "Hi", "html": "<p>…</p>" }
]
}'
# Cancel the whole batch before it sends
curl -X POST https://www.unitpost.com/api/v1/emails/batches/$BATCH_ID/cancel \
-H "Authorization: Bearer $API_KEY"Batch limitations
Per-item scheduled_at and attachments are not supported in batch — schedule the batch as a unit, or send individually if you need per-message attachments.