Перейти к документации
API

Идемпотентность

Как сделать повтор безопасным.

Как это работает

Отправляйте Idempotency-Key в POST /emails, POST /emails/batch или POST /templates/{id}/send. Ни один другой маршрут его не читает. Первый вызов выполняет работу, а повтор с тем же ключом возвращает то же самое сообщение. POST /emails дополнительно выставляет Idempotency-Replayed: true, пакет сообщает replayed по каждому элементу, а отправка по шаблону сообщает об этом в теле и отвечает 200 вместо 202. Заявка на ключ делается самой вставкой в базу данных, поэтому два запроса, гонящиеся с одним ключом, не могут выиграть оба.

Заголовок
Idempotency-Key: invoice-8812

Повторное использование ключа с другим телом даёт 422 idempotency_key_reuse, а не тихое воспроизведение. Почти всегда это означает, что ключ был выведен из чего-то недостаточно уникального, а воспроизвести кому-то сообщение, которого он не отправлял, хуже, чем отказать.

В пакете ключ расширяется по каждому элементу, поэтому один ключ на сотне сообщений не схлопывает их в первое.