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

Поиск доступен только в продакшен-сборках. Выполните сборку и запустите превью, чтобы протестировать поиск локально.

Рейтлимиты

Рейтлимиты защищают API от всплесков нагрузки и действуют независимо от тарификации. Они рассчитываются отдельно для аккаунта и операции, а не для IP-адреса или API-токена. Поэтому сброс токена не обнуляет счётчики.

Эндпоинт Запросов за 60 секунд Одновременных запросов
GET /v1/me/ 120 5
GET /v1/users/{identifier} 120 5
GET /v1/groups/{identifier} 120 5
GET /v1/search/ 60 3
GET /v1/users/{identifier}/similar 60 3
GET /v1/groups/{identifier}/similar 30 2
GET /v1/groups/{identifier}/members 30 2

У каждой строки отдельный счётчик. Например, запросы профилей пользователей не расходуют квоту на получение групп.

При превышении любого из лимитов API возвращает 429 Too Many Requests и заголовок Retry-After с целым числом секунд до повторной попытки:

HTTP/1.1 429 Too Many Requests
Retry-After: 17
Content-Type: application/json
{
"detail": "Rate limit exceeded",
"reason": "rpm"
}

Возможные значения reason:

  • rpm — исчерпана квота запросов в скользящем минутном окне;
  • concurrency — для операции уже выполняется максимальное число запросов.

Для concurrency значение Retry-After обычно равно 1. Повторяйте запрос после указанной задержки и не запускайте сразу то же число параллельных запросов.

Если сервис рейтлимитов не может обработать запрос, API закрывает доступ с ответом 503 Service Unavailable:

HTTP/1.1 503 Service Unavailable
Retry-After: 5
Content-Type: application/json
{ "detail": "Rate limiter is temporarily unavailable" }

Повторите запрос через время из Retry-After. Успешные ответы сейчас не содержат заголовков с размером квоты, остатком запросов или временем сброса.