Рейтлимиты
Рейтлимиты защищают 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 |
У каждой строки отдельный счётчик. Например, запросы профилей пользователей не расходуют квоту на получение групп.
Ответ 429
Заголовок раздела «Ответ 429»При превышении любого из лимитов API возвращает 429 Too Many Requests и
заголовок Retry-After с целым числом секунд до повторной попытки:
HTTP/1.1 429 Too Many RequestsRetry-After: 17Content-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 UnavailableRetry-After: 5Content-Type: application/json{ "detail": "Rate limiter is temporarily unavailable" }Повторите запрос через время из Retry-After. Успешные ответы сейчас не
содержат заголовков с размером квоты, остатком запросов или временем сброса.