Создаёт видео от 5 до 15 секунд по текстовому описанию или оживляет загруженное изображение, повторяя его пропорции. Цена зависит от разрешения: 480p — 3 ₽/сек., 768p — 5,4 ₽/сек., 1080p и 2K — 15 ₽/сек.
Общая документация Public API · API-ключ можно создать в настройках аккаунта
HeyGen Video 1.0 снимает короткий ролик по описанию или оживляет готовую картинку. Длительность задаёте сами, от 5 до 15 секунд. Из изображения можно получить видео вплоть до 2K, а пропорции кадра берутся из самой картинки. Из текста ролик выходит в 480p или 768p, зато соотношение сторон выбираете вы: от вертикального 9:16 до широкого 21:9.
Основные сценарии:
generation_type: "image", картинка становится первым кадром, а задание описывает, что происходит дальше.generation_type: "text", сцена строится только по заданию.Каждый вызов создаёт асинхронную операцию. После запуска сохраните id и проверяйте статус отдельным запросом.
POST /api/v1/operationsAuthorization: Bearer brth_...id операции и стартовый статус queued.Сценарий задаёт параметр generation_type:
image - видео из изображения (нужен image, доступны все четыре разрешения);text - видео из текста (можно указать aspect_ratio, разрешение только 480p или 768p).{
"tool": "heygen-video-1-0",
"input": {
"...": "..."
}
}
tool - slug нейросети, всегда "heygen-video-1-0".input - параметры запуска. Все поля передаются прямо внутри этого объекта, без дополнительной вложенности.image нужна ссылка на картинку, для text - нет.| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
generation_type | enum | Да | Сценарий. image - видео из изображения, text - видео из текста. Если поле не передать, используется image. |
prompt | string | Да | Что происходит в ролике: место, герои, действие, движение камеры, свет и настроение. От 3 до 32 000 символов. |
image | string (url) | Да, для image | Ссылка на первый кадр ролика. По этой картинке задаются пропорции видео. Один файл: jpg, jpeg, png или webp. В сценарии text поле не используется. |
aspect_ratio | enum | Нет | Соотношение сторон. Только в сценарии text, если не указано - 16:9. Варианты: 16:9, 9:16, 21:9, 4:3, 3:4, 1:1. |
duration | number | Да | Длительность ролика в секундах, целое число от 5 до 15. Если не указать, будет 5 секунд. |
resolution | enum | Да | Разрешение: 480p, 768p, 1080p или 2k. Если не указать - 768p. В сценарии text доступны только 480p и 768p, остальные значения запрос отклонит. |
prompt_enhancement | enum | Да | Улучшение задания перед генерацией: disabled - выключено, turbo - быстрое, quality - качественное. Если не указать - disabled. На цену не влияет. |
Ссылку в image передавайте как внешний http/https URL с расширением jpg, jpeg, png или webp.
curl -X POST https://bratuha.ru/api/v1/operations \
-H "Authorization: Bearer brth_ваш_ключ" \
-H "Content-Type: application/json" \
-d '{
"tool": "heygen-video-1-0",
"input": {
"generation_type": "image",
"prompt": "Девушка на фото поднимает взгляд от книги, улыбается и поправляет волосы. Камера медленно приближается, тёплый свет из окна, пылинки в луче",
"image": "https://cdn.example.com/source-image-1.jpg",
"duration": 8,
"resolution": "1080p",
"prompt_enhancement": "turbo"
}
}'
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-video-1-0',
input: {
generation_type: 'image',
prompt:
'Девушка на фото поднимает взгляд от книги, улыбается и поправляет волосы. Камера медленно приближается, тёплый свет из окна, пылинки в луче',
image: 'https://cdn.example.com/source-image-1.jpg',
duration: 8,
resolution: '1080p',
prompt_enhancement: 'turbo',
},
}),
})
const data = await response.json()
console.log(data.id, data.status)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'heygen-video-1-0',
'input': {
'generation_type': 'image',
'prompt': 'Девушка на фото поднимает взгляд от книги, улыбается и поправляет волосы. Камера медленно приближается, тёплый свет из окна, пылинки в луче',
'image': 'https://cdn.example.com/source-image-1.jpg',
'duration': 8,
'resolution': '1080p',
'prompt_enhancement': 'turbo',
},
},
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-video-1-0",
"input": {
"generation_type": "text",
"prompt": "Курьер на велосипеде подъезжает к подъезду с огромным букетом, девушка спускается, читает открытку и понимает, что цветы не ей. Он смущённо вынимает один цветок и дарит ей. Камера едет рядом с велосипедом, потом переходит на средний план. Романтическая комедия, яркое утро",
"aspect_ratio": "9:16",
"duration": 10,
"resolution": "480p",
"prompt_enhancement": "disabled"
}
}'
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-video-1-0',
input: {
generation_type: 'text',
prompt:
'Курьер на велосипеде подъезжает к подъезду с огромным букетом, девушка спускается, читает открытку и понимает, что цветы не ей. Он смущённо вынимает один цветок и дарит ей. Камера едет рядом с велосипедом, потом переходит на средний план. Романтическая комедия, яркое утро',
aspect_ratio: '9:16',
duration: 10,
resolution: '480p',
prompt_enhancement: 'disabled',
},
}),
})
const data = await response.json()
console.log(data.id, data.status)
import requests
response = requests.post(
'https://bratuha.ru/api/v1/operations',
headers={
'Authorization': 'Bearer brth_ваш_ключ',
'Content-Type': 'application/json',
},
json={
'tool': 'heygen-video-1-0',
'input': {
'generation_type': 'text',
'prompt': 'Курьер на велосипеде подъезжает к подъезду с огромным букетом, девушка спускается, читает открытку и понимает, что цветы не ей. Он смущённо вынимает один цветок и дарит ей. Камера едет рядом с велосипедом, потом переходит на средний план. Романтическая комедия, яркое утро',
'aspect_ratio': '9:16',
'duration': 10,
'resolution': '480p',
'prompt_enhancement': 'disabled',
},
},
timeout=30,
)
print(response.status_code)
print(response.json())
{
"id": "op_uuid-123",
"status": "queued",
"tool": "heygen-video-1-0",
"cost": 120,
"balance_after": 380,
"created_at": "2026-10-16T13:40:04.412693+00:00"
}
{
"id": "op_uuid-123",
"status": "completed",
"tool": "heygen-video-1-0",
"cost": 120,
"created_at": "2026-10-16T13:40:04.412693+00:00",
"completed_at": "2026-10-16T13:43:31.479484+00:00",
"result": {
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/heygen-video-1-0/video-1.mp4"
]
},
"error_message": null
}
Сохраните 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, 5000))
}
}
Опрашивать одну операцию можно не чаще раза в секунду, разумный интервал - 5 секунд. Ролики в 1080p и 2K готовятся дольше, чем в 480p.
После завершения в result приходит одно видео:
{
"type": "video",
"urls": [
"https://storage.bratuha.ru/results/heygen-video-1-0/video-1.mp4"
]
}
type - всегда "video".urls - массив с одной ссылкой на MP4.duration. Пропорции в сценарии image повторяют исходную картинку, в сценарии text - значение aspect_ratio.Цена считается за секунду ролика: ставка зависит от разрешения и умножается на duration. Сценарий (image или text), соотношение сторон и улучшение задания на цену не влияют.
| Разрешение | За секунду | 5 сек. | 10 сек. | 15 сек. |
|---|---|---|---|---|
480p | 3 ₽ | 15 ₽ | 30 ₽ | 45 ₽ |
768p | 5,4 ₽ | 27 ₽ | 54 ₽ | 81 ₽ |
1080p | 15 ₽ | 75 ₽ | 150 ₽ | 225 ₽ |
2k | 15 ₽ | 75 ₽ | 150 ₽ | 225 ₽ |
Самый дешёвый запуск - 5 секунд в 480p за 15 ₽. Полная сумма списывается при создании операции и видна в поле cost.
POST /api/v1/operations не идемпотентен: каждый повторный запрос создаёт новую платную операцию. Если ответ на создание потерялся, не отправляйте запрос вслепую ещё раз.queued, результат забирайте через GET /api/v1/operations/{id}.image принимает только внешние http/https ссылки на jpg, jpeg, png или webp. Адреса localhost и внутренних сетей не принимаются, файл должен открываться без авторизации.aspect_ratio работает только в сценарии text, а image - только в сценарии image. В сценарии text разрешения 1080p и 2k недоступны.480p: проверьте движение и композицию за 15 ₽, затем запустите тот же запрос в нужном разрешении.prompt_enhancement: "disabled". Режимы turbo и quality дописывают детали сцены сами.