Ошибки и лимиты

Ошибки приходят в стандартном формате: код ответа и текстовое пояснение. Ниже — что делать в каждом случае.

Коды ответа

КодЧто случилосьЧто делать
401ключ не распознанпроверьте заголовок Authorization и что ключ не удалён
403недостаточно доступного остатка или лимит ключа исчерпанпополните баланс либо поднимите лимит ключа
404неизвестное название моделисверьтесь со списком моделей
413запрос больше окна контекстасократите историю или возьмите модель с большим контекстом
429слишком много запросов подрядповторите с растущей паузой
5xxвременный сбой на стороне моделиповторите запрос или переключитесь на запасную модель

Повторы

Повторять стоит только 429 и 5xx, и всегда с увеличивающейся паузой — иначе повторы сами создают нагрузку.

async function ask(body, tries = 3) {
  for (let i = 0; i < tries; i++) {
    const res = await fetch(url, { method: "POST", headers, body: JSON.stringify(body) });
    if (res.ok) return res.json();
    if (![429, 500, 502, 503, 504].includes(res.status)) throw new Error(await res.text());
    await new Promise((r) => setTimeout(r, 500 * 2 ** i)); // пауза растёт
  }
  throw new Error("Сервис недоступен, попробуйте позже");
}

Лимиты

  • Лимит на ключ — вы задаёте сами при создании и меняете в любой момент.
  • Окно контекста — у каждой модели своё, указано в каталоге.
  • Частота запросов — ограничена мягко, обычные приложения её не замечают.
Если ключ выдан по коду активации, его лимит не может превышать номинал кода. Подробнее — в разделе о расходе.

Что дальше