Ошибки и лимиты
Ошибки приходят в стандартном формате: код ответа и текстовое пояснение. Ниже — что делать в каждом случае.
Коды ответа
| Код | Что случилось | Что делать |
|---|---|---|
| 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("Сервис недоступен, попробуйте позже");
}Лимиты
- Лимит на ключ — вы задаёте сами при создании и меняете в любой момент.
- Окно контекста — у каждой модели своё, указано в каталоге.
- Частота запросов — ограничена мягко, обычные приложения её не замечают.
Если ключ выдан по коду активации, его лимит не может превышать номинал кода. Подробнее — в разделе о расходе.