curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "viduq4-preview",
"prompt": "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
"image_urls": ["https://example.com/portrait.jpg"],
"duration": 5,
"resolution": "1080p",
"audio": true
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
},
json={
"model": "viduq4-preview",
"prompt": "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
"image_urls": ["https://example.com/portrait.jpg"],
"duration": 5,
"resolution": "1080p",
"audio": True,
},
)
print(response.json())
const response = await fetch("https://toapis.com/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "viduq4-preview",
prompt: "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
image_urls: ["https://example.com/portrait.jpg"],
duration: 5,
resolution: "1080p",
audio: true
})
});
console.log(await response.json());
{
"id": "<string>",
"object": "<string>",
"model": "<string>",
"status": "<string>",
"created_at": 123
}Vidu Q4 Preview
Генерация видео Vidu Q4 Preview
Генерация видео с моделью Vidu Q4 Preview: видео из изображения и видео по нескольким референсным изображениям с референсным аудио
POST
/
v1
/
videos
/
generations
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "viduq4-preview",
"prompt": "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
"image_urls": ["https://example.com/portrait.jpg"],
"duration": 5,
"resolution": "1080p",
"audio": true
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
},
json={
"model": "viduq4-preview",
"prompt": "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
"image_urls": ["https://example.com/portrait.jpg"],
"duration": 5,
"resolution": "1080p",
"audio": True,
},
)
print(response.json())
const response = await fetch("https://toapis.com/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "viduq4-preview",
prompt: "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
image_urls: ["https://example.com/portrait.jpg"],
duration: 5,
resolution: "1080p",
audio: true
})
});
console.log(await response.json());
{
"id": "<string>",
"object": "<string>",
"model": "<string>",
"status": "<string>",
"created_at": 123
}Для пользователей из материкового Китая: используйте
https://toapis.cn в качестве API-эндпоинта (Base URL). Замените https://toapis.com на https://toapis.cn в примерах этого документа.- Асинхронный API задач, после отправки возвращает ID задачи
- Поддерживаемая модель:
viduq4-preview - Два режима генерации:
- Видео из первого кадра: одно изображение как первый кадр
- Видео по референсам: несколько референсных изображений и опциональное референсное аудио
Используйте публично доступные URL изображений и аудио. Не передавайте base64-данные в
image_urls, reference_images или sounds; сначала загрузите локальные файлы через API загрузки изображений.Авторизация
string
обязательно
Все эндпоинты требуют аутентификации Bearer Token.
Authorization: Bearer YOUR_API_KEY
Параметры запроса
string
обязательно
Имя модели, фиксированное значение
viduq4-preview.string
обязательно
Текстовый промпт, описывающий объект, движение, сцену, работу камеры и стиль.
string[]
Массив URL изображений. Режим определяется параметром
video_generation_mode и количеством изображений:- Режим первого кадра (по умолчанию): передайте ровно 1 URL изображения в
image_urls. Изображение станет первым кадром. - Режим референсов: установите
video_generation_modeвreference_images_to_videoи передайте референсные изображения вimage_urls(илиreference_images).
["https://example.com/first-frame.jpg"]string
Селектор режима генерации.Варианты:
reference_images_to_video- генерация по нескольким референсам; несколько изображений вimage_urlsобрабатываются как референсные
reference_images или sounds автоматически направляются в режим видео по референсам.integer
по умолчанию:"5"
Длительность видео в секундах, от
3 до 16.string
по умолчанию:"720p"
Разрешение видео.Варианты:
540p720p1080p2K4K
string
Соотношение сторон видео, используется в режиме референсов.Варианты:
16:9, 9:16, 4:3, 3:4, 1:1boolean
по умолчанию:"true"
Генерировать ли звук для видео.
boolean
по умолчанию:"false"
Добавлять ли водяной знак на сгенерированное видео.
integer
Сид для более воспроизводимых результатов при одинаковых параметрах.
object
Расширенные параметры для полей, поддерживаемых upstream API, но не вынесенных на верхний уровень.
Показать Показать поля metadata
Показать Показать поля metadata
boolean
Автоматически расширять и улучшать промпт. По умолчанию на upstream —
true, если не указано.string[]
Массив URL референсных аудио (только режим видео по референсам). До 3 аудиофайлов.Пример:
["https://example.com/voice.mp3"]integer
Позиция водяного знака, от
1 до 4. Действует при watermark равном true.string
URL пользовательского изображения водяного знака. Действует при
watermark равном true.string
Пользовательский идентификатор метаданных, строка в формате JSON, передаётся в результат без изменений.
string
Финальный Task Webhook ToAPIs. Сначала настройте Token URL и секрет подписи; см. Task Webhooks.
Выбор режима
| Режим | Как активировать | Входные изображения | Входное аудио |
|---|---|---|---|
| Видео из первого кадра | 1 изображение в image_urls (по умолчанию) | Ровно 1 изображение | Только флаг audio |
| Видео по референсам | video_generation_mode: "reference_images_to_video", либо несколько изображений / reference_images / sounds | До 15 референсных изображений | До 3 sounds + флаг audio |
Единицы тарификации
Vidu Q4 Preview тарифицируется посекундно за сгенерированное видео, цена зависит от разрешения:540p/720p/1080p/2K/4K— чем выше разрешение, тем выше цена за секунду
Ответ
string
ID задачи для запроса статуса.
string
Тип объекта, обычно
generation.task.string
Модель, использованная в запросе.
string
Статус задачи:
queued, in_progress, completed или failed.integer
Временная метка создания задачи.
Примеры
Видео из первого кадра
{
"model": "viduq4-preview",
"prompt": "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
"image_urls": ["https://example.com/portrait.jpg"],
"duration": 5,
"resolution": "1080p",
"audio": true
}
Видео по референсам
{
"model": "viduq4-preview",
"prompt": "Сохранить персонажа из референсных изображений, идёт по неоновой улице ночью",
"video_generation_mode": "reference_images_to_video",
"image_urls": [
"https://example.com/character-front.jpg",
"https://example.com/character-side.jpg"
],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "3:4",
"audio": true
}
Видео по референсам с референсным аудио
{
"model": "viduq4-preview",
"prompt": "Персонаж произносит реплику с синхронизацией губ",
"video_generation_mode": "reference_images_to_video",
"image_urls": ["https://example.com/character.jpg"],
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"metadata": {
"sounds": ["https://example.com/voice.mp3"]
}
}
С расширением промпта и водяным знаком
{
"model": "viduq4-preview",
"prompt": "Кошка идёт по пляжу на закате",
"image_urls": ["https://example.com/cat.jpg"],
"duration": 8,
"resolution": "2K",
"watermark": true,
"metadata": {
"is_rec": true
}
}
Генерация видео асинхронна. Используйте эндпоинт Получение статуса видеозадачи для проверки прогресса и результата.
curl --request POST \
--url https://toapis.com/v1/videos/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "viduq4-preview",
"prompt": "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
"image_urls": ["https://example.com/portrait.jpg"],
"duration": 5,
"resolution": "1080p",
"audio": true
}'
import requests
response = requests.post(
"https://toapis.com/v1/videos/generations",
headers={
"Authorization": "Bearer <token>",
"Content-Type": "application/json",
},
json={
"model": "viduq4-preview",
"prompt": "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
"image_urls": ["https://example.com/portrait.jpg"],
"duration": 5,
"resolution": "1080p",
"audio": True,
},
)
print(response.json())
const response = await fetch("https://toapis.com/v1/videos/generations", {
method: "POST",
headers: {
Authorization: "Bearer <token>",
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "viduq4-preview",
prompt: "Человек на фото медленно поворачивается и улыбается, кинематографичный свет",
image_urls: ["https://example.com/portrait.jpg"],
duration: 5,
resolution: "1080p",
audio: true
})
});
console.log(await response.json());