Синхронизирует движения губ в видео с вашим аудио, чтобы персонаж выглядел так, будто реально говорит или поёт. Цена: 7 ₽ за секунду аудио - ролик получается длиной с аудио.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
PixVerse Lipsync оживляет губы человека в видео под ваше аудио: персонаж говорит или поёт новую запись. Подходит для переозвучки роликов, перевода видео на другой язык, говорящих персонажей и клипов под песню. На вход - видео с лицом и аудио, на выходе - видео длиной с аудио.
Каждый вызов создаёт асинхронную операцию. После запуска сохраните id и проверяйте статус отдельным запросом.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Сценарий один: видео с лицом и аудио с речью. Готовый ролик получается длиной с аудио, по аудио считается и цена.
{
"tool": "pixverse-lipsync",
"input": {
"...": "..."
}
}
tool - slug нейросети, всегда "pixverse-lipsync".input - параметры запуска. Все поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
video_url | string (url) | Да | Ссылка на исходное видео с лицом человека: mp4, mov или webm, от 1 до 600 секунд. |
audio_url | string (url) | Да | Ссылка на речь или песню: только mp3 или wav, от 1 до 600 секунд. Длина аудио задаёт длину ролика и цену. |
Видео 10 секунд и речь 9,2 секунды: ролик получится 9,2 секунды, оплачивается 10 секунд аудио - 70 ₽.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "pixverse-lipsync",
"input": {
"video_url": "https://cdn.example.com/source-video-1.mp4",
"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-lipsync',
input: {
video_url: 'https://cdn.example.com/source-video-1.mp4',
audio_url: 'https://cdn.example.com/source-audio-1.mp3',
},
}),
})
const data = await response.json()
console.log(data.id, data.status, data.cost)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'pixverse-lipsync',
'input': {
'video_url': 'https://cdn.example.com/source-video-1.mp4',
'audio_url': 'https://cdn.example.com/source-audio-1.mp3',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "pixverse-lipsync",
"cost": 70,
"balance_after": 950,
"created_at": "2026-10-01T16:16:03.864980+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "pixverse-lipsync",
"cost": 70,
"created_at": "2026-10-01T16:16:03.864980+00:00",
"completed_at": "2026-10-01T16:17:23.112000+00:00",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/pixverse-lipsync/video-1.mp4"
]
},
"error_message": null
}
Если модель не справилась, операция завершается со статусом failed, в result приходит null, а причина - в error_message. Списанная сумма возвращается на баланс.
{
"id": "op_uuid-123",
"status": "failed",
"tool": "pixverse-lipsync",
"cost": 70,
"created_at": "2026-10-01T16:16:03.864980+00:00",
"completed_at": "2026-10-01T16:17:23.112000+00:00",
"result": null,
"error_message": "Максимальное разрешение видео не должно превышать 1920x1920 пикселей. Пожалуйста, уменьшите размер видео и попробуйте снова."
}
Сохраните 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))
}
}
Статус меняется так: queued - в очереди, processing - видео обрабатывается, затем completed или failed. Ролик на 10 секунд обычно готов за 1-2 минуты, запись на несколько минут обрабатывается 10-30 минут. Одну операцию можно опрашивать не чаще раза в секунду, разумный интервал - 10-20 секунд.
После завершения в result приходит одно видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/pixverse-lipsync/video-1.mp4"
]
}
type - всегда "video".urls - массив с одной ссылкой на MP4 с вашей аудиодорожкой.Цена - 7 ₽ за каждую секунду аудио. Видео на цену не влияет: ролик получается длиной с аудио.
| Длина аудио | Цена |
|---|---|
| 1 секунда | 7 ₽ |
| 10 секунд | 70 ₽ |
| 60 секунд | 420 ₽ |
| 600 секунд (максимум) | 4200 ₽ |
Длительность округляется вверх до целой секунды: аудио 9,2 секунды оплачивается как 10 секунд. Сумма списывается при создании операции и видна в поле cost.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую платную операцию. Если ответ на создание потерялся, не отправляйте запрос вслепую ещё раз - сначала проверьте историю операций в личном кабинете.queued, результат забирайте через GET /api/v1/operations/{id}.http/https ссылками: видео - mp4, mov или webm, аудио - mp3 или wav. Ссылка должна открываться без авторизации, файл - до 128 МБ. Адреса localhost и внутренних сетей не принимаются.400 validation_error и деньги не спишутся.400 validation_error.m4a, ogg и т. п.) модель не принимает - перекодируйте его в mp3 или wav.