Отказы
Отказы задач
Тело отказа одно на все случаи: {"code":…,"msg":…,"data":null}. Задача, не
дошедшая до результата, не тарифицируется — удержанные кредиты возвращаются целиком.
| Код | Адрес | Когда |
|---|---|---|
| 400 | /api/v1/jobs/createTask | Тело запроса — не разбираемый JSON. |
| 401 | /api/v1/jobs/createTask | Ключа нет в заголовке Authorization, либо он неверный или отключён. |
| 402 | /api/v1/jobs/createTask | Свободных кредитов меньше, чем удерживается под задачу. |
| 413 | /api/v1/jobs/createTask | Тело запроса больше 512 КиБ. |
| 415 | /api/v1/jobs/createTask | Тело отправлено не как application/json или заголовок Content-Type не передан. |
| 422 | /api/v1/jobs/createTask | Поле model пустое или его имени нет в каталоге, input — не объект, поле не из списка модели либо значение вне её перечисления. В сообщении перечислено, что принимается. |
| 429 | /api/v1/jobs/createTask | Больше 30 запросов в минуту на один ключ либо больше 50 незавершённых задач на аккаунте. |
| 500 | /api/v1/jobs/createTask | Поломка на нашей стороне. Подробности остаются в журнале шлюза и наружу не уходят. |
| 401 | /api/v1/jobs/recordInfo | Ключа нет в заголовке Authorization, либо он неверный или отключён. |
| 404 | /api/v1/jobs/recordInfo | Задачи с таким номером нет или она создана другим аккаунтом. |
| 422 | /api/v1/jobs/recordInfo | Параметр taskId не передан. |
| 429 | /api/v1/jobs/recordInfo | Больше 300 запросов в минуту на один ключ. |
| 500 | /api/v1/jobs/recordInfo | Поломка на нашей стороне. Подробности остаются в журнале шлюза и наружу не уходят. |
Отказы текстовых моделей
Тело отказа — объект error, как у OpenAI:
{"error":{"message":…,"type":…,"code":…,"param":null}}. Ни один из этих отказов не тарифицируется:
деньги списываются только после ответа модели, и возвращать после отказа нечего.
| Код | code | Когда |
|---|---|---|
| 400 | model_not_found | Имени из поля model нет среди текстовых моделей. В сообщении перечислено, что принимается. |
| 400 | invalid_messages | Поле messages не передано, пустое или не массив. |
| 400 | invalid_max_tokens | Поле max_tokens не целое число либо вне границ от 1 до 128000. |
| 400 | invalid_setting | Настройка запроса с негодным значением: temperature вне границ от 0 до 2 (у Claude до 1), top_p вне границ от 0 до 1, штраф вне границ от −2 до 2, reasoning_effort не из списка minimal, low, medium, high, пустое стоп-слово или больше четырёх стоп-слов. В сообщении назван сам параметр. |
| 400 | key_required | Названный заголовком учёта ключ не принадлежит аккаунту или отключён. При вызове по ключу Bearer такого отказа не бывает. |
| 400 | — | Тело запроса не разобралось как JSON. Проверьте, что отправляете правильно составленный объект. |
| 401 | invalid_api_key | Ключа нет в заголовке Authorization, либо он неверный или отключён. |
| 402 | insufficient_credits | На балансе не осталось свободных кредитов. Перед вызовом шлюз проверяет только это — сумма списывается после ответа, по факту. |
| 413 | — | Тело запроса больше предела в 512 КиБ. |
| 415 | — | Не тот тип содержимого. Заголовок Content-Type должен быть application/json. |
| 429 | — | Больше 60 запросов в минуту на один ключ. |
| 502 | upstream_error | Поставщик не ответил или ответил ошибкой. Запрос не тарифицируется: списывать нечего, ответа не было. |
| 503 | service_overloaded | Поставщик перегружен или отбил запрос по своему лимиту. Запрос не тарифицируется, повторить можно через несколько секунд — срок назван в заголовке Retry-After. |
| 503 | upstream_error | Модель временно недоступна у поставщика. Запрос не тарифицируется. |
Тем же статусом 503 отвечает вызов модели, недоступной у поставщика, —
с кодом upstream_error. Он тоже не тарифицируется. Отказы, которые
формируются до маршрута (тело не разбирается, Content-Type не тот, тело
больше предела, превышена частота), приходят на этом адресе в своём виде:
{"statusCode":…,"error":…,"message":…} — объекта
error в них нет.
Неудача самой генерации отказом не считается: запрос состояния при этом успешен, а причина лежит в
полях failCode и failMsg — их таблица в
разделе Как устроена задача.