Лимиты частоты
Лимиты по скользящему окну на каждый ключ API, заголовки X-RateLimit и правильная стратегия повторов.
Обновлено 13 августа 2026 г.
Лимиты считаются на каждый ключ по скользящему окну в одну минуту. По умолчанию: 600 запросов в минуту для ключей рабочего пространства, 1200 для партнёрских; ваш тариф может задавать другие значения, а фактический лимит всегда указан в заголовках ответа.
Заголовки
Каждый ответ несёт текущее состояние:
X-RateLimit-Limit: 600
X-RateLimit-Remaining: 273
X-RateLimit-Reset: 1755081600
X-RateLimit-Limit— ёмкость окна для этого ключа.X-RateLimit-Remaining— сколько запросов осталось в текущем окне.X-RateLimit-Reset— время Unix (в секундах), когда окно освободится.
При превышении API отвечает 429 с заголовком Retry-After:
{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded, retry later",
"doc_url": "https://linkprofit.com/docs/api/errors"
}
}
Retry-After: 12
Окно скользит
Счётчик не обнуляется в начале минуты: всплеск в 10:00:55 всё ещё учитывается в окне в 10:01:05. Планируйте ровный темп, а не всплески, выровненные по минутам.
Отклонённые запросы тоже считаются — плотный цикл повторов на 429 лишь держит ключ заблокированным.
Повтор, который ведёт себя прилично
async function withRateLimit(request) {
for (let attempt = 0; attempt < 5; attempt += 1) {
const response = await request();
if (response.status !== 429) return response;
const wait = Number(response.headers.get("retry-after") ?? "1");
await new Promise((resolve) => setTimeout(resolve, wait * 1000 + attempt * 250));
}
throw new Error("Rate limit retries exhausted");
}
Уважайте Retry-After вместо того, чтобы гадать, добавляйте джиттер, чтобы
параллельные обработчики не повторяли запросы синхронно, и ограничивайте число попыток.
Как оставаться в пределах лимита
- Следите за
X-RateLimit-Remainingи замедляйтесь до того, как дойдёте до нуля. - Используйте
POST /links/bulk— один запрос создаёт до 100 ссылок. - Предпочитайте webhook опросу: события приходят к вам за секунды и не стоят ни одного запроса.