Меняет исходное видео так, чтобы два персонажа (слева и справа в кадре) говорили или пели по двум отдельным аудиодорожкам, с подгонкой губ и мимики под звук. Цена: Fast - 3 ₽/сек., Обычная 480p - 6 ₽/сек., Обычная 720p - 12 ₽/сек.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
InfiniteTalk Video Multi переозвучивает видео с двумя людьми: человек слева в кадре говорит по одной записи, справа - по другой. Губы, мимика и движения подстраиваются под звук. Подходит для диалогов, интервью, сценок и дуэтов. Длина ролика задаётся аудио, а не видео.
Каждый вызов создаёт асинхронную операцию. Сохраните id из ответа и проверяйте статус, пока видео не будет готово.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Режимы (mode):
fast - быстрее и дешевле, качество 480p.normal - выше качество, на выбор 480p или 720p (resolution).Порядок реплик (order):
meanwhile - обе записи звучат одновременно, ролик длится как более длинная из них;left_right - сначала говорит человек слева, потом справа, ролик длится как обе записи вместе;right_left - сначала справа, потом слева.{
"tool": "infinitetalk-video-multi",
"input": {
"mode": "fast",
"order": "left_right",
"video": "https://cdn.example.com/two-people-1.mp4",
"left_audio": "https://cdn.example.com/left-voice-1.mp3",
"right_audio": "https://cdn.example.com/right-voice-1.mp3"
}
}
tool - slug нейросети, всегда "infinitetalk-video-multi".input - параметры запуска. Поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
mode | enum | Нет | fast - быстрый режим (только 480p), normal - обычный, выше качество. Если не передать, используется fast. |
resolution | enum | Нет | 480p или 720p. 720p доступно только с mode: "normal", в режиме fast вернётся validation_error. Если не передать, используется 480p. |
video | string (url) | Да | Ссылка на видео, где видны два человека: один слева, другой справа. Один файл длительностью от 1 до 600 секунд. Форматы: mp4, mov, webm. |
left_audio | string (url) | Да | Запись для человека слева. Один файл, форматы: mp3, wav, m4a, aac, flac, ogg, opus. Лучше без музыки и шума. |
right_audio | string (url) | Да | Запись для человека справа. Один файл, форматы: mp3, wav, m4a, aac, flac, ogg, opus. Вместе с left_audio - от 1 до 600 секунд. |
order | enum | Нет | Как проигрывать записи: meanwhile - одновременно, left_right - сначала левый, потом правый, right_left - сначала правый, потом левый. Если не передать, используется meanwhile. |
prompt | string | Нет | Пожелания к движениям и мимике. До 2000 символов. Можно не передавать. |
Длительность файлов сервер определяет сам, передавать её в запросе не нужно.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "infinitetalk-video-multi",
"input": {
"mode": "fast",
"order": "left_right",
"video": "https://cdn.example.com/two-people-1.mp4",
"left_audio": "https://cdn.example.com/left-voice-1.mp3",
"right_audio": "https://cdn.example.com/right-voice-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: 'infinitetalk-video-multi',
input: {
mode: 'fast',
order: 'left_right',
video: 'https://cdn.example.com/two-people-1.mp4',
left_audio: 'https://cdn.example.com/left-voice-1.mp3',
right_audio: 'https://cdn.example.com/right-voice-1.mp3',
},
}),
})
const data = await response.json()
console.log(data.id, data.cost)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'infinitetalk-video-multi',
'input': {
'mode': 'fast',
'order': 'left_right',
'video': 'https://cdn.example.com/two-people-1.mp4',
'left_audio': 'https://cdn.example.com/left-voice-1.mp3',
'right_audio': 'https://cdn.example.com/right-voice-1.mp3',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "infinitetalk-video-multi",
"input": {
"mode": "normal",
"resolution": "720p",
"order": "meanwhile",
"video": "https://cdn.example.com/duet-1.mov",
"left_audio": "https://cdn.example.com/duet-left-1.wav",
"right_audio": "https://cdn.example.com/duet-right-1.wav",
"prompt": "Двое поют дуэтом, смотрят друг на друга и улыбаются"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'infinitetalk-video-multi',
input: {
mode: 'normal',
resolution: '720p',
order: 'meanwhile',
video: 'https://cdn.example.com/duet-1.mov',
left_audio: 'https://cdn.example.com/duet-left-1.wav',
right_audio: 'https://cdn.example.com/duet-right-1.wav',
prompt: 'Двое поют дуэтом, смотрят друг на друга и улыбаются',
},
}),
})
const data = await response.json()
console.log(data.id, data.cost)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'infinitetalk-video-multi',
'input': {
'mode': 'normal',
'resolution': '720p',
'order': 'meanwhile',
'video': 'https://cdn.example.com/duet-1.mov',
'left_audio': 'https://cdn.example.com/duet-left-1.wav',
'right_audio': 'https://cdn.example.com/duet-right-1.wav',
'prompt': 'Двое поют дуэтом, смотрят друг на друга и улыбаются',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Пример для быстрого режима и двух записей по 3,88 и 4,13 секунды: каждая округляется вверх (4 + 5 = 9 секунд), 9 × 3 ₽ = 27 ₽.
{
"id": "op_uuid-123",
"status": "queued",
"tool": "infinitetalk-video-multi",
"cost": 27,
"balance_after": 473,
"created_at": "2026-10-01T19:51:14.649001+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "infinitetalk-video-multi",
"cost": 27,
"created_at": "2026-10-01T19:51:14.649001+00:00",
"completed_at": "2026-10-01T19:52:23.4+00:00",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/infinitetalk-video-multi/dialog-1.mp4"
]
},
"error_message": null
}
Если две записи вместе длиннее 10 минут или длительность не удалось прочитать, API отвечает validation_error. Операция не создаётся, деньги не списываются:
{
"error": {
"code": "validation_error",
"message": "Общая длительность двух аудио должна быть от 1 до 600 секунд.",
"request_id": "9b2f6c1e-4d7a-4f0e-8c3b-2a5d7e9f1c40"
}
}
Сохраните id из ответа на создание и запрашивайте операцию, пока status не станет completed или failed:
GET /api/v1/operations/{id}
curl -H "Authorization: Bearer brth_ваш_ключ" \
https://bratuha.ru/api/v1/operations/op_uuid-123
async function waitForOperation(id: string) {
while (true) {
const res = await fetch(`https://bratuha.ru/api/v1/operations/${id}`, {
headers: { Authorization: 'Bearer brth_ваш_ключ' },
})
const op = await res.json()
if (op.status === 'completed' || op.status === 'failed') return op
await new Promise((resolve) => setTimeout(resolve, 10000))
}
}
Сколько ждать: в режиме fast ролик на 8-10 секунд обычно готов примерно за минуту-полторы, в normal - в несколько раз дольше.
Опрашивать одну операцию можно не чаще раза в секунду, иначе API ответит 429.
После завершения в поле result приходит видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/infinitetalk-video-multi/dialog-1.mp4"
]
}
type - всегда "video".urls - массив ссылок на готовые видео. Для этой нейросети в нём одна ссылка на MP4.Если операция завершилась с ошибкой, result будет null, а причина придёт в error_message.
Ролик идёт со звуком обеих записей. При left_right и right_left он длится как обе записи вместе (из 3,88 и 4,13 секунды получился ролик на 8 секунд), при meanwhile - как более длинная. Длина исходного видео на длину ролика не влияет.
Цена считается за каждую секунду аудио: длины left_audio и right_audio складываются при любом order. Длина видео на цену не влияет.
mode | resolution | Цена за секунду |
|---|---|---|
fast | 480p | 3 ₽ |
normal | 480p | 6 ₽ |
normal | 720p | 12 ₽ |
Как считается итог:
left_right и right_left они складываются: 3,88 и 4,13 секунды дают 4 + 5 = 9 секунд. При meanwhile берётся более длинная запись: 5 секунд. Минимум к оплате - 5 секунд.| Две записи по очереди | fast | normal + 480p | normal + 720p |
|---|---|---|---|
| 3,88 + 4,13 секунды (9 к оплате) | 27 ₽ | 54 ₽ | 108 ₽ |
| 30 + 30 секунд | 180 ₽ | 360 ₽ | 720 ₽ |
| 300 + 300 секунд (максимум) | 1800 ₽ | 3600 ₽ | 7200 ₽ |
При meanwhile к оплате идёт только более длинная запись: 3,88 и 4,13 секунды - 5 секунд, это 15 ₽ в fast, 30 ₽ в normal + 480p и 60 ₽ в normal + 720p.
Итоговая сумма приходит в поле cost сразу в ответе на создание операции и списывается с баланса в этот момент. Если операция завершилась ошибкой, деньги возвращаются на баланс, а cost в ответе остаётся суммой запуска.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию и списывает деньги заново.queued, результат забираете по id.http/https URL, доступными без авторизации, размером до 128 МБ. Расширение в ссылке должно совпадать с одним из допустимых форматов. Локальные адреса и приватные сети не принимаются.validation_error, операция не создастся и деньги не спишутся.fast качество всегда 480p: resolution можно не передавать, а 720p вызовет validation_error.prompt можно писать по-русски.