ЦАРЬ РОУТЕР

Список ошибок

Справочник ошибок API Царь Роутера - HTTP-коды, типы и сообщения, которые может вернуть /v1, с пояснениями на русском

Все ошибки /v1 возвращаются в OpenAI-совместимом формате:

{"error": {"message": "...", "type": "...", "param": null, "code": "..."}}

Поля устроены механически, поэтому их не нужно запоминать по каждой ошибке:

  • type однозначно выводится из HTTP-кода: 400 → invalid_request_error, 401 → authentication_error, 402 → insufficient_quota, 403 → permission_error, 404 → not_found_error, 429 → rate_limit_error, 500/502/503 → server_error, прочие (413, 422) → api_error. В таблицах ниже колонка type опущена - смотрите на HTTP-код.
  • code - HTTP-код строкой ("400", "429", …). Исключение: ошибки валидации тела запроса приходят с code: "invalid_value".
  • param практически всегда null; у ошибок валидации тела (invalid_value) поля param нет вовсе.
  • Сам API код 504 не отдаёт: таймауты провайдеров превращаются в 502/503. Единственный источник 504 - транспортный слой, если ответ на /v1/ висит дольше 600 секунд.

В сообщениях ниже {в фигурных скобках} - подставляемые значения.

Общие ошибки - любой эндпоинт /v1

Авторизация

codemessageОписание
401Invalid API keyНеверный или несуществующий API-ключ. Проверьте Bearer-токен.
401API key not foundКлюч был удалён или деактивирован в момент обработки запроса.
401API key has expiredИстёк срок действия ключа.
401Not authenticatedЗаголовок Authorization: Bearer <key> отсутствует или пустой.
403API key is disabled. Enable it in the dashboard to resume use.Ключ заморожен владельцем в личном кабинете. Включите его в дашборде.

Баланс и бюджет ключа

codemessageОписание
402Account balance too low: {balance} ₽ available, minimum 1 ₽ required. Add funds to your account.На счёте меньше 1 ₽. Пополните баланс.
402Insufficient balance for this request: estimated up to {est} ₽, available {balance} ₽. Add funds and retry.Баланса не хватит на данный запрос. Пополните и повторите.
402API key budget limit reached: {spent} of {limit} ₽ spent. Increase this key's limit in the dashboard or use another key.Исчерпан денежный лимит самого ключа (не баланс аккаунта). Поднимите лимит ключа или используйте другой.

Частотные лимиты

Все ответы 429 - rate_limit_error; несут заголовки Retry-After (секунды до сброса окна; у лимита одновременных потоков - фиксированные 5 с) и x-ratelimit-*, а к сообщению добавляется Retry after {n} seconds. Подробнее о самих лимитах - в разделе Лимиты.

codemessageОписание
429Rate limit exceeded: {N} requests/minute.Базовый минутный лимит ключа.
429Rate limit exceeded for {type} models: {N} requests/minute.Минутный лимит уровня на данный тип моделей.
429Rate limit for free models exceeded: {N} requests/minute.Минутный лимит запросов к бесплатным моделям.
429Daily cap for free models reached: {N} requests/day, resets at midnight Europe/Moscow.Суточный лимит бесплатных моделей; счётчик сбрасывается в полночь по Москве.
429Rate limit exceeded: {N} requests/minute for this endpoint.Лимит справочных эндпоинтов: GET /v1/models, /v1/key, /v1/stats.

Отдельный транспортный случай: при потоке заметно чаще ~30 запросов в секунду с одного IP ответ 429 отдаёт nginx HTML-страницей - без OpenAI-конверта и без Retry-After (аналогично HTML-413 из таблицы ниже). Снизьте частоту запросов с одного адреса.

Модель не найдена

Одна схема на все типы моделей: модели с таким ID нет в каталоге, или она не относится к типу эндпоинта.

codemessageОписание
400{Тип} model '{model}' not found. Available: {список}Все специализированные эндпоинты. Префикс {Тип} соответствует эндпоинту: Embedding (/v1/embeddings), Reranker (/v1/rerank), Image (/v1/images/generations), Image enhancement (/v1/images/enhance), Classification (/v1/classify), Speech (/v1/audio/speech), STT (/v1/audio/transcriptions - без списка Available и без точки на конце), Sentiment (/v1/audio/sentiment), AI-check (/v1/ai/check).
400Model '{model}' not found. Use GET /v1/models to list available models./v1/chat/completions.
404Model '{model}' not foundGET /v1/models/{id}: запрос модели по ID, которого нет в каталоге.

Валидация тела запроса

codemessageОписание
400{источник} -> {поле}: {текст ошибки}Невалидное тело запроса: нет обязательного поля или неверный тип. Несколько ошибок склеиваются через ;. У этих ответов code: "invalid_value". Пример: body -> messages: List should have at least 1 item after validation, not 0.

