Ошибки
Каждая ошибка от эндпоинтов Video API использует одну и ту же JSON-форму:
{
"error": {
"code": "...",
"message": "..."
}
}HTTP-статус сообщает класс проблемы; error.code — стабильная строка, по которой можно ветвить код. Всегда сопоставляйте по error.code, а не парсите error.message.
Коды ошибок
references_conflict и too_many_references — ошибки валидации body запроса; точные лимиты см. в Создании видео. cancel_not_supported и cancel_failed описаны в Отмене видео. not_found возвращается и для неизвестной задачи, и для задачи, принадлежащей другому API key; эти два случая намеренно неразличимы.
Ошибки предобработки real_person
Если предобработка изображения с real_person: true завершается ошибкой из-за переданного изображения, API возвращает HTTP 400 с error.code: "invalid_request". В конце error.message указан один из следующих стабильных кодов причины и позиция ошибочного референса, например input_references[0]:
{
"error": {
"code": "invalid_request",
"message": "real_person image processing failed — input_references[0]: ... (not_image)"
}
}В логике приложения продолжайте ветвление по error.code. Код причины и позицию референса используйте для исправления входных данных или диагностики.
402 Недостаточно кредитов
insufficient_credits возвращается только при создании задачи (POST /v1/videos). Когда предварительная авторизация включена, ofox до принятия задачи оценивает стоимость по запрошенным разрешению и длительности. Если оценка превышает ваш баланс, запрос сразу отклоняется — запись о задаче не создается и списаний нет.
{ "error": { "code": "insufficient_credits", "message": "..." } }insufficient_credits — единственный код 402, который возвращает Video API. Обработайте этот один код, пополните баланс и повторите попытку.
429 Лимит запросов
rate_limited покрывает как лимит опроса на ключ для GET /v1/videos/{id}, так и upstream-лимиты. Когда вы достигаете лимита опроса, ответ содержит заголовок Retry-After:
HTTP/1.1 429 Too Many Requests
Retry-After: 1
Content-Type: application/json
{ "error": { "code": "rate_limited", "message": "..." } }Учитывайте заголовок Retry-After и сделайте паузу перед повтором. Если вы часто опрашиваете, переключитесь на webhook-уведомления, чтобы ofox сам отправлял вам конечное состояние — это полностью обходит лимит опроса. Создание задачи (POST) и отмена (DELETE) не затрагиваются лимитом опроса.