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

Коды ошибок

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

Протокол модели

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

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

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

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

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

json
{
  "error": {
    "message": "На API-ключе закончился баланс. Пополните ключ в @guardapi и повторите запрос. [insufficient_credit · req_3f9a2c1e8b7d4e0fa1b2c3d4e5f60718]",
    "type": "billing_error",
    "param": null,
    "code": "insufficient_credit",
    "action": "Пополните ключ в @guardapi либо уменьшите максимальный размер ответа."
  },
  "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 и время с часовым поясом.
  • Без полного ключа, промпта и ответа модели.

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

Messages возвращает Anthropic-совместимую оболочку; Chat и Responses — OpenAI-совместимую. Всегда ветвитесь по HTTP-статусу и error.code, а не по переведённому тексту.

json
{
  "error": {
    "message": "…",
    "type": "invalid_request_error",
    "code": "unsupported_media",
    "param": "messages"
  }
}
ГруппаКоды
Исправить запросinvalid_json, invalid_request, invalid_parameter, unsupported_media, unsupported_parameter, unsupported_tool, model_not_found
Повторить с паузойclient_key_rate_limit, glm_queue_timeout, glm_rate_limit, glm_unavailable
Продолжение Responsesresponse_not_found, response_account_unavailable
Нарушенный ответglm_invalid_response, glm_invalid_stream, glm_count_unavailable

Полная таблица действий, включая 10-секундную очередь, Retry-After, вложения и previous_response_id, находится на странице GLM: ошибки и границы.

Коды Gemini

Ошибки Gemini приходят в той же оболочке, что у остальных семейств: ветвитесь по HTTP-статусу и error.code, а не по тексту. В Chat Completions и Responses error.param называет поле, когда оно известно; в Messages оно всегда null. Запрос, отклонённый до обращения к модели, не оплачивается.

error.codeСтатусЧто значитЧто делать
invalid_json, invalid_request400тело не JSON или поле негодное, в том числе уровень размышлений, которого у модели нет; имя поля в paramисправьте тело запроса
model_not_found404такой модели нет в каталогевозьмите id из GET /v1/models: gemini-4-argon или gemini-3.8-flash
gemini_parameter_unsupported400поле, которого Gemini не поддерживает; в param — объект с этим полем, для поля верхнего уровня — "request"уберите поле
gemini_unsupported_content, gemini_media_unsupported400Gemini принимает текст, изображения и PDF; аудио, видео и другие файлы нетуберите вложение или передайте его содержимое текстом
gemini_invalid_media, gemini_inline_media_required400вложение негодное: ссылка не https или с логином, повреждённый base64; в Messages источник не base64 и не ссылка; ссылка на картинку в результате функциипередайте вложение base64 или открытой ссылкой https; в результате функции — base64
gemini_tool_result_media_unsupported400в результате функции вложение не PNG, JPEG, WEBP или PDFпередайте результат текстом или в одном из этих форматов
gemini_tool_unsupported400инструмент, кроме функций и поиска, например отдельная загрузка страниц web_fetchоставьте функции и встроенный поиск
gemini_search_options_unsupported400настройка поиска, которой у Gemini нет: список доменов, max_tool_calls и другие поляоставьте у поиска только type, name и max_uses
gemini_tool_choice_unsupported400обязательный вызов или вызов конкретной функции вместе с поиском, либо обязательный вызов без функцийразделите запрос или уберите обязательный вызов
gemini_strict_tools_unsupported, gemini_parallel_limit_unsupported400strict: true у функции или запрет параллельных вызововуберите поле
invalid_tool_structure400одинаковые имена функций, tool_choice с функцией не из списка, аргументы вызова не JSON или вызов функции не в сообщении ассистентаисправьте список функций или историю вызовов
gemini_thinking_unsupported400форма размышлений, которой Gemini не принимает: budget_tokens, другие поля thinking или reasoning, reasoning.summary кроме "auto"используйте thinking: {"type": "adaptive"}, а уровень задайте полем уровня из страницы модели
invalid_request с param: "background"400фоновое выполнение Responses не поддерживаетсяуберите background
gemini_history_required400поле conversation Gemini не принимаетпередайте историю в input или продолжайте через previous_response_id
gemini_history_mismatch, gemini_native_history_invalid, gemini_history_not_found400 / 404история не совпадает с сохранённой, сохранённая история вызова функции не подходит к запросу, или ответ для previous_response_id не найден либо старше 30 днейотправьте историю диалога целиком
gemini_rejected400Gemini не принял запроспроверьте поля запроса и историю диалога
policy_refusal400Google отклонил запрос или ответ по своим правилам: блокировка, безопасность, совпадение с защищённым текстом. Этот код приходит только без потока: в потоке до начала ответа приходит 502 gemini_invalid_stream, после начала — кадр gemini_stream_errorизмените формулировку
api_key_paused403ключ или это семейство приостановлены в настройках ключавозобновите ключ или включите семейство в настройках ключа в личном кабинете
insufficient_credit, request_reserve_exceeds_credit402баланс ключа исчерпан или его не хватает на резерв запросапополните ключ в боте или уменьшите max_tokens
client_key_rate_limit, gemini_rate_limited429слишком часто с одного ключа или Gemini временно ограничил число запросовповторите через Retry-After
gemini_quota_exhausted429квота этой модели исчерпанаповторите после сброса лимита (время в Retry-After) или выберите другую модель
gemini_unavailable, service_unavailable503свободного аккаунта сейчас нет или Gemini временно недоступенповторите с экспоненциальной задержкой
gemini_not_connected503модели Gemini пока не подключеныповторите позже или выберите модель другого семейства
gemini_settings_unavailable, gemini_billing_unavailable, gemini_history_unavailable503временно недоступны настройки, учёт или хранилище историиповторите через несколько секунд
gemini_invalid_response, gemini_invalid_stream, gemini_invalid_usage, gemini_incomplete_response, gemini_incomplete_stream, gemini_empty_response, gemini_generation_failed, gemini_unsupported_output, gemini_partial_function_call_unsupported, gemini_invalid_json_value, gemini_upstream_error502ответ Gemini пришёл неполным или негоднымновый запрос допустим, если приложение исключает двойное выполнение побочного действия
gemini_stream_errorв потокепоток прерван после начала ответа. Внутренние сбои разбора потока Google (gemini_stream_event_too_large, gemini_stream_already_finished) приходят этим кадром, а до начала ответа — как 502 gemini_invalid_streamдоставленная часть остаётся у клиента; повторите запрос

Коды Muse

Ошибки Muse приходят в той же оболочке, что у остальных семейств: ветвитесь по HTTP-статусу и error.code, а не по тексту. В Chat Completions и Responses error.param называет поле, когда оно известно; в Messages оно всегда null. Запрос, отклонённый до обращения к модели, не оплачивается.

error.codeСтатусЧто значитЧто делать
invalid_json, invalid_request400тело не JSON, поле негодное или Meta отклонила параметры запросаисправьте тело запроса
invalid_parameter, invalid_messages, invalid_input, invalid_stream, invalid_stream_options, invalid_tools, invalid_previous_response_id400значение поля негодное, например уровень none или store не логическое; имя поля в paramисправьте поле
unsupported_parameter400поле, которого Muse не поддерживает: отдельный web_fetch, ограничение доменов поиска, фоновое выполнение Responses, подсчёт токенов с previous_response_idуберите поле; для подсчёта передайте историю в input
unsupported_media400Muse принимает текст, изображения и PDF; видео, аудио и другие файлы нетуберите вложение или передайте его содержимое текстом
unsupported_tool400инструменты MCP на стороне поставщика через Guard недоступныуберите инструмент или исполняйте его как клиентскую функцию
model_not_found404такой модели нет в каталогевозьмите id из GET /v1/models
response_not_found404ответа для previous_response_id нет у этого ключа или он создан с store: falseпередайте историю в input
response_account_unavailable409продолжение временно недоступно на аккаунте, где сохранён ответповторите позже или передайте историю в input
api_key_paused403ключ или это семейство приостановлены в настройках ключавозобновите ключ или включите семейство в настройках ключа в личном кабинете
insufficient_credit, request_reserve_exceeds_credit402баланс ключа исчерпан или его не хватает на резерв запросапополните ключ в боте или уменьшите max_tokens
client_key_rate_limit, muse_rate_limit, muse_queue_timeout429слишком часто с одного ключа или все слоты Muse занятыповторите через Retry-After
muse_unavailable, muse_pool_unavailable503Muse временно недоступенповторите с экспоненциальной задержкой
muse_not_connected503модели Muse пока не подключеныповторите позже или выберите модель другого семейства
muse_prompt_unavailable, muse_state_unavailable, muse_billing_unavailable503временно недоступны настройки, состояние ответа или учётповторите через несколько секунд
muse_prompt_model_invalid503применённая настройка Muse содержит недопустимое изменение запросане повторяйте то же тело циклически; передайте код в поддержку
muse_invalid_response, muse_invalid_stream502ответ Meta пришёл неполнымновый запрос допустим, если приложение исключает двойное выполнение побочного действия
muse_stream_errorв потокепоток прерван после начала ответадоставленная часть остаётся у клиента; повторите запрос

Разделы

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