Доступность модели и провайдеров

codemessageОписание
4xxRequest for model '{model}' was rejected by the provider. Please verify your request parameters.Провайдер отверг запрос как невалидный; HTTP-код наследуется от провайдера. Обычно в message приходит текст самого провайдера; показанный шаблон - резервный, когда текста нет. В чате возможен краткий вариант Request rejected by the provider.
502All providers for '{model}' are currently unavailable. Retry shortly or contact support if it persists./v1/embeddings, /v1/rerank, /v1/images/generations, /v1/chat/completions без fallback-цепочки: все провайдеры недоступны.
502All providers failed for model chain [{модели}]/v1/chat/completions с fallback-цепочкой или стримингом: все маршруты недоступны. Повторите позже или смените модель.
503No provider available for '{model}'. All providers are currently unavailable. Retry shortly or contact support if it persists./v1/ai/check, /v1/images/enhance, /v1/classify, синтез, распознавание и тональность речи: все провайдеры недоступны.
503Model '{model}' temporarily unavailable: pricing not configured. Contact support.У модели временно не настроен тариф. Повторите позже или обратитесь в поддержку.
503Model '{model}' is temporarily disabled for maintenance.Модель временно отключена на обслуживание. Выберите другую или повторите позже.

Стриминг (stream: true)

codemessageОписание
402Insufficient balance to start streaming: required {hold} ₽, available {balance} ₽. Add funds or use another key.Баланса не хватит при старте потокового ответа.
429Concurrent stream limit reached: {N} simultaneous streams. Wait for a running stream to finish and retry.Лимит одновременных потоков уровня (см. Лимиты).

Ошибка до первого чанка приходит обычным JSON-конвертом. Если сбой случился после первого чанка (HTTP 200 уже отправлен) - поток обрывается без завершающего [DONE] и без error-чанка. Отсутствие [DONE] - признак оборванного ответа.

Валидация параметров эндпоинтов

ЭндпоинтcodemessageОписание
/v1/images/generations400Parameter 'prompt' is required for image generation.Пустой prompt.
/v1/images/generations400Only n=1 is supported: one image per request.Одна картинка за запрос.
/v1/images/generations400Prompt too long: maximum {max} characters, got {n}.Слишком длинный промпт.
/v1/images/enhance400Parameter 'image' is required (empty file).Передан пустой файл изображения.
/v1/images/enhance400Only JPEG and PNG images are supported.Поддерживаются только JPEG и PNG.
/v1/images/enhance400Parameter 'rfactor' must be 2 or 4.Коэффициент апскейла только 2 или 4.
/v1/images/enhance400Parameter 'rtype' must be 'photo' or 'art'.Тип апскейла только photo или art.
/v1/images/enhance413Image too large: maximum {N} MB, got {x} MB.Файл больше 10 МБ; type: api_error. На практике такой файл обычно отсекает nginx ещё раньше - тогда придёт HTML-413 (строка ниже), а не JSON.
/v1/classify400Parameter 'text' is required for classification.Пустой text.
/v1/classify400Provide between 2 and 20 labels, got {n}.Нужно от 2 до 20 меток.
/v1/audio/speech400Parameter 'input' is required for speech synthesis.Пустой input.
/v1/audio/speech400Input too long: maximum {max} characters, got {n}.Лимит 5000 символов.
/v1/audio/transcriptions400Файл больше лимита модели '{model}': {x} МБ > {N} МБ.Размер файла сверх лимита выбранной модели (у каждой свой: Yandex async - 60 МБ, T-Bank - 32, VK - 20, Yandex sync - 1; см. карточку модели).
/v1/audio/transcriptions400Аудио длиннее лимита модели '{model}': {n} с > {N} с.Длительность записи сверх лимита модели (напр. Yandex sync - 30 с, Yandex async - 40 мин, VK - 5 мин).
/v1/audio/transcriptions400Параметр 'roles' доступен только вместе с diarize=true.Разметку ролей говорящих (Nexara) можно запросить только при включённой диаризации diarize=true.
любой413- (HTML nginx)Тело запроса больше транспортного лимита: 60 МБ для /v1/audio/transcriptions, 10 МБ для остальных эндпоинтов. Ответ отдаёт nginx без JSON-тела.
/v1/ai/check400Text too short: AI-content detection requires at least {min} words, got {n}.Текст слишком короткий для детекции.
/v1/ai/check400This detector supports Russian text only (>=50% Cyrillic), got {x}%.Детектор работает только с русским текстом.

Распознавание речи: форматы аудио

/v1/audio/transcriptions; все ошибки ниже - 400 invalid_request_error.

