REST API v1 · Разработчикам
Лимиты запросов
Лимиты считаются для каждого API-ключа в фиксированном окне длиной в минуту, а их размер зависит от тарифа сервера. Каждый авторизованный ответ сообщает текущее состояние, так что аккуратному клиенту не нужно гадать.
Документация для разработчиков
На этой странице
Лимиты по тарифам
| Тариф | Запросов в минуту | Активных ключей |
|---|---|---|
| Free | 60 | 2 |
| Pro и Network | 600 | 10 |
| White Label | 600 | 40 |
У каждого ключа своё окно, поэтому два ключа одного сервера не делят общий запас. Тарифы — на странице цен.
Заголовки лимитов
В каждом авторизованном ответе есть текущее состояние окна:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Reset: 1791374460X-RateLimit-Limit— сколько запросов в минуту разрешено этому ключу.X-RateLimit-Remaining— сколько запросов осталось в текущем окне.X-RateLimit-Reset— Unix-время (в секундах), когда окно сбросится.
Если лимит превышен
При превышении лимита придёт 429 RATE_LIMITED с заголовком Retry-After и числовым полем retryAfter в теле (оба — в секундах). Подождите столько и повторите запрос.
HTTP/1.1 429 Too Many Requests
Retry-After: 18
{ "error": "RATE_LIMITED", "message": "Rate limit of 60 requests per minute exceeded", "retryAfter": 18 }// Wait and retry on 429 / 503, using the server's Retry-After
async function call(url, init, tries = 3) {
for (let attempt = 1; ; attempt++) {
const res = await fetch(url, init);
if ((res.status !== 429 && res.status !== 503) || attempt >= tries) return res;
const seconds = Number(res.headers.get('Retry-After')) || attempt * 2;
await new Promise((resolve) => setTimeout(resolve, seconds * 1000));
}
}Повторяющиеся запросы с неверными ключами с одного IP-адреса тоже ограничиваются: после нескольких неудач в минуту они получают 429 вместо 401.