Формат ошибки#
Ошибки возвращаются в формате OpenAI — с HTTP-кодом и объектом error:
{
"error": {
"message": "Неверный API-ключ",
"type": "invalid_request_error",
"code": "invalid_api_key"
}
}Коды ответов#
| Код | Что случилось | Что делать |
|---|---|---|
400 | Некорректный запрос | Проверьте тело запроса и параметры. |
401 | Нет ключа или он неверный | Проверьте заголовок Authorization и сам ключ. |
402 | Недостаточно средств | Пополните баланс в личном кабинете. |
403 | Ключ ограничен | Исчерпан лимит ключа или ключ отозван. |
404 | Модель не найдена | Проверьте id модели по каталогу. |
429 | Слишком много запросов | Повторите позже с экспоненциальной задержкой. |
500 | Внутренняя ошибка | Повторите запрос; если ошибка не уходит — напишите в поддержку. |
502, 503 | Провайдер недоступен | Повторите позже или выберите другую модель. |
504 | Истекло время ожидания | Уменьшите max_tokens или используйте стриминг. |
Повторы#
Повторяйте только 429 и ошибки 5xx — с растущей паузой: 1, 2, 4, 8 секунд. Если в ответе есть заголовок Retry-After, ждите столько, сколько он говорит. Ошибки 4xx, кроме 429, повторять бессмысленно: запрос нужно исправить.
Официальные SDK OpenAI и Anthropic уже повторяют такие запросы сами (по умолчанию дважды) — это настраивается параметром max_retries.
Таймауты#
Большие модели и длинные ответы генерируются долго — иногда минуты. Ставьте клиенту таймаут не меньше 120 секунд или используйте стриминг: первые токены придут раньше, и соединение не будет простаивать.
Лимиты#
Ограничения частоты зависят от модели и текущей нагрузки. При превышении API отвечает кодом 429 — сделайте паузу и повторите запрос. Лимит трат на каждом ключе вы задаёте сами в личном кабинете.