What you can build
Create Your Avatar
A digital twin from video, or an avatar from one photo.

Video Agent
Prompt to finished video. Edit single scenes after.

HeyGen Video
Text, image, or reference to a 5–15s clip, up to 2K. New.
Avatar Video
Your avatar, voice, and script, up to Avatar V.

HeyGen Image
Your identity, a new look. Portraits from reference photos.

Templates
Turn any video into a template, then one call per viewer. New.

Look Packs
Dress an avatar in a curated set of looks.

HyperFrames
HTML, CSS, and JS to motion-graphics video.

Instant Voice Clone
One recording to a HeyGen Voice in seconds. New.

Professional Voice Clone
Studio-grade voice trained on 20+ minutes of audio.

Text to Speech
Completed or streaming speech from your HeyGen Voice. New.

Video Translation
175+ languages with voice cloning and lip-sync.
Start with your agent
Paste this into Claude Code, Codex, or Cursor. It reads the whole API, sets up your key, and makes your first video with you.Prompt for your agent
Your first video
Get your API key
Create a key in the API dashboard. Every request below needs it.
Try it in the Playground
Fire a real request from your browser before writing any code.
Base URL
https://api.heygen.com · Auth header X-Api-Key: <your-key>Authenticate
Create a key in the API keys page. For key rotation, see the API Key guide.
Create a video
Send a prompt to the Video Agent. It scripts, picks the avatar and voice, and renders.
- curl
- Python
- Node.js
Response
Get the result
Poll the session for a
video_id, then the video for its video_url. Or skip polling with a webhook via callback_url.- Python
- curl
Response (completed)
Working from an agent or terminal?
Skip the raw HTTP. Both surfaces wrap the same API.MCP Server
Plug HeyGen into Claude, Cursor, or any MCP-capable agent. It handles the calls for you.
CLI
heygen video create, heygen video download. Scriptable from any shell or CI job.Build with your stack
Webhooks
Authentication
Usage Limits
Migrating from v1/v2? Supported until October 31, 2026. See the version comparison.
Troubleshooting
Video status is failed
Video status is failed
Inspect
failure_code and failure_message on GET /v3/videos/{video_id}. Full catalog in Error Codes.429 Too Many Requests
429 Too Many Requests
Rate or concurrency limit hit. Respect
Retry-After and back off. Enterprise plans get higher limits; see Usage Limits.400 download_failed
400 download_failed
A URL you passed couldn’t be fetched. It must be publicly accessible and point directly at the file.