Модельmessage
yandex/speech-to-textyandex/speech-to-text (синхронный) не принимает MP3 — только WAV (PCM) и OGG/Opus. Для MP3 используйте yandex/speech-to-text-async.
yandex/speech-to-textНекорректный WAV-файл (ожидается PCM).
yandex/speech-to-textyandex/speech-to-text принимает только моно (1 канал). Для многоканального аудио используйте yandex/speech-to-text-async.
yandex/speech-to-textWAV должен быть 16-бит PCM (LINEAR16).
yandex/speech-to-textЧастота дискретизации {rate} Гц не поддерживается (допустимо: {список}).
yandex/speech-to-textНеизвестный формат аудио: yandex/speech-to-text принимает WAV (PCM) и OGG/Opus.
yandex/speech-to-textyandex/speech-to-text (синхронный) принимает до 1 МБ аудио (WAV считается по PCM-данным). Для длинных записей используйте yandex/speech-to-text-async.
yandex/speech-to-text-asyncНеизвестный формат аудио: yandex/speech-to-text-async принимает MP3, WAV и OGG/Opus.
yandex/speech-to-text-asyncАудио с {n} каналами не поддерживается — максимум 2 (моно или стерео).
обе модели YandexYandex STT: {сообщение провайдера} - проброс ошибки входных данных от Яндекса (например, битый файл).
tbank/speech-to-textInvalid MP3: could not determine sample rate and channels. - битый MP3; пришлите корректный MP3 или WAV (PCM).
tbank/speech-to-textUnsupported audio format. Use WAV (PCM) or MP3.

Потоковое распознавание речи (WebSocket)

/v1/realtime/transcriptions - WebSocket-эндпоинт (формат событий OpenAI Realtime transcription). Ошибки приходят двумя способами:

1. Отказ на этапе подключения (handshake). Неверный или отсутствующий API-ключ - соединение отклоняется с HTTP 403 ещё до установки WebSocket.

2. Событие error + код закрытия. Внутри сессии сервер шлёт событие {"type": "error", "error": {"code": ..., "message": ...}}; фатальные ошибки дополнительно закрывают соединение со стабильным close-кодом:

close-кодcodeОписание
4001invalid_api_keyКлюч не прошёл проверку уже после подключения (например, отключён владельцем).
4002model_not_foundМодель не задана, не существует или не поддерживает потоковое распознавание.
4003insufficient_balanceБаланса не хватает даже на минимальную сессию. Пополните счёт.
4004unsupported_audio_formatФормат аудио не поддерживается: нужен audio/pcm (PCM16LE), частота из списка 8000, 16000, 22050, 32000, 44100, 48000 Гц.
4008session_limit_exceededИсчерпан лимит аудио-секунд или общей длительности сессии (см. Лимиты). Откройте новую сессию.
4009idle_timeoutНет сообщений от клиента дольше таймаута бездействия - сессия закрыта.
4010concurrent_session_limitДостигнут лимит одновременных потоковых сессий вашего уровня.
4029rate_limit_exceededСлишком частые открытия сессий (rpm-лимит типа).
1011upstream_errorСбой провайдера распознавания. Повторите попытку.
1013model_disabledМодель временно отключена на обслуживание.

Нефатальные ошибки (сессия продолжает работать, приходит только событие error):

codeОписание
model_not_setАудио прислано до выбора модели (?model= или session.update).
input_audio_buffer_commit_emptycommit без аудио в буфере.
commit_too_shortcommit фразы короче минимума - продолжайте слать аудио перед commit.
audio_chunk_too_largeСлишком большой чанк в одном append - шлите короче (~200 мс).
clear_not_supportedinput_audio_buffer.clear не поддерживается - аудио уходит в распознавание сразу.
format_locked / model_lockedФормат/модель нельзя менять после начала передачи аудио.
invalid_audio / invalid_jsonaudio не base64 / событие не JSON.
empty_audioappend с пустым audio - пришлите байты PCM16LE.
invalid_payload / unknown_eventПрислан бинарный фрейм вместо JSON / неизвестный тип события.

Ошибки моделей

codemessageОписание
400Invalid image input: {детали}Распознавание (OCR Yandex) и зрение (VK) в чате: изображение нужно передавать как base64 data URI (JPEG/PNG).
400Unknown VK Cloud model: {model}Неизвестная VK Cloud Vision-модель.
400VK Cloud enhance error: {детали}VK (обработка фото): ошибка параметров обработки изображения.
422текст причины от моделиKandinsky (GigaChat) сгенерировал отказ по контент-политике при генерации изображения. ⚠️ Запрос тарифицируется. Измените промпт. type: api_error.
502VK Cloud Vision error: {детали}Сбой обработки на стороне VK (зрение / апскейл / реставрация). Дословно доходит при стриминге или fallback-цепочке чата; в остальных случаях превращается в общие 502/503 из раздела «Доступность».

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

Редактировать на GitVerse