HeyGen Avatar V

HeyGen Avatar V is an avatar video generation model for talking digital twins and other eligible registered avatar looks. It improves identity preservation, lip sync accuracy, facial expressiveness, and motion coherence across angle changes, scene changes, and long-form videos, making it well suited to presenter, training, and localization workflows where avatar stability matters.
API Reference
INTEGRATE
Complete technical specification for integration
RequestResponse
Examples4
CODE
Ready-to-use code snippets for common workflows
Guides2
LEARN
Step-by-step tutorials for advanced use cases
Cyberpunk Megacity Transit Notice
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'heygen:avatar@5',
width: 720,
height: 1280,
settings: {
fit: 'cover',
removeBackground: true,
caption: true
},
inputs: {
avatar: 'Miyu_standing_office_front',
audio: 'https://assets.runware.ai/assets/inputs/73d3adf9-fd74-4afd-82dd-800b4fce666a.mp3',
background: 'https://assets.runware.ai/assets/inputs/31e24a81-19fd-4746-b37b-0ac62608ed47.jpg'
}
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "heygen:avatar@5",
"width": 720,
"height": 1280,
"settings": {
"fit": "cover",
"removeBackground": True,
"caption": True
},
"inputs": {
"avatar": "Miyu_standing_office_front",
"audio": "https://assets.runware.ai/assets/inputs/73d3adf9-fd74-4afd-82dd-800b4fce666a.mp3",
"background": "https://assets.runware.ai/assets/inputs/31e24a81-19fd-4746-b37b-0ac62608ed47.jpg"
}
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "videoInference",
"taskUUID": "f1412d17-3f7d-48f2-acfa-9b91435a0374",
"model": "heygen:avatar@5",
"width": 720,
"height": 1280,
"settings": {
"fit": "cover",
"removeBackground": true,
"caption": true
},
"inputs": {
"avatar": "Miyu_standing_office_front",
"audio": "https://assets.runware.ai/assets/inputs/73d3adf9-fd74-4afd-82dd-800b4fce666a.mp3",
"background": "https://assets.runware.ai/assets/inputs/31e24a81-19fd-4746-b37b-0ac62608ed47.jpg"
}
}
]'runware run heygen:avatar@5 \
width=720 \
height=1280 \
settings.fit=cover \
settings.removeBackground=true \
settings.caption=true \
inputs.avatar=Miyu_standing_office_front \
inputs.audio=https://assets.runware.ai/assets/inputs/73d3adf9-fd74-4afd-82dd-800b4fce666a.mp3 \
inputs.background=https://assets.runware.ai/assets/inputs/31e24a81-19fd-4746-b37b-0ac62608ed47.jpg{
"taskType": "videoInference",
"taskUUID": "f1412d17-3f7d-48f2-acfa-9b91435a0374",
"model": "heygen:avatar@5",
"width": 720,
"height": 1280,
"settings": {
"fit": "cover",
"removeBackground": true,
"caption": true
},
"inputs": {
"avatar": "Miyu_standing_office_front",
"audio": "https://assets.runware.ai/assets/inputs/73d3adf9-fd74-4afd-82dd-800b4fce666a.mp3",
"background": "https://assets.runware.ai/assets/inputs/31e24a81-19fd-4746-b37b-0ac62608ed47.jpg"
}
}{
"taskType": "videoInference",
"taskUUID": "f1412d17-3f7d-48f2-acfa-9b91435a0374",
"videoUUID": "45cba496-fc0b-44bf-8209-87899f03f17e",
"videoURL": "https://vm.runware.ai/video/os/a04d20/ws/5/vi/45cba496-fc0b-44bf-8209-87899f03f17e.mp4",
"cost": 2.544
}Orbital Robotics Safety Briefing
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'heygen:avatar@5',
width: 1080,
height: 1920,
speech: {
text: 'Welcome to the orbital robotics bay. Before you activate a service drone, pause for a three point scan: confirm the arm path is clear, verify the magnetic tether is locked, and announce your movement to the crew channel. If a drone hesitates, do not pull it by hand. Step back, say hold position, and wait for the status ring to turn blue. Small habits like these keep the whole station precise, calm, and safe.',
voice: 'piper_lifelike_female_english',
language: 'en-US',
volume: 1,
speed: 0.95,
pitch: 0
},
settings: {
backgroundColor: '#101828',
caption: true,
fit: 'contain'
},
inputs: {
avatar: 'Piper_standing_education_front'
}
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "heygen:avatar@5",
"width": 1080,
"height": 1920,
"speech": {
"text": "Welcome to the orbital robotics bay. Before you activate a service drone, pause for a three point scan: confirm the arm path is clear, verify the magnetic tether is locked, and announce your movement to the crew channel. If a drone hesitates, do not pull it by hand. Step back, say hold position, and wait for the status ring to turn blue. Small habits like these keep the whole station precise, calm, and safe.",
"voice": "piper_lifelike_female_english",
"language": "en-US",
"volume": 1,
"speed": 0.95,
"pitch": 0
},
"settings": {
"backgroundColor": "#101828",
"caption": True,
"fit": "contain"
},
"inputs": {
"avatar": "Piper_standing_education_front"
}
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "videoInference",
"taskUUID": "e487a81e-ec5a-48d6-8f7d-9e353ef7c122",
"model": "heygen:avatar@5",
"width": 1080,
"height": 1920,
"speech": {
"text": "Welcome to the orbital robotics bay. Before you activate a service drone, pause for a three point scan: confirm the arm path is clear, verify the magnetic tether is locked, and announce your movement to the crew channel. If a drone hesitates, do not pull it by hand. Step back, say hold position, and wait for the status ring to turn blue. Small habits like these keep the whole station precise, calm, and safe.",
"voice": "piper_lifelike_female_english",
"language": "en-US",
"volume": 1,
"speed": 0.95,
"pitch": 0
},
"settings": {
"backgroundColor": "#101828",
"caption": true,
"fit": "contain"
},
"inputs": {
"avatar": "Piper_standing_education_front"
}
}
]'runware run heygen:avatar@5 \
width=1080 \
height=1920 \
speech.text="Welcome to the orbital robotics bay. Before you activate a service drone, pause for a three point scan: confirm the arm path is clear, verify the magnetic tether is locked, and announce your movement to the crew channel. If a drone hesitates, do not pull it by hand. Step back, say hold position, and wait for the status ring to turn blue. Small habits like these keep the whole station precise, calm, and safe." \
speech.voice=piper_lifelike_female_english \
speech.language=en-US \
speech.volume=1 \
speech.speed=0.95 \
speech.pitch=0 \
settings.backgroundColor="#101828" \
settings.caption=true \
settings.fit=contain \
inputs.avatar=Piper_standing_education_front{
"taskType": "videoInference",
"taskUUID": "e487a81e-ec5a-48d6-8f7d-9e353ef7c122",
"model": "heygen:avatar@5",
"width": 1080,
"height": 1920,
"speech": {
"text": "Welcome to the orbital robotics bay. Before you activate a service drone, pause for a three point scan: confirm the arm path is clear, verify the magnetic tether is locked, and announce your movement to the crew channel. If a drone hesitates, do not pull it by hand. Step back, say hold position, and wait for the status ring to turn blue. Small habits like these keep the whole station precise, calm, and safe.",
"voice": "piper_lifelike_female_english",
"language": "en-US",
"volume": 1,
"speed": 0.95,
"pitch": 0
},
"settings": {
"backgroundColor": "#101828",
"caption": true,
"fit": "contain"
},
"inputs": {
"avatar": "Piper_standing_education_front"
}
}{
"taskType": "videoInference",
"taskUUID": "e487a81e-ec5a-48d6-8f7d-9e353ef7c122",
"videoUUID": "0aaf635a-609e-4b33-9ff4-a111cd1e7246",
"videoURL": "https://vm.runware.ai/video/os/a01d21/ws/5/vi/0aaf635a-609e-4b33-9ff4-a111cd1e7246.mp4",
"cost": 3.0336
}Glasshouse Pollinator Care Brief
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'heygen:avatar@5',
width: 1280,
height: 720,
settings: {
caption: true,
fit: 'contain'
},
inputs: {
avatar: 'Emilia_standing_outdoorbusiness_front',
audio: 'https://assets.runware.ai/assets/inputs/ed49784d-73a9-4faa-a866-93040acb0738.mp3'
}
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "heygen:avatar@5",
"width": 1280,
"height": 720,
"settings": {
"caption": True,
"fit": "contain"
},
"inputs": {
"avatar": "Emilia_standing_outdoorbusiness_front",
"audio": "https://assets.runware.ai/assets/inputs/ed49784d-73a9-4faa-a866-93040acb0738.mp3"
}
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "videoInference",
"taskUUID": "37ff7d0c-1493-4b2b-84a4-f387ea1aab8d",
"model": "heygen:avatar@5",
"width": 1280,
"height": 720,
"settings": {
"caption": true,
"fit": "contain"
},
"inputs": {
"avatar": "Emilia_standing_outdoorbusiness_front",
"audio": "https://assets.runware.ai/assets/inputs/ed49784d-73a9-4faa-a866-93040acb0738.mp3"
}
}
]'runware run heygen:avatar@5 \
width=1280 \
height=720 \
settings.caption=true \
settings.fit=contain \
inputs.avatar=Emilia_standing_outdoorbusiness_front \
inputs.audio=https://assets.runware.ai/assets/inputs/ed49784d-73a9-4faa-a866-93040acb0738.mp3{
"taskType": "videoInference",
"taskUUID": "37ff7d0c-1493-4b2b-84a4-f387ea1aab8d",
"model": "heygen:avatar@5",
"width": 1280,
"height": 720,
"settings": {
"caption": true,
"fit": "contain"
},
"inputs": {
"avatar": "Emilia_standing_outdoorbusiness_front",
"audio": "https://assets.runware.ai/assets/inputs/ed49784d-73a9-4faa-a866-93040acb0738.mp3"
}
}{
"taskType": "videoInference",
"taskUUID": "37ff7d0c-1493-4b2b-84a4-f387ea1aab8d",
"videoUUID": "d6afe885-06c4-4853-bfde-dad5f6d15101",
"videoURL": "https://vm.runware.ai/video/os/a04d20/ws/5/vi/d6afe885-06c4-4853-bfde-dad5f6d15101.mp4",
"cost": 2.616
}Hydroponic Greenhouse Crop Update
import { createClient } from '@runware/sdk'
const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()
const [result] = await client.run({
model: 'heygen:avatar@5',
width: 1920,
height: 1080,
speech: {
text: 'Good morning, team. Today we are reviewing the crop health indicators for bay three. The key signal is leaf temperature stability: when it shifts more than two degrees from the target range, check airflow first, then nutrient flow, and finally sensor calibration. Keep notes short, record the timestamp, and escalate only if the pattern repeats across two full cycles. This keeps the harvest schedule predictable and helps every grow zone stay consistent.',
voice: 'piper_lifelike_female_english',
language: 'en-US',
volume: 1,
speed: 0.98,
pitch: 0
},
settings: {
caption: true,
fit: 'contain',
removeBackground: true
},
inputs: {
avatar: 'Piper_standing_education_front',
background: 'https://assets.runware.ai/assets/inputs/2555d9cf-660e-46a0-9aa3-10900b4a28a6.jpg'
}
})import asyncio
import os
from runware import Runware
async def main():
async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
results = await client.run({
"model": "heygen:avatar@5",
"width": 1920,
"height": 1080,
"speech": {
"text": "Good morning, team. Today we are reviewing the crop health indicators for bay three. The key signal is leaf temperature stability: when it shifts more than two degrees from the target range, check airflow first, then nutrient flow, and finally sensor calibration. Keep notes short, record the timestamp, and escalate only if the pattern repeats across two full cycles. This keeps the harvest schedule predictable and helps every grow zone stay consistent.",
"voice": "piper_lifelike_female_english",
"language": "en-US",
"volume": 1,
"speed": 0.98,
"pitch": 0
},
"settings": {
"caption": True,
"fit": "contain",
"removeBackground": True
},
"inputs": {
"avatar": "Piper_standing_education_front",
"background": "https://assets.runware.ai/assets/inputs/2555d9cf-660e-46a0-9aa3-10900b4a28a6.jpg"
}
})
asyncio.run(main())curl https://api.runware.ai/v1 \
-H "Authorization: Bearer $RUNWARE_API_KEY" \
-H "Content-Type: application/json" \
-d '[
{
"taskType": "videoInference",
"taskUUID": "efd587ff-029d-48b6-a63f-59be8f9172e9",
"model": "heygen:avatar@5",
"width": 1920,
"height": 1080,
"speech": {
"text": "Good morning, team. Today we are reviewing the crop health indicators for bay three. The key signal is leaf temperature stability: when it shifts more than two degrees from the target range, check airflow first, then nutrient flow, and finally sensor calibration. Keep notes short, record the timestamp, and escalate only if the pattern repeats across two full cycles. This keeps the harvest schedule predictable and helps every grow zone stay consistent.",
"voice": "piper_lifelike_female_english",
"language": "en-US",
"volume": 1,
"speed": 0.98,
"pitch": 0
},
"settings": {
"caption": true,
"fit": "contain",
"removeBackground": true
},
"inputs": {
"avatar": "Piper_standing_education_front",
"background": "https://assets.runware.ai/assets/inputs/2555d9cf-660e-46a0-9aa3-10900b4a28a6.jpg"
}
}
]'runware run heygen:avatar@5 \
width=1920 \
height=1080 \
speech.text="Good morning, team. Today we are reviewing the crop health indicators for bay three. The key signal is leaf temperature stability: when it shifts more than two degrees from the target range, check airflow first, then nutrient flow, and finally sensor calibration. Keep notes short, record the timestamp, and escalate only if the pattern repeats across two full cycles. This keeps the harvest schedule predictable and helps every grow zone stay consistent." \
speech.voice=piper_lifelike_female_english \
speech.language=en-US \
speech.volume=1 \
speech.speed=0.98 \
speech.pitch=0 \
settings.caption=true \
settings.fit=contain \
settings.removeBackground=true \
inputs.avatar=Piper_standing_education_front \
inputs.background=https://assets.runware.ai/assets/inputs/2555d9cf-660e-46a0-9aa3-10900b4a28a6.jpg{
"taskType": "videoInference",
"taskUUID": "efd587ff-029d-48b6-a63f-59be8f9172e9",
"model": "heygen:avatar@5",
"width": 1920,
"height": 1080,
"speech": {
"text": "Good morning, team. Today we are reviewing the crop health indicators for bay three. The key signal is leaf temperature stability: when it shifts more than two degrees from the target range, check airflow first, then nutrient flow, and finally sensor calibration. Keep notes short, record the timestamp, and escalate only if the pattern repeats across two full cycles. This keeps the harvest schedule predictable and helps every grow zone stay consistent.",
"voice": "piper_lifelike_female_english",
"language": "en-US",
"volume": 1,
"speed": 0.98,
"pitch": 0
},
"settings": {
"caption": true,
"fit": "contain",
"removeBackground": true
},
"inputs": {
"avatar": "Piper_standing_education_front",
"background": "https://assets.runware.ai/assets/inputs/2555d9cf-660e-46a0-9aa3-10900b4a28a6.jpg"
}
}{
"taskType": "videoInference",
"taskUUID": "efd587ff-029d-48b6-a63f-59be8f9172e9",
"videoUUID": "5c1f74bc-b531-4b1c-9b41-defd82e0dd5e",
"videoURL": "https://vm.runware.ai/video/os/a05d22/ws/5/vi/5c1f74bc-b531-4b1c-9b41-defd82e0dd5e.mp4",
"cost": 3.117
}