Create a batch of email messages
Creates up to 1,000 email messages in a single request. Request-wide admission checks run first and can reject the whole batch before message creation. After those checks pass, each message is validated and sent independently; item-level failures do not affect other messages, and the processed batch returns 207 Multi-Status. Per-message failures include validation errors; when a template has strict_variables enabled, a missing required variable produces a per-item unprocessable_entity error naming that variable while the other messages continue.
Headers
Optional opaque, unquoted key for safely retrying the same logical request. Keys must contain 1 to 255 letters, numbers, hyphens, or underscores. Generate a unique UUID v4 for each operation and reuse it only when retrying that operation with the same request. Invalid headers—including duplicate, empty, malformed, or overlong values—return 400 with error code 10015. A request already in progress with the same key returns 409; reusing the key with a different request returns 422. Only successful responses are replayed, for up to 24 hours. Do not include sensitive data in the key.
Request body
Response
Multi-Status — returned after request-wide admission checks pass and item processing runs. Each message is validated and sent independently; per-message failures do not affect other messages in the batch. An invalid or non-future scheduled_at/send_at is reported as a per-item unprocessable_entity error while the remaining items continue. When all messages succeed, errors is empty and every item is in data; otherwise data contains successes and errors contains failures. Request-wide gates can instead return 4xx or 5xx.
Example response
{
"data": [
{
"recipient_statuses": {
"delivered": 998,
"bounced": 2
}
}
]
}