Skip to main content

Documentation Index

Fetch the complete documentation index at: https://heygen-1fa696a7.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

All commands follow the pattern heygen <noun> <verb>. The command surface is auto-generated from HeyGen’s OpenAPI specification — when new v3 endpoints ship, the CLI picks them up automatically. Run heygen <command> --help for detailed usage and examples on any command. Use --request-schema or --response-schema on any command to see the full JSON schema for its request or response — no auth required.

Video Agent

Create videos from text prompts using AI. The agent picks avatar, voice, and layout automatically.
CommandAPI EndpointDescription
heygen video-agent createPOST /v3/video-agentsCreate a video from a prompt
heygen video-agent get <session-id>GET /v3/video-agents/{session_id}Get session status and messages
heygen video-agent send <session-id>POST /v3/video-agents/{session_id}Send a follow-up message or request revision
heygen video-agent stop <session-id>POST /v3/video-agents/{session_id}/stopStop an in-progress session
heygen video-agent resources get <session-id> <resource-id>GET /v3/video-agents/{session_id}/resources/{resource_id}Get a session resource
heygen video-agent styles listGET /v3/video-agents/stylesList available video styles
heygen video-agent videos list <session-id>GET /v3/video-agents/{session_id}/videosList videos produced by a session

Flags for video-agent create

FlagDescription
--prompt <text>The message/prompt for video generation (required)
--mode <value>generate (default, one-shot) or chat (multi-turn with revisions)
--avatar-id <id>Specific avatar ID to use
--voice-id <id>Specific voice ID to use for narration
--style-id <id>Style ID from video-agent styles list
--orientation <value>landscape or portrait (auto-detected if omitted)
--incognito-modeDisable memory injection and extraction for this session
--callback-url <url>Webhook URL for completion/failure notifications
--callback-id <id>ID echoed back in the webhook payload

Videos

Create, list, retrieve, and delete avatar videos with full parameter control.
CommandAPI EndpointDescription
heygen video createPOST /v3/videosCreate a video with explicit parameters
heygen video listGET /v3/videosList your videos
heygen video get <video-id>GET /v3/videos/{video_id}Get video details and status
heygen video delete <video-id>DELETE /v3/videos/{video_id}Delete a video
heygen video download <video-id>Client-sideDownload a video file to disk

Flags for video create

video create uses a discriminated union request body — the type field determines which fields are valid. Pass the full body with -d:
# Avatar-based video
heygen video create -d '{
  "type": "avatar",
  "avatar_id": "avt_angela_01",
  "script": "Hello world",
  "voice_id": "1bd001e7e50f421d891986aad5e3e5d2"
}'

# Image-based video
heygen video create -d '{
  "type": "image",
  "image": {"type": "url", "url": "https://example.com/photo.jpg"},
  "script": "Hello",
  "voice_id": "1bd001e7e50f421d891986aad5e3e5d2"
}'
Run heygen video create --request-schema to see all available fields.

Flags for video list

FlagDescription
--limit <n>Maximum items per page (1–100, default 10)
--token <cursor>Pagination cursor from a previous response’s next_token
--folder-id <id>Filter videos by folder ID
--title <text>Filter videos by title substring

Flags for video download

FlagDescription
--output-path <path>Output file path (default: {video-id}.mp4)
--asset <type>video (default) or captioned

Avatars

Browse and manage avatars and their looks (outfits/styles).
CommandAPI EndpointDescription
heygen avatar createPOST /v3/avatarsCreate an avatar
heygen avatar listGET /v3/avatarsList avatar groups
heygen avatar get <group-id>GET /v3/avatars/{group_id}Get avatar group details
heygen avatar looks listGET /v3/avatars/looksList avatar looks
heygen avatar looks get <look-id>GET /v3/avatars/looks/{look_id}Get avatar look details
heygen avatar looks update <look-id>PATCH /v3/avatars/looks/{look_id}Rename an avatar look
heygen avatar consent create <group-id>POST /v3/avatars/{group_id}/consentInitiate a consent flow

Filter flags for avatar list

FlagDescription
--ownership <scope>public or private
--limit <n>Maximum items per page (1–50, default 20)
--token <cursor>Pagination cursor

Filter flags for avatar looks list

FlagDescription
--group-id <id>Filter by avatar group
--avatar-type <type>studio_avatar, digital_twin, or photo_avatar
--ownership <scope>public or private
--limit <n>Maximum items per page (1–50, default 20)
--token <cursor>Pagination cursor
The id field on a look is what you pass as avatar_id to video create. The look’s avatar_type field determines which engines and request parameters are compatible.

Voices

Browse voices and generate speech audio.
CommandAPI EndpointDescription
heygen voice listGET /v3/voicesList voices
heygen voice createPOST /v3/voicesDesign a voice from a natural language description
heygen voice speech createPOST /v3/voices/speechGenerate speech audio from text

Filter flags for voice list

FlagDescription
--type <type>public (default) or private
--engine <engine>Filter by voice engine (e.g. starfish)
--language <name>Filter by language name (e.g. English)
--gender <gender>male or female
--limit <n>Results per page (1–100, default 20)
--token <cursor>Pagination cursor

Flags for voice create

