Переводит ваше видео на другой язык, озвучивает его и старается подогнать движение губ под новую речь. Цена зависит от режима: Speed - 8 ₽/сек., Precision - 16 ₽/сек.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
Heygen Translate 2 переводит речь в видео на другой язык: распознаёт, что говорят люди в кадре, переводит, озвучивает перевод голосами, похожими на исходные, и подстраивает движения губ под новый текст. Язык исходной речи определяется сам.
Подходит для перевода интервью, подкастов, обучающих курсов, обзоров и рекламы. В отличие от heygen-video-translate, здесь можно выбрать быстрый или точный режим, перевести только звук без правки губ, указать число говорящих и отправить видео длиннее 2 минут.
Сценарии:
speed) - дешевле и быстрее, подходит для большинства роликов.precision) - вдвое дороже, губы подстраиваются аккуратнее. Стоит выбирать для крупных планов и роликов, где лицо в кадре главное.Каждый вызов создаёт асинхронную операцию. Сохраните id из ответа и проверяйте статус, пока не придёт готовое видео.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Режим задаётся параметром generation_type: speed или precision. Перевод только звука включается параметром translate_audio_only и работает в обоих режимах.
{
"tool": "heygen-translate-2",
"input": {
"video_url": "https://cdn.example.com/interview.mp4",
"generation_type": "speed",
"output_language": "English"
}
}
tool - slug нейросети, всегда "heygen-translate-2".input - параметры запуска. Поля передаются прямо внутри этого объекта, без дополнительной вложенности.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
video_url | string (url) | Да | Ссылка на видео с речью. Один файл, форматы mp4, mov, webm, до 128 МБ. Длительность - от 1 секунды до 6 часов, на практике длину ограничивает размер файла. От длительности зависит цена. |
generation_type | enum | Да | Режим перевода. speed - быстрее и дешевле, 8 ₽ за секунду. precision - точнее подстраивает губы, 16 ₽ за секунду. Если поле не передать, используется speed. |
output_language | enum | Да | Язык, на который нужно перевести речь. Передаётся английским значением из списка ниже, например English, Spanish, German. Если поле не передать, используется Russian. |
translate_audio_only | boolean | Нет | true - переводится только звук, лица и губы в кадре не меняются. false - переводится звук и подстраиваются губы. Если поле не передать, используется false. На цену не влияет. |
speaker_num | number | Нет | Сколько человек говорит в видео, целое число от 1 до 20. Помогает правильно разделить реплики, когда говорящих несколько. Если не передать, число говорящих определяется автоматически. |
enable_dynamic_duration | boolean | Нет | true - длительность фраз подстраивается под язык перевода, чтобы речь звучала естественно, а не ускоренно. Из-за этого длина готового ролика может немного отличаться от исходной. false - перевод укладывается в тайминг оригинала. Если поле не передать, используется true. |
Ссылка на видео должна открываться без авторизации по http/https. Расширение в ссылке должно совпадать с одним из допустимых форматов, иначе API вернёт validation_error.
Всего 178 значений. Основные языки:
| Значение | Язык |
|---|---|
Russian | Русский |
English | Английский |
Spanish | Испанский |
French | Французский |
German | Немецкий |
Italian | Итальянский |
Polish | Польский |
Portuguese | Португальский |
Chinese | Китайский |
Japanese | Японский |
Dutch | Голландский |
Turkish | Турецкий |
Korean | Корейский |
Danish | Датский |
Arabic | Арабский |
Romanian | Румынский |
Mandarin | Китайский (мандаринский) |
Filipino | Филиппинский |
Swedish | Шведский |
Indonesian | Индонезийский |
Ukrainian | Украинский |
Greek | Греческий |
Czech | Чешский |
Bulgarian | Болгарский |
Malay | Малайский |
Slovak | Словацкий |
Croatian | Хорватский |
Tamil | Тамильский |
Finnish | Финский |
Hindi | Хинди |
Basque | Баскский |
Региональные варианты (143) - язык с указанием страны или письменности, значение передаётся целиком, со скобками:
Afrikaans (South Africa), Albanian (Albania), Amharic (Ethiopia), Arabic (Algeria), Arabic (Bahrain), Arabic (Egypt), Arabic (Iraq), Arabic (Jordan), Arabic (Kuwait), Arabic (Lebanon), Arabic (Libya), Arabic (Morocco), Arabic (Oman), Arabic (Qatar), Arabic (Saudi Arabia), Arabic (Syria), Arabic (Tunisia), Arabic (United Arab Emirates), Arabic (Yemen), Armenian (Armenia), Azerbaijani (Latin, Azerbaijan), Bangla (Bangladesh), Bengali (India), Bosnian (Bosnia and Herzegovina), Bulgarian (Bulgaria), Burmese (Myanmar), Chinese (Cantonese, Traditional), Chinese (Jilu Mandarin, Simplified), Chinese (Mandarin, Simplified), Chinese (Northeastern Mandarin, Simplified), Chinese (Southwestern Mandarin, Simplified), Chinese (Taiwanese Mandarin, Traditional), Chinese (Wu, Simplified), Chinese (Zhongyuan Mandarin Henan, Simplified), Chinese (Zhongyuan Mandarin Shaanxi, Simplified), Croatian (Croatia), Czech (Czechia), Danish (Denmark), Dutch (Belgium), Dutch (Netherlands), English (Australia), English (Canada), English (Hong Kong SAR), English (India), English (Ireland), English (Kenya), English (New Zealand), English (Nigeria), English (Philippines), English (Singapore), English (South Africa), English (Tanzania), English (UK), English (United States), Estonian (Estonia), Filipino (Philippines), Finnish (Finland), French (Belgium), French (Canada), French (France), French (Switzerland), Georgian (Georgia), German (Austria), German (Germany), , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , .
Значение должно совпадать со списком буква в букву, включая пробелы, дефис и скобки. Любое другое значение API отклонит с ошибкой validation_error.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "heygen-translate-2",
"input": {
"video_url": "https://cdn.example.com/interview.mp4",
"generation_type": "speed",
"output_language": "English"
}
}'
const response = await fetch('https://bratuha.ru/api/v1/operations', {
method: 'POST',
headers: {
Authorization: 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
body: JSON.stringify({
tool: 'heygen-translate-2',
input: {
video_url: 'https://cdn.example.com/interview.mp4',
generation_type: 'speed',
output_language: 'English',
},
}),
})
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': 'heygen-translate-2',
'input': {
'video_url': 'https://cdn.example.com/interview.mp4',
'generation_type': 'speed',
'output_language': 'English',
},
},
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": "heygen-translate-2",
"input": {
"video_url": "https://cdn.example.com/presenter-closeup.mov",
"generation_type": "precision",
"output_language": "German",
"enable_dynamic_duration": 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: 'heygen-translate-2',
input: {
video_url: 'https://cdn.example.com/presenter-closeup.mov',
generation_type: 'precision',
output_language: 'German',
enable_dynamic_duration: true,
},
}),
})
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': 'heygen-translate-2',
'input': {
'video_url': 'https://cdn.example.com/presenter-closeup.mov',
'generation_type': 'precision',
'output_language': 'German',
'enable_dynamic_duration': True,
},
},
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": "heygen-translate-2",
"input": {
"video_url": "https://cdn.example.com/podcast.webm",
"generation_type": "speed",
"output_language": "Spanish",
"translate_audio_only": true,
"speaker_num": 2,
"enable_dynamic_duration": 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: 'heygen-translate-2',
input: {
video_url: 'https://cdn.example.com/podcast.webm',
generation_type: 'speed',
output_language: 'Spanish',
translate_audio_only: true,
speaker_num: 2,
enable_dynamic_duration: false,
},
}),
})
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': 'heygen-translate-2',
'input': {
'video_url': 'https://cdn.example.com/podcast.webm',
'generation_type': 'speed',
'output_language': 'Spanish',
'translate_audio_only': True,
'speaker_num': 2,
'enable_dynamic_duration': False,
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
Пример для видео длиной 5,04 секунды в режиме speed: длительность округляется вверх до 6 секунд, 6 × 8 ₽ = 48 ₽.
{
"id": "op_uuid-123",
"status": "queued",
"tool": "heygen-translate-2",
"cost": 48,
"balance_after": 452,
"created_at": "2026-09-30T21:32:18.09495+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "heygen-translate-2",
"cost": 48,
"created_at": "2026-09-30T21:32:18.09495+00:00",
"completed_at": "2026-09-30T21:34:19.019932+00:00",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/heygen-translate-2/video-1.mp4"
]
},
"error_message": null
}
{
"id": "op_uuid-123",
"status": "failed",
"tool": "heygen-translate-2",
"cost": 48,
"created_at": "2026-09-30T21:32:18.09495+00:00",
"completed_at": "2026-09-30T21:33:02.000000+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))
}
}
Ролик на 5 секунд в режиме speed был готов за 2 минуты, ролики на 10-30 секунд обычно переводятся за 2-3 минуты, в режиме precision - немного дольше. Опрашивать одну операцию можно не чаще раза в секунду, иначе API ответит 429, но для этой нейросети достаточно проверять статус раз в 10-15 секунд.
После завершения в поле result приходит видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/heygen-translate-2/video-1.mp4"
]
}
type - всегда "video".urls - массив ссылок на готовые видео. Для этой нейросети в нём одна ссылка на MP4.Что внутри файла:
enable_dynamic_duration: true длина готового ролика может немного отличаться от исходной: из видео на 5,04 секунды получилось 5,2 секунды, из 10 секунд - 10,9. Цена считается только по исходному видео.Если операция завершилась с ошибкой, result будет null, а причина придёт в error_message.
Цена считается за каждую секунду исходного видео и зависит от режима:
generation_type | Цена за секунду |
|---|---|
speed | 8 ₽ |
precision | 16 ₽ |
Как считается итог:
video_url. Передавать длительность в запросе не нужно.| Длина видео | speed | precision |
|---|---|---|
| 5,04 секунды | 48 ₽ | 96 ₽ |
| 10 секунд | 80 ₽ | 160 ₽ |
| 1 минута | 480 ₽ | 960 ₽ |
| 10 минут | 4800 ₽ | 9600 ₽ |
Язык, translate_audio_only, speaker_num и enable_dynamic_duration на цену не влияют. Итоговая сумма приходит в поле cost сразу в ответе на создание операции и списывается с баланса в этот момент. Если операция завершилась ошибкой, деньги возвращаются на баланс, а cost в ответе остаётся суммой запуска. Перед отправкой длинного видео проверьте его длительность: минута в precision стоит 960 ₽.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую операцию и списывает деньги заново.queued, результат забираете по id.http/https ссылкой, доступной без авторизации, размером до 128 МБ, в формате mp4, mov или webm. Локальные адреса и приватные сети не принимаются.validation_error, операция не создастся и деньги не спишутся.speaker_num принимает только целые числа от 1 до 20, дробное значение API отклонит.speaker_num.Catalan |
| Каталанский |
Galician | Галисийский |
English - Your Accent | Английский с акцентом говорящего из исходного видео |
English - American Accent | Английский с американским акцентом |
German (Switzerland)Greek (Greece)Gujarati (India)Hebrew (Israel)Hindi (India)Hungarian (Hungary)Icelandic (Iceland)Indonesian (Indonesia)Irish (Ireland)Italian (Italy)Japanese (Japan)Javanese (Latin, Indonesia)Kannada (India)Kazakh (Kazakhstan)Khmer (Cambodia)Korean (Korea)Lao (Laos)Latvian (Latvia)Lithuanian (Lithuania)Macedonian (North Macedonia)Malay (Malaysia)Malayalam (India)Maltese (Malta)Marathi (India)Mongolian (Mongolia)Nepali (Nepal)Norwegian Bokmål (Norway)Pashto (Afghanistan)Persian (Iran)Polish (Poland)Portuguese (Brazil)Portuguese (Portugal)Romanian (Romania)Russian (Russia)Serbian (Latin, Serbia)Sinhala (Sri Lanka)Slovak (Slovakia)Slovenian (Slovenia)Somali (Somalia)Spanish (Argentina)Spanish (Bolivia)Spanish (Chile)Spanish (Colombia)Spanish (Costa Rica)Spanish (Cuba)Spanish (Dominican Republic)Spanish (Ecuador)Spanish (El Salvador)Spanish (Equatorial Guinea)Spanish (Guatemala)Spanish (Honduras)Spanish (Mexico)Spanish (Nicaragua)Spanish (Panama)Spanish (Paraguay)Spanish (Peru)Spanish (Puerto Rico)Spanish (Spain)Spanish (United States)Spanish (Uruguay)Spanish (Venezuela)Sundanese (Indonesia)Swahili (Kenya)Swahili (Tanzania)Swedish (Sweden)Tamil (India)Tamil (Malaysia)Tamil (Singapore)Tamil (Sri Lanka)Telugu (India)Thai (Thailand)Turkish (Türkiye)Ukrainian (Ukraine)Urdu (India)Urdu (Pakistan)Uzbek (Latin, Uzbekistan)Vietnamese (Vietnam)Welsh (United Kingdom)Zulu (South Africa)