Перейти к основному содержанию

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

Большинство ответов с ошибкой используют этот OpenAI-совместимый JSON-формат:
{
  "error": {
    "message": "Descriptive error message",
    "type": "orcarouter_api_error",
    "code": "model_not_found"
  }
}
type — это широкая категория, code — конкретный идентификатор. Некоторые сбои «быстрого пути» (особенно 429 на уровне рабочего пространства) возвращают только код HTTP-статуса с соответствующими заголовками и без тела JSON.

Коды HTTP-статуса

СтатусЗначениеТипичная причина
400Bad requestНекорректные параметры, отсутствуют обязательные поля, нарушение схемы
401UnauthorizedОтсутствует или некорректен API-ключ
403ForbiddenНедостаточно квоты или ключ не может вызвать эту модель
404Not foundМодель или эндпоинт не существует
429Too many requestsДостигнут лимит запросов — см. Лимиты запросов. Ответ всегда содержит заголовок Retry-After.
500Internal errorОшибка на стороне OrcaRouter
502Upstream errorВсе апстрим-провайдеры завершились ошибкой (включая любую цепочку резервирования)
503Service unavailableЗапрошенная модель временно недоступна на стороне апстрима

Типы ошибок, которые вы можете увидеть в error.type

error.typeОткуда поступает
orcarouter_api_errorСбои на стороне шлюза (аутентификация, квота, лимит, внутренние)
upstream_errorАпстрим-провайдер вернул ошибку или истёк таймаут
openai_errorОшибка OpenAI-совместимого апстрима, переданная как есть
claude_errorОшибка апстрима Anthropic, переданная как есть
gemini_errorОшибка апстрима Gemini, переданная как есть

Коды ошибок, которые вы можете увидеть в error.code

Это коды, выдаваемые шлюзом для сбоев, возникающих в OrcaRouter (а не в апстриме):
error.codeHTTPЗначение
insufficient_user_quota403Кредит аккаунта исчерпан. Пополните.
model_not_found503Эта модель недоступна для вашего аккаунта.
model_price_error400Тарификация для этой модели не настроена. Обратитесь в поддержку.
api_not_implemented400Эндпоинт или операция не поддерживаются для выбранной модели.
bad_request_body400Не удалось разобрать тело запроса.
prompt_blocked400Политика безопасности провайдера заблокировала промпт до генерации.
sensitive_words_detected400Фильтр чувствительного контента отклонил промпт.
Если вам нужно различать программно, сначала сопоставляйте по error.code (специфично), а затем — по error.type (широкая категория).

Ошибки при стриминге

Ошибки во время потокового ответа не могут использовать коды HTTP-статуса (статус был отправлен при открытии потока). Формат зависит от эндпоинта:

/v1/chat/completions и /v1/responses (OpenAI-совместимые)

Ошибка приходит как in-band фрагмент data: {...}:
data: {"error":{"message":"...","type":"upstream_error","code":""}}

data: [DONE]
Разбирайте каждый фрагмент data: как JSON; если в нём есть поле error, считайте поток неудачным.

/v1/messages (Anthropic-совместимый)

Anthropic использует именованные SSE-события. Сбой потока приходит как:
event: error
data: {"type":"error","error":{"type":"overloaded_error","message":"..."}}
Поток завершается событием event: message_stop (или обрывается) после события ошибки.

Ошибки резервирования

Когда установлен extra_body.models и все модели в цепочке завершаются ошибкой, вы получаете 502 с подробностями о последней ошибке апстрима. Заголовки ответа X-Orca-Fallback-Level и X-Orca-Fallback-Model указывают, какая резервная модель пробовалась, когда цепочка была исчерпана. См. Заголовки ответа.