Создаёт рекламные видеоролики по текстовому заданию и референсным изображениям, сохраняя стиль продукта и добавляя звук по желанию. Цена: 720p - 22,5 ₽/сек., 1080p - 27 ₽/сек.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Vidu Q3 Ad делает короткие рекламные ролики по заданию и референсным картинкам: товар, упаковка, герой, интерьер. Модель собирает сцену по описанию и старается сохранить внешний вид продукта с референсов - форму, цвета, узнаваемые детали. Звук сцены (шум улицы, шаги, эффекты) модель может добавить сама. Подходит для рекламы в соцсетях, карточек маркетплейсов, промо-роликов и сторис.
Референсы - это не первый кадр, а образцы того, что должно появиться в ролике. Можно передать от 1 до 7 картинок, например товар с разных сторон и человека, который им пользуется. Формат кадра, качество и длительность выбираются параметрами.
Каждый вызов создаёт асинхронную операцию. После запуска сохраните id и проверяйте статус отдельным запросом.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Режим у модели один - ролик по заданию и референсам. Сценарии отличаются числом картинок: один референс товара или несколько картинок (товар, герой, место действия).
{
"tool": "vidu-q3-ad",
"input": {
"...": "..."
}
}
tool - slug нейросети, всегда "vidu-q3-ad".input - параметры запуска. Все поля передаются прямо внутри этого объекта, без дополнительной вложенности.prompt и images, остальное подставится по умолчанию: 16:9, 720p, 5 секунд, со звуком.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
prompt | string | Да | Описание рекламной сцены: продукт, действие, движение камеры, стиль. От 3 до 5000 символов. |
images | string[] (url) | Да | Массив ссылок на референсы: от 1 до 7 картинок jpg, jpeg, png или webp. |
aspect_ratio | enum | Да | Формат кадра: 16:9 (горизонтальный), 9:16 (вертикальный для сторис и клипов), 1:1 (квадрат), 4:3 или 3:4. Если не указать - 16:9. |
resolution | enum | Да | Качество видео: 720p - для быстрых проб, 1080p - для финального ролика. Если не указать - 720p. |
duration | number | Да | Длительность ролика в секундах, целое число от 3 до 16. Если не указать - 5. |
generate_audio | boolean | Нет | Звук сцены: окружение, эффекты, речь, если она есть в задании. По умолчанию true; false - ролик без звука. На цену не влияет. |
Ссылки в images - только внешние http/https URL с расширением jpg, jpeg, png или webp.
Самый дешёвый вариант: 3 секунды в 720p.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "vidu-q3-ad",
"input": {
"prompt": "Рекламный ролик городского велосипеда: девушка опускает письмо в почтовый ящик, садится на зелёный велосипед и уезжает по осенней улице, камера плавно следует за ней",
"images": [
"https://cdn.example.com/product-image-1.jpg"
],
"aspect_ratio": "16:9",
"resolution": "720p",
"duration": 3,
"generate_audio": true
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'vidu-q3-ad',
input: {
prompt:
'Рекламный ролик городского велосипеда: девушка опускает письмо в почтовый ящик, садится на зелёный велосипед и уезжает по осенней улице, камера плавно следует за ней',
images: ['https://cdn.example.com/product-image-1.jpg'],
aspect_ratio: '16:9',
resolution: '720p',
duration: 3,
generate_audio: true,
},
}),
})
const data = await response.json()
console.log(data.id, data.status)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'vidu-q3-ad',
'input': {
'prompt': 'Рекламный ролик городского велосипеда: девушка опускает письмо в почтовый ящик, садится на зелёный велосипед и уезжает по осенней улице, камера плавно следует за ней',
'images': ['https://cdn.example.com/product-image-1.jpg'],
'aspect_ratio': '16:9',
'resolution': '720p',
'duration': 3,
'generate_audio': True,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Товар и герой на отдельных картинках, вертикальный формат для сторис, 1080p, без звука - например, если ролик пойдёт под свою музыку.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "vidu-q3-ad",
"input": {
"prompt": "Пекарь выносит противень с горячими круассанами из печи и ставит на стол рядом с фирменной коробкой, от выпечки поднимается пар. Крупный план коробки, камера медленно приближается",
"images": [
"https://cdn.example.com/product-box-1.png",
"https://cdn.example.com/baker-2.jpg",
"https://cdn.example.com/bakery-3.webp"
],
"aspect_ratio": "9:16",
"resolution": "1080p",
"duration": 8,
"generate_audio": false
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'vidu-q3-ad',
input: {
prompt:
'Пекарь выносит противень с горячими круассанами из печи и ставит на стол рядом с фирменной коробкой, от выпечки поднимается пар. Крупный план коробки, камера медленно приближается',
images: [
'https://cdn.example.com/product-box-1.png',
'https://cdn.example.com/baker-2.jpg',
'https://cdn.example.com/bakery-3.webp',
],
aspect_ratio: '9:16',
resolution: '1080p',
duration: 8,
generate_audio: false,
},
}),
})
const data = await response.json()
console.log(data.id, data.status)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'vidu-q3-ad',
'input': {
'prompt': 'Пекарь выносит противень с горячими круассанами из печи и ставит на стол рядом с фирменной коробкой, от выпечки поднимается пар. Крупный план коробки, камера медленно приближается',
'images': [
'https://cdn.example.com/product-box-1.png',
'https://cdn.example.com/baker-2.jpg',
'https://cdn.example.com/bakery-3.webp',
],
'aspect_ratio': '9:16',
'resolution': '1080p',
'duration': 8,
'generate_audio': False,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "vidu-q3-ad",
"cost": 67.5,
"balance_after": 432.5,
"created_at": "2026-09-30T21:31:10.98208+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "vidu-q3-ad",
"cost": 67.5,
"created_at": "2026-09-30T21:31:10.98208+00:00",
"completed_at": "2026-09-30T21:32:50.701396+00:00",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/vidu-q3-ad/video-1.mp4"
]
},
"error_message": null
}
Сохраните id из ответа на создание и проверяйте операцию по нему:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
async function waitForResult(id: string) {
while (true) {
const response = await fetch(`https://bratuha.ru/api/v1/operations/${id}`, {
headers: { Authorization: 'Bearer brth_ваш_ключ' },
})
const operation = await response.json()
if (operation.status === 'completed' || operation.status === 'failed') {
return operation
}
await new Promise((resolve) => setTimeout(resolve, 10000))
}
}
Короткий ролик в 720p обычно готов за 1-2 минуты, длинные ролики в 1080p - дольше. Одну операцию можно опрашивать не чаще раза в секунду, разумный интервал - 10 секунд.
После завершения в result приходит одно видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/vidu-q3-ad/video-1.mp4"
]
}
type - всегда "video".urls - массив с одной ссылкой на MP4.duration, формат кадра - aspect_ratio (16:9 в 720p - это 1280×720). Со generate_audio: true в файле есть звуковая дорожка.Цена считается за секунду: ставка зависит от качества и умножается на duration. Формат кадра, число референсов и звук на цену не влияют.
| Качество | За секунду | 3 сек. | 5 сек. | 8 сек. | 10 сек. | 16 сек. |
|---|---|---|---|---|---|---|
720p | 22,5 ₽ | 67,5 ₽ | 112,5 ₽ | 180 ₽ | 225 ₽ | 360 ₽ |
1080p | 27 ₽ | 81 ₽ | 135 ₽ | 216 ₽ | 270 ₽ | 432 ₽ |
Самый дешёвый запуск - 3 секунды в 720p за 67,5 ₽. Запрос только с prompt и images использует значения по умолчанию (720p, 5 секунд) и стоит 112,5 ₽. Сумма списывается при создании операции и видна в поле cost, копейки приходят дробной частью числа. Если операция завершилась ошибкой, деньги возвращаются на баланс.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую платную операцию. Если ответ на создание потерялся, не отправляйте запрос вслепую ещё раз.queued, результат забирайте через GET /api/v1/operations/{id}.images принимает только внешние http/https ссылки на jpg, jpeg, png или webp. Адреса localhost и внутренних сетей не принимаются, файл должен открываться без авторизации.images - всегда массив, даже для одной картинки. Пустой массив или больше 7 ссылок вернут validation_error.duration - только целое число от 3 до 16. Дробное значение или число вне диапазона вернёт validation_error.