Создаёт музыкальный клип по вашей песне: подбирает видеоряд под музыку, может добавить героя по фото и субтитры с текстом песни. Цена зависит от разрешения: 720p - 10 ₽/сек., 1080p - 15 ₽/сек.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
PixVerse VibeMV делает музыкальный клип по готовой песне: видеоряд строится вокруг музыки, а оформление задаёте вы. Через API удобно автоматизировать выпуск визуала к релизам, нарезку вертикальных отрывков для соцсетей или генерацию клипов по трекам из вашей библиотеки.
Минимально нужна только ссылка на аудио. Всё остальное настраивается по желанию:
Каждый вызов создаёт асинхронную операцию: запрос сразу возвращает id и стартовый статус, а готовое видео нужно получить отдельной проверкой статуса.
POST /api/v1/operationsAuthorization: Bearer brth_...id, стартовый статус и стоимость.Основные сценарии вызова:
{
"tool": "pixverse-vibemv",
"input": {
"audio_url": "https://cdn.example.com/source-audio-1.mp3",
"...": "..."
}
}
tool - slug нейросети, всегда "pixverse-vibemv".input - параметры конкретного запуска. Параметры передаются прямо внутри input, без дополнительного вложенного объекта input.input.audio_url. Если остальные параметры не передать, сервер подставит значения по умолчанию - они указаны в таблице ниже.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
audio_url | string (url) | Да | Внешний URL песни. Расширения: .mp3, .wav. Длительность - от 10 секунд до 6 минут. От длительности зависит цена: сервер сам определяет её по файлу. |
image_url | string (url) | Нет | Фото героя клипа. Расширения: .jpg, .jpeg, .png, .webp. Если не передать, герои появятся на усмотрение нейросети. |
style | enum | Нет | Визуальный стиль клипа. Варианты: Cinematic (кино), Lo-fi, Dreamscape (сновидение), Woolen Felt (войлок), Candy (конфетный), Golden Age (золотой век), Voxel (воксели), Retro Game (ретро-игра), Claymation (пластилин), Woodland Tale (лесная сказка), Impressionism (импрессионизм), Decadence (декаданс), Futuristic (футуризм), Chromatic Clash (яркий контраст), Holiday (праздник), Custom (свой стиль по образцу). Если не передать - Cinematic. |
style_image_url | string (url) | Только при style = "Custom" | Изображение-образец, стиль которого повторит клип. Расширения: .jpg, .jpeg, .png, .webp. При других стилях не используется. |
music_style | enum | Нет | Жанр песни - подсказка, какой видеоряд подобрать. Варианты: auto (ориентироваться только на саму музыку), Pop, Rock, Hip Hop, R&B, Jazz, Reggae, Country, Folk, Electronic, Classical, Soul, Funk, Metal, Ambient, Others (другое). Если не передать - . |
Самый короткий вызов: клип в стиле Cinematic, 16:9, 720p.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "pixverse-vibemv",
"input": {
"audio_url": "https://cdn.example.com/source-audio-1.mp3"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'pixverse-vibemv',
input: {
audio_url: 'https://cdn.example.com/source-audio-1.mp3',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
"https://bratuha.ru/api/v1/operations",
headers={
"Authorization": "Bearer brth_ваш_ключ",
"Content-Type": "application/json",
},
json={
"tool": "pixverse-vibemv",
"input": {
"audio_url": "https://cdn.example.com/source-audio-1.mp3",
},
},
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": "pixverse-vibemv",
"input": {
"audio_url": "https://cdn.example.com/source-audio-1.mp3",
"image_url": "https://cdn.example.com/source-image-1.jpg",
"style": "Dreamscape",
"music_style": "Pop",
"aspect_ratio": "9:16",
"resolution": "1080p",
"use_lyrics": true,
"lyrics": "Ночной город не спит со мной\nФонари ведут меня домой"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'pixverse-vibemv',
input: {
audio_url: 'https://cdn.example.com/source-audio-1.mp3',
image_url: 'https://cdn.example.com/source-image-1.jpg',
style: 'Dreamscape',
music_style: 'Pop',
aspect_ratio: '9:16',
resolution: '1080p',
use_lyrics: true,
lyrics: 'Ночной город не спит со мной\nФонари ведут меня домой',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
"https://bratuha.ru/api/v1/operations",
headers={
"Authorization": "Bearer brth_ваш_ключ",
"Content-Type": "application/json",
},
json={
"tool": "pixverse-vibemv",
"input": {
"audio_url": "https://cdn.example.com/source-audio-1.mp3",
"image_url": "https://cdn.example.com/source-image-1.jpg",
"style": "Dreamscape",
"music_style": "Pop",
"aspect_ratio": "9:16",
"resolution": "1080p",
"use_lyrics": True,
"lyrics": "Ночной город не спит со мной\nФонари ведут меня домой",
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Клип повторяет стиль загруженной картинки. Для этого нужны style: "Custom" и style_image_url.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "pixverse-vibemv",
"input": {
"audio_url": "https://cdn.example.com/source-audio-2.wav",
"style": "Custom",
"style_image_url": "https://cdn.example.com/style-image-1.png",
"music_style": "Electronic",
"aspect_ratio": "1:1",
"resolution": "720p"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'pixverse-vibemv',
input: {
audio_url: 'https://cdn.example.com/source-audio-2.wav',
style: 'Custom',
style_image_url: 'https://cdn.example.com/style-image-1.png',
music_style: 'Electronic',
aspect_ratio: '1:1',
resolution: '720p',
},
}),
})
const data = await response.json()
console.log(data)
import requests
response = requests.post(
"https://bratuha.ru/api/v1/operations",
headers={
"Authorization": "Bearer brth_ваш_ключ",
"Content-Type": "application/json",
},
json={
"tool": "pixverse-vibemv",
"input": {
"audio_url": "https://cdn.example.com/source-audio-2.wav",
"style": "Custom",
"style_image_url": "https://cdn.example.com/style-image-1.png",
"music_style": "Electronic",
"aspect_ratio": "1:1",
"resolution": "720p",
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Песня длиной 30 секунд, 720p:
{
"id": "op_uuid-123",
"status": "queued",
"tool": "pixverse-vibemv",
"cost": 300,
"balance_after": 700,
"created_at": "2026-09-23T12:00:00Z"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "pixverse-vibemv",
"cost": 300,
"created_at": "2026-09-23T12:00:00Z",
"completed_at": "2026-09-23T12:06:40Z",
"result": {
"type": "video",
"urls": ["https://storage.bratuha.ru/results/pixverse-vibemv/result.mp4"]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "pixverse-vibemv",
"cost": 300,
"created_at": "2026-09-23T12:00:00Z",
"completed_at": "2026-09-23T12:01:15Z",
"result": null,
"error_message": "Не удалось выполнить операцию"
}
После создания операции сохраните id и используйте его для отдельной проверки статуса:
GET /api/v1/operations/{id}id возвращается сразу после POST /api/v1/operations.curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
const response = await fetch(
'https://bratuha.ru/api/v1/operations/op_uuid-123',
{
headers: {
Authorization: 'Bearer brth_ваш_ключ',
},
},
)
const data = await response.json()
console.log(data)
После успешного завершения операция возвращает result в таком формате:
{
"type": "video",
"urls": ["https://storage.bratuha.ru/results/pixverse-vibemv/result.mp4"]
}
Что важно знать:
type всегда "video";urls - массив ссылок на готовый клип в формате mp4;Итоговая цена = длительность песни в секундах × ставка за секунду.
Ставка зависит только от разрешения resolution:
| Разрешение | Ставка за секунду |
|---|---|
720p | 10 ₽ |
1080p | 15 ₽ |
Длительность сервер определяет сам по файлу из audio_url и округляет вверх до целой секунды. Передавать её в запросе не нужно. Минимум - 10 секунд, максимум - 360 секунд (6 минут).
Стиль, жанр, соотношение сторон, фото героя и субтитры на цену не влияют.
Примеры расчёта:
720p: 30 × 10 ₽ = 300 ₽;1080p: 30 × 15 ₽ = 450 ₽;720p: 192 × 10 ₽ = 1920 ₽;1080p: 360 × 15 ₽ = 5400 ₽.POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию и списывает её стоимость.queued, затем отдельно проверяете статус по id.http/https ссылки без localhost, loopback и private IP.audio_url используйте .mp3 или .wav. Другие аудиоформаты не принимаются.image_url и style_image_url используйте .jpg, .jpeg, .png или .webp. Форматы HEIC/HEIF, которые поддерживаются при загрузке файлов через форму сайта, в Public API по внешнему URL не принимаются.style_image_url учитывается только при style = "Custom", а lyrics - только при use_lyrics = true.autoaspect_ratio | enum | Нет | Соотношение сторон клипа. Варианты: 16:9, 9:16, 1:1, 4:3, 3:4. Если не передать - 16:9. |
resolution | enum | Нет | Разрешение клипа. Варианты: 720p, 1080p. Влияет на цену. Если не передать - 720p. |
use_lyrics | boolean | Нет | Включает субтитры. Передайте true вместе с lyrics. Если не передать - false. |
lyrics | string | Только при use_lyrics = true | Текст песни, который появится в клипе субтитрами. От 1 до 5000 символов. Без use_lyrics: true текст в клип не попадёт. |