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

Лимиты запросов

Запросы к API ограничиваются по API-ключу и по группе эндпоинтов:

ЭндпоинтыЛимит
GET /v1/products · GET /v1/balance · GET /v1/api-key · GET /v1/tasks/{token} · GET /v1/tasks/{token}/result · GET /v1/tasks/{token}/download60 запросов / минуту на API-ключ (120 / минуту на IP)
POST /v1/detect · POST /v1/detect/file10 запросов / минуту на API-ключ (30 / минуту на IP)
POST /v1/realtime/check/{series} · POST /v1/realtime/detectToken bucket на API-ключ: всплеск 60, пополнение 1/с (≈60 / минуту устойчиво); на аккаунт: всплеск 120, пополнение 2/с. Уровень IP допускает 180 / минуту. Каждый ответ содержит заголовок X-RateLimit-Remaining.

Набор заголовков зависит от того, какой слой ответил, и три группы ведут себя неодинаково:

ЗаголовокЗначениеКогда присутствует
X-RateLimit-RemainingОстаток запросов (или токенов) в текущем окнеВ каждом ответе всех трёх групп
X-RateLimit-LimitПрименённый потолокВо всех общих ответах и ответах детекции, а также в каждом 429 от слоя IP. Никогда в ответе реального времени — реальное время расходует бакет, поэтому фиксированного потолка нет
Retry-AfterСколько секунд ждать перед повторомТолько при 429
X-RateLimit-ResetUnix-время сброса окнаТолько при 429 из общей группы или группы детекции; никогда от реального времени или слоя IP

X-RateLimit-Remaining — единственный заголовок, на который можно положиться всегда, и единственный, который реальное время сообщает при успехе.

При превышении лимита API возвращает 429 с заголовком Retry-After (realtime-ответы также содержат поле retry_after). Приостановите запросы на указанное число секунд, затем продолжайте с экспоненциальной задержкой.

{
"message": "Too many requests. Limit: 60/min."
}
Retry-After: 12
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 0