Перейти к содержанию
Решение проблемКоды ошибок

Коды ошибок

Формат ошибки, коды и что прислать в поддержку.

Каждая ошибка API приходит по-русски и в одном формате: машинный error.code, совет error.action, идентификатор запроса request_id (он же в заголовке request-id) и хвост вида [код · req_…] в самом тексте error.message. Хвоста достаточно для разбора: пришлите его в поддержку @Guard_AI_support, и по нему видно статус, код и место сбоя. Полный ключ, промпт и ответ присылать не нужно.

Формат ошибки

Оболочка зависит от endpoint'а, объект ошибки внутри одинаковый. /v1/messages и count_tokens отвечают в форме Anthropic:

json
{
  "type": "error",
  "error": {
    "type": "billing_error",
    "message": "На API-ключе закончился баланс. Пополните ключ в @subscribe_ai_bot и повторите запрос. [insufficient_credit · req_3f9a2c1e8b7d4e0fa1b2c3d4e5f60718]",
    "code": "insufficient_credit",
    "param": null,
    "action": "Пополните ключ в @subscribe_ai_bot либо уменьшите максимальный размер ответа."
  },
  "request_id": "req_3f9a2c1e8b7d4e0fa1b2c3d4e5f60718"
}

/v1/chat/completions и /v1/responses отвечают в OpenAI-форме без внешнего type:

json
{
  "error": {
    "message": "На API-ключе закончился баланс. Пополните ключ в @subscribe_ai_bot и повторите запрос. [insufficient_credit · req_3f9a2c1e8b7d4e0fa1b2c3d4e5f60718]",
    "type": "billing_error",
    "param": null,
    "code": "insufficient_credit",
    "action": "Пополните ключ в @subscribe_ai_bot либо уменьшите максимальный размер ответа."
  },
  "request_id": "req_3f9a2c1e8b7d4e0fa1b2c3d4e5f60718"
}

Ошибки авторизации, API статистики и файлового API кладут тот же объект в detail.error (у авторизации он продублирован и в error). Читайте error, а если его нет — detail.error.

ПолеЧто в нём
messageтекст по-русски; в конце хвост [код · request_id]
codeстабильный машинный код: по нему ветвится обработка и ищется причина
typeкласс ошибки в терминах Anthropic/OpenAI: invalid_request_error, authentication_error, rate_limit_error, api_error и т. д.
paramимя поля, если ошибка про конкретное поле, иначе null
actionодин следующий шаг простыми словами
request_idидентификатор запроса req_…; тот же в заголовке request-id (у Kimi на Chat/Responses ещё и в x-request-id)

Ошибка в потоке

Если сбой случился после начала SSE, HTTP-статус уже 200, и ошибка приходит кадром с тем же объектом: на /v1/messages и /v1/responses — событие event: error, на /v1/chat/completions — кадр data: {"error": …} и затем data: [DONE]. Обрыва соединения без кадра нет, в том числе у Kimi, Composer и Grok.

text
event: error
data: {"type": "error", "error": {"type": "api_error", "message": "Kimi временно недоступен. Повторите запрос через несколько секунд. [kimi_unavailable · req_3f9a2c1e8b7d4e0fa1b2c3d4e5f60718]", "code": "kimi_unavailable", "param": null, "action": "Повторите запрос позже; если ошибка сохраняется, обратитесь в поддержку."}, "request_id": "req_3f9a2c1e8b7d4e0fa1b2c3d4e5f60718"}

# на /v1/chat/completions тот же объект приходит как
data: {"error": {...}, "request_id": "req_3f9a2c1e8b7d4e0fa1b2c3d4e5f60718"}

data: [DONE]

HTTP-статусы

КодЗначениеЧто делать
400Некорректный запрос (тело/параметры)Прочитайте error.code и param; проверьте JSON, имя модели, обязательные поля (max_tokens для Anthropic).
401Неверный, отсутствующий или отозванный ключПроверьте ключ; выпустите новый в боте.
402Кредит ключа исчерпан или не хватает на резервПополните активный ключ или уменьшите max_tokens.
403Операция недоступна для ключа или клиентаПрочитайте error.code и ограничения выбранного API; пополнение не исправляет любой 403.
404Endpoint или модель не найденыПроверьте endpoint (/v1/messages, /v1/chat/completions, /v1/responses) и id модели.
413Тело запроса слишком большоеУменьшите текст, вложения или число сообщений.
422Параметры не прошли проверку (статистика, файлы)Исправьте поле из param.
429Rate/capacity или spend limitПрочитайте error.code и Retry-After: расходный лимит меняется в боте, временный лимит повторяется после задержки.
500 / 502Внутренний сбой или негодный ответ поставщикаПовторите; если повторяется — пришлите хвост [код · req_…] в поддержку.
503Сервис временно недоступенПовторите с экспоненциальной задержкой; не меняйте модель вслепую.
504Сервис не успел завершить запросПовторите; для длинных ответов используйте стриминг.

Коды error.code, общие для всех семейств