FlagDescription
--prompt <text>Natural language description of the desired voice (required)
--gender <value>male or female
--locale <bcp47>BCP-47 locale tag (e.g. en-US)
--seed <n>Increment to get a different batch of voice results (default 0)

Flags for voice speech create

FlagDescription
--text <text>Text to synthesize (required)
--voice-id <id>Voice ID to use (required)
--speed <n>Playback speed multiplier, 0.52.0 (default 1)
--language <code>Base language code (auto-detected if omitted)
--locale <bcp47>BCP-47 locale tag
--input-type <type>text (default) or ssml

Lipsync

Dub or replace audio on existing videos.
CommandAPI EndpointDescription
heygen lipsync createPOST /v3/lipsyncsCreate a lipsync job
heygen lipsync listGET /v3/lipsyncsList lipsync jobs
heygen lipsync get <lipsync-id>GET /v3/lipsyncs/{lipsync_id}Get lipsync details and status
heygen lipsync update <lipsync-id>PATCH /v3/lipsyncs/{lipsync_id}Update a lipsync title
heygen lipsync delete <lipsync-id>DELETE /v3/lipsyncs/{lipsync_id}Delete a lipsync
lipsync create requires a complex request body (video and audio sources use discriminated unions). Use -d:
cat request.json | heygen lipsync create -d -
Run heygen lipsync create --request-schema to see all available fields.

Video Translate

Translate videos into other languages with lip-sync.
CommandAPI EndpointDescription
heygen video-translate createPOST /v3/video-translationsCreate a video translation
heygen video-translate listGET /v3/video-translationsList translations
heygen video-translate get <id>GET /v3/video-translations/{id}Get translation details
heygen video-translate update <id>PATCH /v3/video-translations/{id}Update a translation title
heygen video-translate delete <id>DELETE /v3/video-translations/{id}Delete a translation
heygen video-translate languages listGET /v3/video-translations/languagesList supported languages
heygen video-translate proofreads createPOST /v3/video-translations/proofreadsCreate a proofread session
heygen video-translate proofreads get <id>GET /v3/video-translations/proofreads/{id}Get proofread status
heygen video-translate proofreads generate <id>POST /v3/video-translations/proofreads/{id}/generateGenerate video from proofread
heygen video-translate proofreads srt get <id>GET /v3/video-translations/proofreads/{id}/srtDownload proofread SRT
heygen video-translate proofreads srt update <id>PUT /v3/video-translations/proofreads/{id}/srtUpload edited SRT

Flags for video-translate create

FlagDescription
--output-languages <langs>Target language names, comma-separated (required). Use video-translate languages list for valid values
--mode <mode>speed or precision
--speaker-num <n>Number of speakers in source (improves separation)
--translate-audio-onlyTranslate audio without lip-sync
--enable-captionAdd captions to translated video
--input-language <code>Source language code (auto-detected if omitted)
--callback-url <url>Webhook URL for completion notifications
--title <text>Title for the translation job

Webhooks

Manage webhook endpoints for event notifications.
CommandAPI EndpointDescription
heygen webhook endpoints createPOST /v3/webhooks/endpointsCreate a webhook endpoint
heygen webhook endpoints listGET /v3/webhooks/endpointsList webhook endpoints
heygen webhook endpoints update <id>PATCH /v3/webhooks/endpoints/{id}Update a webhook endpoint
heygen webhook endpoints delete <id>DELETE /v3/webhooks/endpoints/{id}Delete a webhook endpoint
heygen webhook endpoints rotate-secret <id>POST /v3/webhooks/endpoints/{id}/rotate-secretRotate signing secret
heygen webhook event-types listGET /v3/webhooks/event-typesList available event types
heygen webhook events listGET /v3/webhooks/eventsList delivered events

Flags for webhook endpoints create

FlagDescription
--url <url>Publicly accessible HTTPS URL (required)
--events <types>Comma-separated event types to subscribe to (omit for all events)
--entity-id <id>Scope this endpoint to a specific resource
Store the secret returned by endpoints create and endpoints rotate-secret securely — it is used to verify webhook signatures and will not be shown again.

Assets

Upload files for use in video creation.
CommandAPI EndpointDescription
heygen asset createPOST /v3/assetsUpload a file to get an asset ID

Flags for asset create

FlagDescription
--file <path>Local file to upload (required). Max 32 MB. Supported types: image (png, jpeg), video (mp4, webm), audio (mp3, wav), pdf

User

CommandAPI EndpointDescription
heygen user me getGET /v3/users/meGet current user info, credits, and billing

Authentication

CommandDescription
heygen auth loginAuthenticate interactively (prompts for API key)
heygen auth statusVerify stored credentials and show account info
For CI/Docker, use the HEYGEN_API_KEY environment variable instead. It takes precedence over stored credentials.

Utility Commands

CommandDescription
heygen config set <key> <value>Set a persistent config value
heygen config get <key>Read a config value
heygen config listShow all config values and their sources
heygen updateSelf-update to the latest version
heygen update --version <tag>Update to a specific version (e.g. v0.1.0)

Config keys

KeyValuesDescription
outputjson, humanDefault output format (default: json)
analyticstrue, falseEnable or disable anonymous usage analytics