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

Документация / Использование

Лимиты и ошибки

Формат ошибок API, коды и что делать при каждом из них.

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

Ошибки — в формате OpenRouter: HTTP-статус числом, текст и подробности (или null).

{
  "error": {
    "code": 400,
    "message": "Unknown model: 'vendor/x'.",
    "metadata": {
      "param": "model"
    }
  }
}

metadata.param — параметр запроса, из-за которого отказ; metadata.reasons — причины модерации; metadata.provider_message — текст провайдера, когда он отклонил запрос.

Коды

  • 400Неверный запрос или его стоимость нельзя ограничить заранее. Ничего не списано; причина — в тексте и metadata.param.
  • 401Нет ключа, ключ неверный или отозван.
  • 402Баланса не хватает на резерв запроса. Пополните баланс.
  • 403Вход помечен модерацией; причины — в metadata.reasons. Повтор с тем же входом бессмыслен.
  • 404Нет такого пути или объекта (например, задачи видео другого аккаунта). Или провайдер не нашёл модель — тогда его текст в metadata.provider_message.
  • 405Метод не подходит пути; допустимые — в заголовке Allow.
  • 409Видео ещё генерируется.
  • 410Видео сгенерировано, но провайдер его больше не хранит.
  • 413, 422Провайдер отклонил запрос: слишком большой или с неверным аргументом. Его текст — в metadata.provider_message.
  • 429Слишком много запросов или провайдер перегружен. Подождите Retry-After, если он есть.
  • 502Провайдер модели недоступен или вернул ошибку, ответ провайдера не удалось однозначно разобрать, временно недоступны цены моделей или хранилище задач видео. Повторите позже.
  • 503Не удалось записать списание или его исход, либо провайдер отказал по причинам на нашей стороне. Повторите позже.

При сбоях

  • Ответ провайдера с ошибкой переводится: 400, 404, 413 и 422 — тот же статус с metadata.provider_message (ключи и токены известных форматов из текста вырезаются); 401, 402 и 403 без признаков модерации — наша сторона, клиенту 503; модерация входа — 403 с metadata.reasons; 408 и 429 — 429 с Retry-After в секундах (не больше часа), если провайдер его прислал; 5xx — 502.
  • Если списание или его исход не удалось записать, обычный ответ заменяется на 503, а стрим завершается строкой ошибки без data: [DONE].
  • Не повторяйте платный запрос вслепую при неизвестном исходе: проверьте его в кабинете.
  • Состояние сервиса — на странице статуса.