Create Video
cURL
curl --request POST \
--url https://api.heygen.com/v3/videos \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '\n{\n "type": "<string>",\n "avatar_id": "<string>",\n "title": "<string>",\n "resolution": "4k",\n "aspect_ratio": "16:9",\n "background": {\n "type": "color",\n "value": "<string>",\n "url": "<string>",\n "asset_id": "<string>"\n },\n "remove_background": true,\n "callback_url": "<string>",\n "callback_id": "<string>",\n "watermark": {\n "image": {\n "type": "<string>",\n "url": "<string>"\n }\n },\n "caption": {\n "file_format": "srt",\n "style": "default"\n },\n "output_format": "mp4",\n "script": "<string>",\n "voice_id": "<string>",\n "audio_url": "<string>",\n "audio_asset_id": "<string>",\n "voice_settings": {\n "speed": 1,\n "pitch": 0,\n "volume": 1,\n "locale": "<string>",\n "engine_settings": {\n "engine_type": "<string>",\n "model": "eleven_multilingual_v2",\n "similarity_boost": 0.5,\n "stability": 0.5,\n "style": 0.5,\n "use_speaker_boost": true\n }\n },\n "motion_prompt": "<string>",\n "expressiveness": "high"\n}\n'
Response
Successful Response
{
"data": {
"video_id": "<string>",
"status": "<string>",
"output_format": "mp4"
}
}
Authorizations
ApiKeyAuthBearerAuth
x-api-key- type:
string - location:
header - required
- Description: HeyGen API key. Obtain from your HeyGen dashboard.
Body
CreateVideoFromAvatar
Type:
string- required
- Must be 'avatar' for avatar-based video creation.
- Allowed value:
"avatar"
avatar_id:
string- required
- HeyGen avatar ID (video avatar or photo avatar look ID).
title:
string | null- Display title for the video in the HeyGen dashboard.
resolution:
enum<string> | null- Output video resolution.
- Available options:
4k,1080p,720p
aspect_ratio:
enum<string> | null- Output video aspect ratio.
- Available options:
16:9,9:16
background:
BackgroundSetting · objectremove_background:
boolean | null- Remove the avatar background. Video avatars must be trained with matting enabled.
callback_url:
string | null- Webhook URL to receive a POST notification when the video is ready.
callback_id:
string | null- Caller-defined identifier echoed back in the webhook payload.
watermark: WatermarkInput · object
- Custom watermark image to overlay on the video.
caption: CaptionSetting · object
- Caption generation settings.
output_format:
enum<string>- default:
mp4 - Output container.
- Available options:
mp4,webm
- default:
script:
string | null- Text script for the avatar to speak.
voice_id:
string | null- Voice ID for text-to-speech.
audio_url:
string | null- Public URL of an audio file to lip-sync.
audio_asset_id:
string | null- HeyGen asset ID of an uploaded audio file.
voice_settings: VoiceSettingsInput · object
motion_prompt:
string | null- Natural-language prompt controlling avatar body motion.
expressiveness:
enum<string> | null- Avatar expressiveness level.
- Available options:
high,medium,low.