# Send batch of different emails Send up to 500 completely different emails in a single API call. Batch sending where each email can have: - Different recipient - Different subject - Different content - Different settings Perfect for sending multiple transactional emails at once (order confirmations, password resets, etc.). Limits: - Maximum 500 emails per batch - Each email validated independently - Failed emails don't affect successful ones Use cases: - Sending different transactional emails simultaneously - Mixed email types in one API call - High-volume transactional sending Not for: Newsletter-style emails with same content → Use /api/bulk-send instead Endpoint: POST /api/batch Version: 1.0.0 Security: ApiKeyAuth ## Request fields (application/json): - `customer_id` (string, required) Your customer ID Example: "550e8400-e29b-41d4-a716-446655440000" - `emails` (array, required) Array of emails to send (max 500) - `emails.to` (string, required) Recipient email address Example: "user@example.com" - `emails.from` (string) From email (must use verified domain, optional) Example: "hello@mail.yourdomain.com" - `emails.domain` (string) Sending domain (optional - auto-selects if omitted) Example: "mail.yourdomain.com" - `emails.reply_to` (string) Reply-to address Example: "support@yourdomain.com" - `emails.cc` (array) CC recipients - `emails.bcc` (array) BCC recipients - `emails.subject` (string, required) Email subject Example: "Your order has shipped" - `emails.html` (string) HTML email body Example: "

Order shipped!

" - `emails.text` (string) Plain text body Example: "Your order has shipped" - `emails.track_opens` (boolean) Enable open tracking - `emails.track_clicks` (boolean) Enable click tracking - `emails.headers` (object) Custom headers - `emails.tag` (string) Tag for organizing - `emails.metadata` (object) Custom metadata ## Response 200 fields (application/json): - `total` (integer) Total emails in batch - `queued` (integer) Successfully queued emails - `failed` (integer) Failed emails - `results` (array) Successfully queued emails - `results.index` (integer) Index in original array - `results.to` (string) Recipient - `results.email_id` (string) Email ID for tracking - `results.message_id` (string) Message-ID header - `results.status` (string) Enum: "queued" - `errors` (array) Failed emails (only if any failed) - `errors.email` (string) Email address or identifier - `errors.error` (string) Error message ## Response 400 fields (application/json): - `error` (string) - `message` (string) ## Response 403 fields (application/json): - `error` (string) - `message` (string) - `reason` (string) ## Response 404 fields (application/json): - `error` (string) - `message` (string) ## Response 500 fields (application/json): - `error` (string) - `message` (string)