Перейти к основному содержимому

Пакетная отправка

POST /v1/emails/batch
Authorization: Bearer mi_live_…
Content-Type: application/json

До 100 писем за один HTTP-запрос. Параметры каждого письма — те же, что в POST /v1/emails. Письма обрабатываются независимо.

Пример​

batch = client.emails.send_batch([
{"from_email": "no-reply@ваш-домен.ru", "to": "a@example.com",
"template": "welcome", "variables": {"user_name": "Анна"}},
{"from_email": "no-reply@ваш-домен.ru", "to": "b@example.com",
"template": "welcome", "variables": {"user_name": "Борис"}},
])

for item in batch.results:
if item.error:
print(item.index, item.error.code, item.error.message)

Ответ​

{
"data": {
"results": [
{
"index": 0,
"id": "018e1b7a-1111-7000-aaaa-000000000001",
"status": "QUEUED",
"skipped_recipients": [],
"error": null
},
{
"index": 1,
"id": null,
"status": null,
"skipped_recipients": [],
"error": {
"status_code": 404,
"code": "not_found",
"message": "Template 'missing-template' not found",
"details": {}
}
}
],
"accepted_count": 1,
"failed_count": 1
}
}

202 Accepted означает, что batch обработан, но не гарантирует успех каждого письма. Всегда проверяйте error у каждого результата. Поле index соответствует позиции письма во входном массиве; результаты возвращаются в том же порядке.

У успешного результата заполнены id и status, а error равен null. У отклонённого результата id и status равны null, а error содержит HTTP-статус и стандартную ошибку именно этого элемента.

Особенности​

  • Частичный успех: ожидаемая ошибка одного письма (например, шаблон не найден) не отменяет уже принятые письма и не останавливает следующие.
  • Если невалидна сама структура batch (emails пуст, больше 100 элементов или поле письма не прошло проверку схемы), весь запрос отклоняется с 422 до начала обработки.
  • Неожиданная серверная ошибка возвращается как 5xx. Поскольку batch неатомарный, ранее обработанные элементы к этому моменту уже могут быть приняты.
  • Idempotency-Key не поддерживается для batch. Если нужна идемпотентность — отправляйте по одному.
  • Лимит — 100 писем на запрос. Это технический лимит на HTTP-payload, не маркетинговая рассылка.