Рейтліміти
Рейтліміти захищають API від сплесків навантаження й діють незалежно від тарифікації. Вони обчислюються окремо для акаунта й операції, а не для IP-адреси чи API-токена. Тому скидання токена не обнуляє лічильники.
Ліміти
Section titled “Ліміти”| Ендпоінт | Запитів за 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
Section titled “Відповідь 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. Повторюйте запит
після зазначеної затримки й не запускайте відразу ту саму кількість паралельних
запитів.
Лімітер недоступний
Section titled “Лімітер недоступний”Якщо сервіс рейтлімітів не може обробити запит, API закриває доступ відповіддю
503 Service Unavailable:
HTTP/1.1 503 Service UnavailableRetry-After: 5Content-Type: application/json{ "detail": "Rate limiter is temporarily unavailable" }Повторіть запит через час із Retry-After. Успішні відповіді зараз не містять
заголовків із розміром квоти, залишком запитів або часом скидання.