Ограничение частоты (rate limit)
К API применяется ограничение частоты запросов.Ключ — это IP. Лимит общий для всех запросов с одного IP: все запросы вашего backend делят
один бюджет, и разносить операции по разным API‑ключам бесполезно. Точное значение в проде может
отличаться от 120/мин по умолчанию, поэтому не «зашивайте» 120 в логику — ориентируйтесь на
ответ
429 и заголовок Retry-After.Что делать при 429
Обратите внимание: тело 429 — это{"state":1,"message":…}, не стандартный конверт
{"error":{…}}. Правильная реакция:
- Прочитайте
Retry-After(секунды) и подождите это время, либо повторяйте с экспоненциальным backoff. - Повторите тот же запрос. Благодаря идемпотентности по
order_idповтор денег‑движущих операций безопасен — дубля не возникнет.
Retry-After и повторяют.
Как не упереться в лимит
- Не распараллеливайте сотнями. Держите разумную конкурентность (единицы–десятки одновременных запросов), а не «выстрел» из сотни.
- Кэшируйте редко меняющееся. Ответы
/v1/payment/services,/v1/currencies,/v1/exchange-rate/listможно кэшировать на минуты — не запрашивайте их на каждый показ страницы. - Не поллите статус. Не опрашивайте
/v1/payment/infoв цикле — статус вам сообщит вебхук. Опрос уместен только как редкий фолбэк. - Массовые операции — батчами. Это штатный способ не упираться в лимит: батч из 5000 элементов
— это один запрос в бюджете, а не 5000. Используйте
/v1/payment/batch,/v1/refund/batch,/v1/payout/batchи опрашивайте результат через/v1/batch/info. Устаревший/v1/payout/mass(до 100, синхронный) годится только для маленьких пачек.
IP‑allowlist
Для вашего API‑ключа можно включить список доверенных IP‑адресов. Когда список включён, подписанные запросы с IP вне списка отклоняются с ошибкой401 auth.ip_not_allowed.
По умолчанию allowlist выключен. В проде рекомендуется его включить и ограничить доступ
IP‑адресами вашего backend.
Управление списком — отдельные методы:
Полное описание — на странице IP‑allowlist.