Справочник
Ошибки
Ошибки приходят в формате OpenAI, со стабильным code, по которому можно сопоставлять, и message, написанным для людей. Отклонённый или неудачный вызов ничего не стоит.
Проверено 26 октября 2026 г.
Формат
{
"error": {
"type": "rate_limit_error",
"code": "daily_cap",
"message": "This call needs up to $0.02 and the key has $0.01 left of its $2.00 daily cap, which resets at 00:00 UTC. …"
}
}Сопоставляйте по code, а не по message: сообщения могут переформулировать, коды остаются. type соответствует типу OpenAI, поэтому SDK выбрасывают ожидаемое исключение.
Все коды
| Статус | Код | Когда | Что делать |
|---|---|---|---|
| 401 | missing_key | Ключ не отправлен. | Отправьте его как Authorization: Bearer sk-nokeep-…. Создайте ключ в консоли или сначала попробуйте sk-nokeep-test. |
| 401 | invalid_key | Ключ неверный или отозван. | Скопируйте ключ заново оттуда, где вы его сохранили; консоль показывает только последние четыре символа. Если ключ потерян, создайте новый. |
| 403 | account_frozen | Платные функции на аккаунте этого ключа приостановлены. | Напишите нам со страницы контактов. |
| 429 | rate_limited | Ключ отправил больше 120 запросов за минуту (20 для тестового ключа, на адрес). | Подождите столько секунд, сколько указано в Retry-After, и повторите. |
| 429 | daily_cap | Вызов может превысить дневной лимит ключа. | Поднимите лимит в консоли, уменьшите max_tokens или дождитесь 00:00 UTC (Retry-After скажет, сколько ждать). |
| 402 | insufficient_credits | Купленных кредитов на аккаунте не хватает на этот вызов. | Пополните баланс от $5 в консоли или уменьшите max_tokens. Кредиты тарифа остаются в приложении. |
| 400 | invalid_json | Тело запроса не JSON-объект. | Отправьте Content-Type: application/json и JSON-объект. |
| 413 | too_large | Запрос больше 12 МБ. | Отправляйте картинки ссылками, а не data URL, или отправляйте меньше за раз. |
| 404 | model_not_found | Такого id модели у нас нет. | GET /v1/models выводит список id. Проверьте опечатку или пропущенный -uncensored. |
| 400 | invalid_messages | messages нет или он пуст, слишком длинный, содержит неизвестную роль, или у сообщения tool нет tool_call_id. | Отправьте от 1 до 2 000 сообщений, у каждого роль system, developer, user, assistant или tool. |
| 400 | unsupported_n | n больше 1. | Отправляйте по одному запросу на каждый нужный ответ. |
| 400 | invalid_reasoning_effort | Модель не принимает такой reasoning_effort. | DeepSeek принимает none, low, high или max. GLM принимает low или high. |
| 400 | unsupported_tool_choice | GLM получила в tool_choice именованную функцию или "required". | Отправляйте GLM auto или none; она сама выбирает инструменты. DeepSeek принимает любую форму. |
| 400 | unsupported_input | Часть содержимого такого вида, который модель не читает. | Картинки отправляйте DeepSeek; GLM читает только текст. |
| 400 | too_many_images | Больше десяти картинок в одном запросе. | Отправляйте не больше десяти. |
| 422 | hard_limit | Запрос нарушает одно из жёстких ограничений в условиях. | Ничего не списано. Уберите это сообщение из истории, которую отправляете обратно, иначе следующий вызов тоже остановится. |
| 400 | rejected | Модель не смогла принять запрос в таком виде. | Сверьте параметры со списком модели в разделе Модели. Ничего не списано. |
| 503 | busy | Модель занята. | Повторите через столько секунд, сколько указано в Retry-After. Ничего не списано. |
| 503 | model_unavailable | Модель отключена на нашей стороне. | Пока используйте другую модель; страница статуса покажет, когда она вернётся. |
| 502 | upstream_error | Модель сбоила, не написав ни слова. | Повторите через минуту. Ничего не списано. |
| 404 | not_found | Такого маршрута нет. | API обслуживает GET /v1/models, GET /v1/models/{id}, GET /v1/status и POST /v1/chat/completions. |
| 404 | api_closed | API выключен. | Попробуйте позже. |
| В потоке | Код | Когда | Что делать |
|---|---|---|---|
| — | stream_cut | Модель остановилась, не закончив, посреди потока. | Оплачивается только написанное. Повторите, чтобы получить остальное, или продолжите с того, что пришло. |
Какие повторять
- Повторяйте
429 rate_limited,503 busyи502 upstream_error— черезRetry-Afterсекунд, если он есть. - Не повторяйте
400,401,402,404или422: тот же запрос получит тот же ответ. 429 daily_capждёт 00:00 UTC. Лучше поднимите лимит.