Лимиты
Лимиты защищают вход и SMS от перебора. При превышении API отвечает 429 Too Many Requests
и сообщает в заголовке Retry-After, через сколько секунд можно повторить запрос.
Запросы к /v1/auth
Заголовок раздела «Запросы к /v1/auth»| Метод | Лимит |
|---|---|
POST /v1/auth/refresh |
30 запросов в минуту с одного IP |
остальные методы /v1/auth/* |
10 запросов в минуту с одного IP |
Счётчик ведётся отдельно для каждого метода: 10 запросов к /v1/auth/login не расходуют лимит
/v1/auth/login/start. Успешные ответы этих методов содержат заголовки X-RateLimit-Limit,
X-RateLimit-Remaining и X-RateLimit-Reset (секунды до сброса окна).
При превышении — 429 с кодом too_many_requests:
HTTP/1.1 429 Too Many RequestsRetry-After: 42Content-Type: application/json
{ "error": { "code": "too_many_requests", "message": "Слишком много запросов. Повторите позже", "requestId": "b6a1f0c2-8d3e-4b7a-9c5f-2e1d0a9b8c7d" }}SMS-коды
Заголовок раздела «SMS-коды»Лимиты считаются на пользователя (номер телефона), а не на IP, и действуют во всех сценариях, где отправляется код: регистрация, вход по SMS, восстановление пароля и повторная отправка.
| Правило | Ответ при нарушении |
|---|---|
| не чаще одного кода в 60 секунд | 429 code_resend_too_soon, Retry-After — сколько секунд осталось |
| не больше 5 кодов в час | 429 too_many_requests, Retry-After: 3600 |
| 5 неверных попыток ввода одного кода | 429 code_attempts_exceeded, Retry-After: 900, блокировка на 15 минут |
Каждый ответ с кодом (challengeId) сообщает, когда можно запросить следующий: поле resendIn
в секундах. Показывайте обратный отсчёт по нему, а не по своей константе.
{ "error": { "code": "code_resend_too_soon", "message": "Новый код можно запросить через 37 с", "details": { "retryAfter": 37 }, "requestId": "6c0e9a41-1f2b-4d8c-a7e3-5b9d2c4f6a80" }}Неверные попытки
Заголовок раздела «Неверные попытки»Код можно ввести неверно четыре раза — на каждую попытку API отвечает 401 invalid_code.
Пятая неверная попытка возвращает 429 code_attempts_exceeded: этот код больше не принимается,
даже правильный, и в течение 15 минут пользователю не отправляются новые коды.
Как обрабатывать 429
Заголовок раздела «Как обрабатывать 429»- Прочитайте
Retry-After(в секундах) и не повторяйте запрос раньше. В браузере заголовок доступен скрипту — он открыт в CORS. - Не повторяйте запросы автоматически в цикле: каждая попытка входит в счётчик.
- Покажите пользователю
message— он уже содержит понятный текст на нужном языке.