Создание видео
Отправьте задачу генерации видео. Запрос сразу возвращает 202 Accepted с id задачи и URL для опроса — генерация выполняется асинхронно. Опрашивайте задачу или получите webhook, затем прочитайте результат через Получение статуса видео.
POST https://api.ofox.ai/v1/videosПараметры запроса
Элемент 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" } }Превышение любого лимита возвращает 400 too_many_references (см. Ошибки).
frame_images и input_references взаимоисключающие — один запрос использует одно или другое, но не оба одновременно. Отправка обоих возвращает 400 references_conflict.
real_person: Референсы с реальными людьми
Одношаговый процесс Ofox, сравнение с регистрацией ассетов Seedance и рекомендации по повторной отправке приведены в разделе Референсы с реальными людьми.
Установите поле верхнего уровня real_person в true, если референс содержит узнаваемого реального человека. Перед отправкой запроса на генерацию Ofox применяет ко всем изображениям в выбранном поле референсов предобработку для защиты приватности. По умолчанию значение равно false, поэтому существующие запросы не меняются.
{
"model": "bytedance/seedance-2.0",
"prompt": "Человек идет по кинематографичному ночному рынку",
"real_person": true,
"input_references": [
{
"type": "image_url",
"image_url": { "url": "https://example.com/person.jpg" }
}
]
}real_person можно использовать с изображениями в frame_images или input_references; эти два поля остаются взаимоисключающими. Требуется хотя бы один референс-изображение, иначе API возвращает 400 invalid_request.
Предобработка может уменьшить ложные срабатывания anti-deepfake-проверок upstream-провайдера, но не обходит его политику контента и не гарантирует принятие. Провайдер все равно может отклонить запрос; отклоненная задача не тарифицируется. Исправьте входные данные или повторите запрос. См. ошибки предобработки real_person.
Режим генерации (неявный)
Поля gen_mode нет. Режим определяется по переданным входным данным:
Ответ
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 → текст в видео.
# Необязательно: закрепить провайдера. Без этого поля платформа маршрутизирует сама
# "provider": { "type": "byteplus" }
curl -X POST https://api.ofox.ai/v1/videos \
-H "Authorization: Bearer $OFOX_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "bytedance/seedance-2.5",
"prompt": "A golden retriever running on the beach at sunset",
"duration": 5,
"resolution": "1080p",
"aspect_ratio": "16:9",
"generate_audio": true
}'Совмещаемые опции
Поля ниже ортогональны режиму генерации — добавляйте любое из них в любой body запроса выше.
Webhook (callback_url)
Получите POST на свой эндпоинт, когда задача достигнет конечного состояния, вместо опроса.
{
"model": "bytedance/seedance-2.5",
"prompt": "...",
"callback_url": "https://your-app.example/webhooks/ofox-video"
}callback_url должен использовать HTTPS. См. Webhooks, чтобы узнать payload и подпись.