MailcrateDocs
Sending

Send a batch of emails

POST
/public/sending/mail/batch

Sends up to 500 messages in one request, each shaped exactly like a single send.

Messages are processed in order and independently: one that fails (unknown template, unverified sender, suppressed recipient) is reported in its own result entry and the others still go out. A structurally invalid payload is rejected as a whole with 400 before anything is sent.

Requires the sending:write scope.

Authorization

ApiKey
headerAuthorization<token>

Api-Key mc_... — a workspace API key.

Request Body

application/json
  1. body
messages*array<>
Items1 <= items <= 500

Response Body

application/json
  1. response
total*number
succeeded*number
failed*number
results*array<>
Example Request
curl -X POST 'https://api.mailcrate.io/public/sending/mail/batch' \  -H 'Authorization: Api-Key <api_key>' \  -H 'Content-Type: application/json' \  -d '{  "messages": [    {      "contactEmail": "ada@example.com",      "templateId": "receipt",      "lane": "transactional",      "data": {        "orderId": "1042"      },      "idempotencyKey": "receipt-1042"    },    {      "contactEmail": "grace@example.com",      "templateId": "receipt",      "lane": "transactional",      "data": {        "orderId": "1043"      },      "idempotencyKey": "receipt-1043"    }  ]}'
Example Response
{  "total": 0,  "succeeded": 0,  "failed": 0,  "results": [    {      "index": 0,      "success": true,      "data": {        "id": "string",        "status": "string",        "lane": "string",        "suppressionReason": "string",        "approvalUrl": "string"      },      "error": {        "statusCode": 0,        "message": "string"      }    }  ]}