> Расположение: Основы API
> Краткое содержание: Что означает отказ AI API VCPay и что с ним делать.
> Это Markdown-версия конкретной страницы. Для контекста за её пределами (правила API, полный перечень методов, авторизация) ОБЯЗАТЕЛЬНО открой [llms.txt](https://vcpay.ru/ai/docs/llms.txt) перед ответом — это сэкономит токены и предотвратит неполный ответ.


# Ошибки

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

| Код | Сообщение | Что произошло | Что делать |
|---|---|---|---|
| `401` | `Invalid token` | ключ неизвестен, отключён или удалён — или ключу нечего тратить: исчерпан его потолок либо кончились деньги на счёте компании | проверьте, что подставлен целиком; в кабинете — состояние ключа, его потолок и остаток счёта |
| `403` | `token quota is not enough …` | остаток ключа есть, но этот запрос в него не помещается | поднимите потолок ключа или пополните счёт; более короткий запрос может пройти |
| `403` | `This token has no access to model …` | у ключа ограничен список моделей | вызовите разрешённую модель или снимите ограничение в кабинете |
| `503` | `No available channel for model …` | такой модели у нас нет | сверьтесь со [списком моделей](https://vcpay.ru/ai/docs/api/models) — вероятна опечатка в имени |
| `429` | — | слишком много запросов | повторите с задержкой и увеличивайте её при повторных отказах |

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


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

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

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


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

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