Получение статуса видео
GET https://api.ofox.ai/v1/videos/{id}Запрашивает статус и результат задачи. После того как вы создали задачу, опрашивайте этот эндпоинт, пока status не достигнет конечного состояния — completed, failed, cancelled или expired.
curl https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718 \
-H "Authorization: Bearer $OFOX_API_KEY"Лимит запросов
На этот эндпоинт действует лимит запросов на API key (по умолчанию 5 req/s с burst 20). Запросы сверх лимита возвращают 429 rate_limited с заголовком Retry-After: 1. Создание (POST) и отмена (DELETE) не подпадают под этот лимит.
Опрашивайте не чаще одного раза в секунду или передайте callback_url при создании задачи, чтобы получить webhook вместо опроса.
Ответ
Completed
{
"id": "9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718",
"status": "completed",
"model": "google/veo-3.1",
"prompt": "A golden retriever running on the beach at sunset",
"unsigned_urls": ["https://upstream.example/out.mp4"],
"mirror_urls": ["https://cdn.ofox.ai/videos/vgen_xxx.mp4?sig=..."],
"usage": {
"video_seconds": 5,
"video_cost": "0.4000000000"
},
"created_at": 1776211362,
"updated_at": 1776211400
}Таймаут возвращается как status: "failed" с error.code, установленным в expired. Полный список кодов ошибок см. в Кодах ошибок.
Объект Video
| Поле | Тип | Описание |
|---|---|---|
id | string | Уникальный идентификатор задачи (UUID) |
status | enum | См. Автомат статусов |
model | string | Model slug |
prompt | string | Исходный prompt |
unsigned_urls | string[] | Присутствует при completed. Исходный URL видео от upstream (временный, может истечь через 24h) |
mirror_urls | string[] | Присутствует при completed, если у провайдера модели включено CDN-зеркалирование. Постоянный подписанный URL — см. URL видео |
error | object | Присутствует при failed: {code, message} |
usage | object | Присутствует при completed: {video_seconds, video_cost}. video_seconds — оплачиваемые секунды (включая входные секунды v2v); video_cost — фактическое списание по цене уровня платформы, строка fixed-point с 10 десятичными знаками (избегает потери точности) |
created_at / updated_at | integer | Unix seconds |
Автомат статусов
Семь состояний, основанных на именовании OpenRouter и расширенных cancelled / expired.
| Status | Terminal | Описание |
|---|---|---|
pending | — | Принята, еще не отправлена upstream |
queued | — | Отправлена upstream, ожидает в очереди |
in_progress | — | Генерируется upstream |
completed | ✓ | Успех, URL видео доступны |
failed | ✓ | Ошибка (включая таймаут, error.code=expired) |
cancelled | ✓ | Отменена |
expired | ✓ | Истекла |
Переходы: pending → queued → in_progress → completed — успешный путь. Любое неконечное состояние может перейти в failed, cancelled или expired.
URL видео
Успешная задача может вернуть два набора URL, в зависимости от того, включено ли CDN-зеркалирование у провайдера модели.
| Поле | Источник | Характеристики |
|---|---|---|
unsigned_urls | Исходный адрес upstream-провайдера | Временный — всегда присутствует · может истечь через 24h · неподписанный |
mirror_urls | CDN-зеркало ofox | Постоянный — только для провайдеров с включенным CDN · подписывается при каждом запросе · имеет TTL |
Предпочитайте mirror_urls (постоянные и стабильные). Когда модель возвращает только unsigned_urls, скачайте или перехостите файл быстро, пока временный upstream-адрес не истек.