Skip to content

Обработка ошибок

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

json
{
  "error": {
    "message": "Insufficient balance",
    "type": "insufficient_balance",
    "code": "insufficient_balance"
  }
}

Коды

HTTPtypeКогда возникает
400invalid_request_errorНеверные параметры, неподдерживаемая модель
401authentication_errorНет/неверный ключ
402insufficient_balanceНа балансе аккаунта < 0 ₽
403model_not_allowedМодель не разрешена для этого ключа
404model_not_foundМодели нет в каталоге
409idempotency_conflictПовторный платёж с тем же Idempotency-Key
413payload_too_largeЗапрос > 10 MB
422unprocessable_entityВалидация payload не прошла
429rate_limit_exceededПревышен RPM/TPM ключа или upstream
500internal_server_errorВнутренняя ошибка шлюза
502upstream_errorOpenRouter/провайдер вернул ошибку и фоллбэк не помог
503service_unavailableLiteLLM/Postgres/Redis недоступны
504upstream_timeoutПровайдер не ответил в течение timeout

Что делать

  • 401 / 402 — проверить ключ и баланс в кабинете. Пополнить, чтобы автоматически разблокировать ключи.
  • 429 — подождать Retry-After секунд, добавить экспоненциальный backoff.
  • 502 / 504 — повторить запрос (шлюз уже сделал num_retries: 3, но бывают долгие провайдерские штормы).
  • 5xx подряд — пишите в поддержку с x-llmgw-request-id из заголовков.

Идемпотентность

Для запросов на оплату передавайте Idempotency-Key (UUID), чтобы повтор не списал деньги дважды.

Журнал ошибок

Каждая ошибка логируется с request_id, который виден в заголовках ответа (x-llmgw-request-id). Это id хранится 30 дней — указывайте его в обращениях.

© llmgw