Ошибки
Тела ошибок — конверт OpenAI:
{ "error": { "message": "insufficient balance", "type": "invalid_request_error", "code": "..." } }Коды
| Код | Смысл | Что делать |
|---|---|---|
| 400 | Плохой JSON или несовместимые поля | Поправьте тело |
| 401 | Нет ключа, неизвестный или отозванный | Выпустите новый ключ |
| 402 | Не хватает баланса | Пополните |
| 404 | Неизвестный путь или model_not_found | Проверьте /v1/models |
| 429 | Лимит одновременных запросов хоста | Подождите или включите повтор |
| 502 | Апстрим / нет хоста / запасной маршрут упал | Повторите позже; смотрите статус |
| 504 / таймаут клиента | Хост медленный или промпт слишком большой | Увеличьте таймаут клиента; урежьте контекст |
Сообщения, которые вы реально увидите
insufficient balance— кредит кончился, в том числе на конвертации картинок сверх лимитаmodel_not_found— id устарел или сеть его сняла (0 здоровых шардов)rate limit exceeded: too many concurrent requests (N/N)— полон хост, это не квота QPS проксиrouter upstream error/no currently-available host— маршрутизация не нашла хост после повторовinference: no non-probe attempt finished— хосты приняли задачу и умерли
Когда повторять
Повторяйте 429 и 502 с джиттером. Не повторяйте 401 и 402. Не долбите 404 model_not_found в цикле — ждите, пока модель вернётся в /v1/models.
Статус и ваш запрос
Страница статуса может показать модель «здоровой» (шарды есть), а ваш запрос всё равно получит 429. Здоровье — это инвентарь. 429 — это полная очередь.