Skip to Content
Коды ошибок

Коды ошибок

Единый envelope:

{ "error": "insufficient_balance", "message": "Not enough credits", "required": 12, "available": 5, "recovery": { "action": "topup", "url": "/billing/topup", "minAmountRub": 100 }, "docs": "/llms-full.txt#billing" }

Ветвите по error (стабильный machine-readable). message — для человека (может меняться). Дополнительные поля (required, available, recovery, docs) зависят от ошибки.

Сводная таблица

СтатусКодКогдаЧто делать
400invalid_bodyНе прошёл zodСм. details.issues
400invalid_queryQuery-параметр невалиденСм. details.issues
400invalid_paramsPath-параметр невалиден
400invalid_jsonТело не парситсяПроверьте Content-Type
400minimum_topup< MIN_TOPUP_RUBУвеличьте amountRub
401unauthorizedНет валидного authСоздайте новый ключ
401invalid_signatureПодпись YooKassa webhook невалидна(внутренний server-to-server callback)
402insufficient_balanceСредств на балансе меньшеПополните баланс; поля required и available
403forbiddenНет прав
403forbiddenДействие доступно только в дашбордеСделайте действие в дашборде
404not_foundРесурс не существует или не ваш(IDOR-guard, не различаются)
404unknown_modelОпечатка в modelIdGET /models
409conflictУникальный ключ занят
413asset_too_largeФайл > MAX_UPLOAD_BYTESСожмите
413payload_too_largeТело > MAX_BODY_BYTES
415unsupported_media_typeContent-Type не allowlist
415unsupported_media_type(Uploads) MIME не allowlistСм. allowed list в /build/upload-inputs
429rate_limitedIP/user/key лимитRetry-After
429key_limit_exceededМесячный лимит ключаПоднимите через PATCH /me/keys/{id}
500internal_errorНепредвиденноПередайте X-Request-ID команде
500generation_failedВнутренняя фатальная ошибкаRefund автоматический
502provider_errorВнутренняя ошибка обработкиПовторите
502payment_providerYooKassaПовторите
503provider_errorRetry-After)Circuit breaker открытПодождите и повторите
503asset_storage_disabled(Uploads) S3 не настроенТолько в local-dev
504timeoutSync /run истёк за 5 минСм. 202 ответ — requestId для /queue

Формат ошибки валидации

{ "error": "invalid_body", "message": "Validation failed", "issues": [ { "path": ["prompt"], "message": "Required" }, { "path": ["num_inference_steps"], "message": "Must be ≤ 50" } ] }

Недостаток средств

{ "error": "insufficient_balance", "message": "Not enough credits", "required": 12, "available": 5 }

Используйте required - available для UI-сообщения “не хватает 7 ₽”.

Превышение лимита

HTTP/1.1 429 Too Many Requests Retry-After: 47 X-RateLimit-Limit: 100 X-RateLimit-Remaining: 0 X-RateLimit-Reset: 1714050300 {"error":"rate_limited","message":"Too many requests"}

X-Request-ID

В каждом ответе:

X-Request-ID: 01HXYZ…

Передайте этот ID в support — по нему достанем полный лог.

Дальше