error.codeСтатусЧто значитЧто делать
missing_api_key401ключ не переданпередайте Authorization: Bearer gd-… или x-api-key
invalid_api_key401ключ не найден или скопирован не полностьюскопируйте ключ из бота заново
api_key_revoked, api_key_expired401 / 403ключ отозван или его срок истёкполучите новый ключ в боте
api_key_suspended429ключ временно заморожен защитойдождитесь времени из Retry-After
insufficient_credit402баланс ключа исчерпанпополните ключ в боте
request_reserve_exceeds_credit402остатка не хватает на резерв максимальной стоимости этого запросауменьшите max_tokens или пополните ключ
daily_spend_limit, hourly_spend_limit, daily_reserve_limit, hourly_reserve_limit429ваш собственный лимит расхода на ключеизмените лимит в боте или дождитесь окна из Retry-After
invalid_json, invalid_body_type400тело не JSON или не объектисправьте тело запроса
invalid_request, unsupported_parameter, invalid_parameter400поле негодное или не поддерживается на этой поверхности; имя в paramуберите или исправьте поле
messages_required, model_required400нет обязательного полядобавьте поле
model_not_found404такой модели нет в каталогевозьмите id из GET /v1/models
route_not_found, method_not_allowed404 / 405нет такого адреса или методапроверьте endpoint и метод
request_body_too_large413тело больше допустимогоуменьшите текст или вложения
context_length_exceeded400запрос не влезает в окно моделисократите историю или выберите модель с большим окном
product_modes_removed410Режимы удалены; запрос содержит устаревший фильтр modeУберите mode из запроса Usage API
cyber_refusal400 / ошибка в потокеClaude вернул структурированный отказ по кибербезопасностиИзмените формулировку или обратитесь в поддержку
client_key_rate_limit, client_ip_rate_limit429слишком часто с одного ключа или адресаповторите через Retry-After
service_capacity_saturated, standard_capacity_saturated429все слоты сервиса занятыповторите через Retry-After
service_unavailable, upstream_unavailable503сервис или поставщик временно недоступенповторите с экспоненциальной задержкой
stream_service_error, stream_timeoutв потокесбой после начала SSEповторите запрос; при повторении уменьшите контекст
internal_error500внутренняя ошибка сервисапришлите хвост [код · req_…] в поддержку
usage_rate_limit, invalid_cursor429 / 400Слишком частые чтения статистики или негодный курсорСм. Usage API

Коды Kimi, включая файлы, поиск и семь причин 429, собраны на странице Kimi · Ошибки и retry. Ниже — коды Composer и Grok.

Коды Composer и Grok

У Composer/Grok есть собственные значения error.code. Локально отклонённый новый запрос до обращения к модели не оплачивается. Ошибка уже начатого цикла инструментов или потока может относиться к выполненной и оплаченной части; смотрите историю запроса.

error.codeСтатусЧто значит
cursor_parameter_unavailable400в теле есть поле, которого нет в коротком списке принимаемых
cursor_client_tools_unavailable400во входе Responses есть элемент провайдерского инструмента — web_search_call, file_search_call, computer_call и подобные
cursor_client_tools_invalid400объявление инструмента негодное: больше 64 штук, дублирующееся или неверное имя, схема больше 256 КиБ
cursor_client_tool_result_invalid, cursor_client_tool_result_too_large, cursor_client_tool_result_unsupported400результат инструмента негодный, больше 8 МиБ либо в неподдержанном виде
cursor_image_input_unavailable400изображение отправлено в Composer, а он их не принимает
cursor_image_input_invalid400картинка не инлайн base64, неподдержанный тип или больше 16 штук
model_not_found404id написан с ошибкой
request_reserve_exceeds_credit402остатка на ключе не хватает на резерв этого запроса
cursor_daily_spend_limit, cursor_hourly_spend_limit, cursor_daily_reserve_limit, cursor_hourly_reserve_limit429ваш собственный лимит расхода; в Retry-After стоит время окна
client_key_rate_limit429слишком часто; повторите через короткую паузу
cursor_key_pause_limit429Достигнут лимит незавершённых циклов инструментов ключа. Завершите один из них; повтор сам по себе не поможет.
cursor_model_mismatchв потокенаверху ответила другая модель; приходит отдельным событием error
cursor_unavailable503временная недоступность; повторяйте с экспоненциальной задержкой
cursor_run_timeout504, в потоке событие errorпрогон не уложился в 600 секунд и снят. Прогон оплачен
cursor_output_limit_exceeded502 в обычном ответеВесь цикл превысил лимит вывода; выполненная часть оплачивается. Поток сохраняет текст и завершается max_tokens / length / response.incomplete.
cursor_upstream_error502, в потоке событие errorпрогон не завершился наверху. Если ответ уже начался, он оплачен

Что прислать в поддержку

  • Хвост [код · req_…] из текста ошибки или значение request_id — скриншота достаточно.
  • Endpoint, модель, stream true/false и время с часовым поясом.
  • Без полного ключа, промпта и ответа модели.

Разделы документации

На этой странице