Skip to Content
APIГенерация видеоСоздание задачи

Создание видео

Отправьте задачу генерации видео. Запрос сразу возвращает 202 Accepted с id задачи и URL для опроса — генерация выполняется асинхронно. Опрашивайте задачу или получите webhook, затем прочитайте результат через Получение статуса видео.

POST https://api.ofox.ai/v1/videos

Параметры запроса

ПараметрТипОбязателенОписание
modelstringModel slug, например google/veo-3.1 или bytedance/seedance-2.0
promptstringТекстовое описание видео
durationintegerДлина видео в секундах
resolutionstring480p / 720p / 1080p / 1K / 2K / 4K
aspect_ratiostring16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 3:2 / 2:3 / 21:9 / 9:21
sizestringТочный размер в пикселях WIDTHxHEIGHT (например, 1280x720), альтернатива resolution + aspect_ratio
frame_imagesarrayУправление кадрами (изображение в видео / первый и последний кадр). Если присутствует ⇒ обрабатывается как изображение в видео. См. ниже
input_referencesarrayЗадает объект / стиль (референс в видео), не точные якоря кадров. См. ниже
generate_audiobooleanПо умолчанию true для моделей, поддерживающих аудиовывод
seedintegerSeed для детерминированной генерации (не гарантируется у всех провайдеров)
callback_urlstringURL webhook для конечного состояния, должен использовать HTTPS (см. Webhooks)
providerobjectСквозные параметры провайдера, см. Сквозные параметры провайдера

Элемент frame_images[]

Каждый элемент закрепляет один кадр результата. frame_type — это first_frame или last_frame.

{ "type": "image_url", "image_url": { "url": "https://example.com/first.jpg" }, "frame_type": "first_frame" }

Элемент input_references[]

Передавайте референсы изображения / аудио / видео через type — они направляют объект, стиль и консистентность, но не являются точными якорями кадров:

{ "type": "image_url", "image_url": { "url": "https://example.com/subject.jpg" } } { "type": "audio_url", "audio_url": { "url": "https://example.com/voice.mp3" } } { "type": "video_url", "video_url": { "url": "https://example.com/ref.mp4" } }
МедиаtypeМакс. количествоДругие ограничения
Изображениеimage_url≤ 9
Аудиоaudio_url≤ 3≤ 15s на клип
Видеоvideo_url≤ 1

Превышение любого лимита возвращает 400 too_many_references (см. Ошибки).

frame_images и input_references взаимоисключающие — один запрос использует одно или другое, но не оба одновременно. Отправка обоих возвращает 400 references_conflict.

Режим генерации (неявный)

Поля gen_mode нет. Режим определяется по переданным входным данным:

РежимКогда определяется
text2videoНет ни frame_images, ни input_references
img2videoframe_images с одним first_frame
img2video_endframe_images с first_frame + last_frame
imgref2videoinput_references, только изображения
mixref2videoinput_references со смешанными изображениями / аудио / видео

Ответ

202 Accepted — задача принята со status: "pending" и polling_url:

{ "id": "9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718", "status": "pending", "polling_url": "https://api.ofox.ai/v1/videos/9bcf3c60-7db2-4e1a-a1b2-c3d4e5f60718" }

Опрашивайте polling_url (или дождитесь webhook), пока задача не достигнет конечного состояния — см. Получение статуса видео.

Примеры запросов

Одна схема /v1/videos покрывает каждый режим генерации; режим выбирается неявно по входным данным. Каждый пример ниже запускается как есть.

Нет frame_images / input_references → текст в видео.

Terminal
curl -X POST https://api.ofox.ai/v1/videos \ -H "Authorization: Bearer $OFOX_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "google/veo-3.1", "prompt": "A golden retriever running on the beach at sunset", "duration": 5, "resolution": "1080p", "aspect_ratio": "16:9", "generate_audio": true }'

Совмещаемые опции

Поля ниже ортогональны режиму генерации — добавляйте любое из них в любой body запроса выше.

Получите POST на свой эндпоинт, когда задача достигнет конечного состояния, вместо опроса.

{ "model": "google/veo-3.1", "prompt": "...", "callback_url": "https://your-app.example/webhooks/ofox-video" }

callback_url должен использовать HTTPS. См. Webhooks, чтобы узнать payload и подпись.

Сквозные параметры провайдера

Параметры конкретного провайдера передаются через provider.options.<slug> — их получает только выбранный провайдер. Параметры вроде watermark поддерживаются не каждой моделью, поэтому они находятся в сквозных параметрах провайдера, а не в полях верхнего уровня (это следует соглашению OpenRouter для provider-passthrough). То, какие сквозные опции принимает модель, зависит от возможностей модели.

{ "model": "alibaba/wan-2.7", "prompt": "...", "provider": { "options": { "dashscope": { "watermark": false, "audio_setting": "..." } } } }
Last updated on