Ошибки
API errors возвращают JSON с единым объектом error.
json
{
"error": {
"message": "Invalid request body",
"type": "invalid_request_error",
"code": "Bad Request"
}
}Некоторые ошибки также включают error_id для support и log correlation.
Используй Error Resolver, если нужно классифицировать raw status/body. В админке rout.my можно настраивать Error Templates, чтобы повторяющиеся upstream ошибки провайдеров превращались в безопасные user-facing messages.
Status codes
| Status | Значение | Что проверить |
|---|---|---|
400 | Неверное тело запроса, отсутствующее поле, неподдерживаемый параметр или policy-blocked prompt. | JSON и обязательные поля. |
401 | Нет API key или ключ неверный. | Authorization header или compatible auth field. |
403 | Ключ валиден, но модель недоступна аккаунту. | Используйте доступный model ID или обновите доступ. |
404 | Неверный path или неизвестная модель. | Endpoint URL и точный model ID из /v1/models. |
405 | Method not allowed. | Используйте documented HTTP method. |
429 | Rate limit или quota exhausted. | Подождите, уменьшите запрос или проверьте quota. |
499 | Клиент закрыл соединение до завершения. | Держите connection открытым; для video используйте длиннее timeout. |
500 | Internal server error. | Повторите позже или передайте детали в support. |
502 | Upstream provider failed или ни один provider не сработал. | Повторите запрос или используйте другой доступный model. |
503 | Временная service или quota backend issue. | Повторите с backoff. |
Retry behavior
Transient statuses повторяйте с exponential backoff:
| Retry? | Status |
|---|---|
| Да | 429, 500, 502, 503 |
| Нет | 400, 401, 403, 404, 405 |
Добавляйте jitter, чтобы много клиентов не повторяли запрос в один момент.
python
import random
import time
def sleep_before_retry(attempt):
delay = min(30, (2 ** attempt) + random.random())
time.sleep(delay)Long-running requests
Video generation может выполняться несколько минут. Настройте clients и reverse proxies с достаточно длинными timeouts. Для curl:
bash
curl --max-time 900 ...