Создаёт видео с двумя говорящими персонажами из одной фотографии и двух аудиодорожек, синхронизируя речь и мимику. Цена зависит от разрешения: 480p - 6 ₽/сек., 720p - 12 ₽/сек.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
LongCat Avatar 1.5 Multi оживляет сразу двух людей на одной фотографии. Вы присылаете снимок, где один человек стоит или сидит слева, а другой справа, и две аудиодорожки - по одной на каждого. Нейросеть двигает губы каждого в такт его записи, добавляет мимику и движения головы. Так делают диалоги для роликов, интервью, сценки с парой ведущих и поздравления от двоих.
Что можно настроить:
order - говорят одновременно или по очереди (слева, потом справа или наоборот);480p или 720p, от него зависит цена за секунду;prompt - кто как себя ведёт, пока говорит или слушает. Его можно не передавать.Каждый вызов создаёт асинхронную операцию. Сохраните id из ответа и проверяйте статус, пока видео не будет готово.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Сценарии вызова:
480p;order: "left_right" или "right_left", можно добавить задание;720p - вдвое дороже за секунду.{
"tool": "longcat-avatar-1-5-multi",
"input": {
"image": "https://cdn.example.com/two-people.jpg",
"left_audio": "https://cdn.example.com/left-voice.mp3",
"right_audio": "https://cdn.example.com/right-voice.mp3",
"order": "left_right",
"resolution": "480p"
}
}
tool - slug нейросети, всегда "longcat-avatar-1-5-multi".input - параметры запуска. Поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
image | string (url) | Да | Ссылка на фотографию, где два человека: один слева, другой справа. Одна картинка. Форматы: jpg, jpeg, png, webp. |
left_audio | string (url) | Да | Ссылка на запись для человека слева. Один файл. Форматы: mp3, wav, m4a, aac, flac, ogg, opus. |
right_audio | string (url) | Да | Ссылка на запись для человека справа. Один файл. Форматы те же, что у left_audio. |
order | enum | Нет | Порядок речи. meanwhile - обе дорожки звучат одновременно, left_right - сначала говорит человек слева, потом справа, right_left - сначала справа, потом слева. Если поле не передано, используется meanwhile. |
resolution | enum | Нет | Качество видео: 480p - 6 ₽ за секунду, 720p - 12 ₽ за секунду. Если поле не передано, используется 480p. |
prompt | string | Нет | Задание: кто говорит первым, эмоции, как ведёт себя слушающий, поведение камеры. Например: «Женщина слева говорит радостно, мужчина справа слушает и кивает, камера неподвижна». До 2000 символов. Писать можно по-русски. |
Длительность дорожек сервер определяет сам. Цена считается по их общей длине, но не больше чем за 64 секунды (подробнее - в разделе «Ценообразование»).
Ссылки на файлы должны открываться без авторизации по http/https, размер файла - до 128 МБ. Расширение в ссылке должно совпадать с одним из допустимых форматов, иначе API вернёт validation_error.
Минимальный запрос: порядок и качество не указаны, поэтому обе дорожки звучат одновременно, видео в 480p.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "longcat-avatar-1-5-multi",
"input": {
"image": "https://cdn.example.com/two-people.jpg",
"left_audio": "https://cdn.example.com/left-voice.mp3",
"right_audio": "https://cdn.example.com/right-voice.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: 'longcat-avatar-1-5-multi',
input: {
image: 'https://cdn.example.com/two-people.jpg',
left_audio: 'https://cdn.example.com/left-voice.mp3',
right_audio: 'https://cdn.example.com/right-voice.mp3',
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'longcat-avatar-1-5-multi',
'input': {
'image': 'https://cdn.example.com/two-people.jpg',
'left_audio': 'https://cdn.example.com/left-voice.mp3',
'right_audio': 'https://cdn.example.com/right-voice.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": "longcat-avatar-1-5-multi",
"input": {
"image": "https://cdn.example.com/couple-on-sofa.jpg",
"left_audio": "https://cdn.example.com/left-question.mp3",
"right_audio": "https://cdn.example.com/right-answer.mp3",
"order": "left_right",
"resolution": "480p",
"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: 'longcat-avatar-1-5-multi',
input: {
image: 'https://cdn.example.com/couple-on-sofa.jpg',
left_audio: 'https://cdn.example.com/left-question.mp3',
right_audio: 'https://cdn.example.com/right-answer.mp3',
order: 'left_right',
resolution: '480p',
prompt: 'Женщина слева говорит первой, радостно; мужчина справа молчит и слушает, потом отвечает с лёгкой усмешкой. Камера неподвижна',
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'longcat-avatar-1-5-multi',
'input': {
'image': 'https://cdn.example.com/couple-on-sofa.jpg',
'left_audio': 'https://cdn.example.com/left-question.mp3',
'right_audio': 'https://cdn.example.com/right-answer.mp3',
'order': 'left_right',
'resolution': '480p',
'prompt': 'Женщина слева говорит первой, радостно; мужчина справа молчит и слушает, потом отвечает с лёгкой усмешкой. Камера неподвижна',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Сначала говорит человек справа, потом слева. Качество 720p стоит 12 ₽ за секунду.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "longcat-avatar-1-5-multi",
"input": {
"image": "https://cdn.example.com/podcast-hosts.png",
"left_audio": "https://cdn.example.com/host-left.wav",
"right_audio": "https://cdn.example.com/host-right.wav",
"order": "right_left",
"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: 'longcat-avatar-1-5-multi',
input: {
image: 'https://cdn.example.com/podcast-hosts.png',
left_audio: 'https://cdn.example.com/host-left.wav',
right_audio: 'https://cdn.example.com/host-right.wav',
order: 'right_left',
resolution: '720p',
},
}),
})
const data = await response.json()
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'longcat-avatar-1-5-multi',
'input': {
'image': 'https://cdn.example.com/podcast-hosts.png',
'left_audio': 'https://cdn.example.com/host-left.wav',
'right_audio': 'https://cdn.example.com/host-right.wav',
'order': 'right_left',
'resolution': '720p',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Пример для дорожек длиной 4,3 и 3,1 секунды в 480p: каждая округляется вверх (5 и 4 секунды), вместе 9 секунд, 9 × 6 ₽ = 54 ₽.
{
"id": "op_uuid-123",
"status": "queued",
"tool": "longcat-avatar-1-5-multi",
"cost": 54,
"balance_after": 946,
"created_at": "2026-09-30T21:34:50.418722+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "longcat-avatar-1-5-multi",
"cost": 54,
"created_at": "2026-09-24T20:08:25.454000+00:00",
"completed_at": "2026-09-24T20:16:42.553000+00:00",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/longcat-avatar-1-5-multi/dialog-1.mp4"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "longcat-avatar-1-5-multi",
"cost": 54,
"created_at": "2026-09-30T21:34:50.418722+00:00",
"completed_at": "2026-09-30T21:37:26.51102+00:00",
"result": null,
"error_message": "Произошла ошибка, нейросеть временно недоступна. Попробуйте повторить запрос позже."
}
Сохраните 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, 15000))
}
}
Нейросеть работает небыстро: диалог на 7-8 секунд в 480p готовился около восьми минут. Опрашивать одну операцию можно не чаще раза в секунду, иначе API ответит 429.
После завершения в поле result приходит видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/longcat-avatar-1-5-multi/dialog-1.mp4"
]
}
type - всегда "video".urls - массив ссылок на готовые видео. Для этой нейросети в нём одна ссылка на MP4.Видео идёт со звуком обеих дорожек. В режиме по очереди ролик длится столько, сколько обе записи подряд: из дорожек на 4,3 и 3,1 секунды с left_right получилось видео на 7,6 секунды. Пропорции кадра берутся с фотографии: из горизонтального снимка 16:9 в 480p получилось видео 832×480, 25 кадров в секунду.
Если операция завершилась с ошибкой, result будет null, а причина придёт в error_message.
Цена зависит от качества и общей длины двух дорожек:
| Качество | Цена за секунду |
|---|---|
480p | 6 ₽ |
720p | 12 ₽ |
Как считается итог:
Длины складываются при любом значении order, в том числе при meanwhile, когда дорожки звучат одновременно.
Примеры:
| Дорожки | Секунд в расчёте | 480p | 720p |
|---|---|---|---|
| 4,3 и 3,1 секунды | 9 | 54 ₽ | 108 ₽ |
| 10 и 10 секунд | 20 | 120 ₽ | 240 ₽ |
| 15 и 15 секунд | 30 | 180 ₽ | 360 ₽ |
| вместе 64 секунды и больше | 64 (максимум) | 384 ₽ | 768 ₽ |
Фото, порядок речи и задание на цену не влияют. Итоговая сумма приходит в поле cost сразу в ответе на создание операции и списывается с баланса в этот момент. Если операция завершилась ошибкой, деньги возвращаются на баланс, а cost в ответе остаётся суммой запуска.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию и списывает деньги заново.queued, результат забираете по id.http/https URL, доступными без авторизации, размером до 128 МБ. Для image - jpg, jpeg, png, webp, для left_audio и right_audio - mp3, wav, m4a, aac, flac, ogg, opus. Локальные адреса и приватные сети не принимаются.validation_error, операция не создастся и деньги не спишутся.left_audio достаётся тому, кто слева в кадре, right_audio - тому, кто справа.