AI API

Ошибки

Ошибка приходит обычным для OpenAI API телом: объект error с полем message. Ниже — отказы, которые вы реально встретите, и что делать с каждым.

КодСообщениеЧто произошлоЧто делать
401Invalid tokenключ неизвестен, отключён или удалён — или ключу нечего тратить: исчерпан его потолок либо кончились деньги на счёте компаниипроверьте, что подставлен целиком; в кабинете — состояние ключа, его потолок и остаток счёта
403token quota is not enough …остаток ключа есть, но этот запрос в него не помещаетсяподнимите потолок ключа или пополните счёт; более короткий запрос может пройти
403This token has no access to model …у ключа ограничен список моделейвызовите разрешённую модель или снимите ограничение в кабинете
503No available channel for model …такой модели у нас нетсверьтесь со списком моделей — вероятна опечатка в имени
429—слишком много запросовповторите с задержкой и увеличивайте её при повторных отказах

Отключённый, удалённый и исчерпанный ключ отвечают тем же 401, что и неизвестный: шлюз отсекает ключ с нулевым остатком ещё на проверке ключа. По ответу API нельзя отличить «ключ отозвали» от «ключу нечего тратить» и от «такого ключа не существует» — иначе чужие ключи можно было бы перебирать. Что именно случилось с вашим ключом, видно в кабинете.

Что повторять, а что нет

Повторять имеет смысл 429 и 5xx — это временные состояния. 401 и 403 повторять бесполезно: пока вы не измените ключ или его настройки, ответ не изменится.

Формат ошибок мы планируем сделать своим — со стабильными кодами, по которым удобно ветвиться, и с явным правилом повтора. Пока этого нет, не завязывайтесь на текст сообщения: он приходит от шлюза и может измениться. Ветвитесь по HTTP-коду.

Если запрос завершился ошибкой, деньги списались?

Нет. В детализацию попадают только завершённые запросы. Отказ до обращения к модели расхода не создаёт.