Перейти к содержимому

Ограничения частоты запросов IZI API

Опубликовано: · IZI Team

IZI API ограничивает количество запросов на токен. Это защищает инфраструктуру и обеспечивает стабильность для всех партнёров.

ЛимитЗначение
Скользящее окно10 секунд
Максимум запросов100 за окно
Единица учётаТокен (не IP)
Стоимость обычного запроса1
Стоимость аналитического запроса5–10 (зависит от сложности)

Лимит скользящий — не сбрасывается раз в 10 секунд, а считается непрерывно по последним 10 секундам.

Каждый ответ API содержит:

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 73
X-RateLimit-Reset: 1717072920
X-RateLimit-Cost: 1
  • X-RateLimit-Remaining — сколько запросов осталось в текущем окне
  • X-RateLimit-Reset — Unix timestamp когда окно сбросится
  • X-RateLimit-Cost — стоимость текущего запроса

При превышении лимита:

HTTP/1.1 429 Too Many Requests
Retry-After: 7
X-RateLimit-Remaining: 0
async function requestWithBackoff(query, variables, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
return await client.request(query, variables);
} catch (error) {
if (error.status === 429) {
const retryAfter = parseInt(error.headers['retry-after'] || '5', 10);
// Добавляем jitter чтобы не синхронизировать повторы
const delay = retryAfter * 1000 + Math.random() * 1000;
await new Promise(resolve => setTimeout(resolve, delay));
continue;
}
throw error;
}
}
throw new Error('Max retries exceeded');
}

Для синхронизации данных — используйте webhooks вместо polling’а. Вместо запроса каждые 5 секунд «что изменилось» — подпишитесь на события и получайте пуш при изменении.

Для bulk-операций — группируйте запросы через batching (до 10 в одном POST).

Для аналитики — запускайте тяжёлые запросы в ночное время или кешируйте результаты на стороне.

Частые вопросы

Сколько запросов в секунду можно делать к IZI API?

100 запросов за любые 10 секунд на один токен. Это ~10 запросов/сек в среднем, но допустимы кратковременные всплески до 30–40 в секунду пока не превышен скользящий лимит.

Что делать при ошибке 429?

Прочитайте заголовок Retry-After в ответе — там указано через сколько секунд повторить. Реализуйте exponential backoff с jitter для автоматической обработки.

Лимиты разные для разных типов операций?

Базовый лимит единый. Тяжёлые аналитические запросы учитываются с повышающим коэффициентом стоимости (cost), это отражается в заголовке X-RateLimit-Cost.