Skip to main content
This is the one-shot workflow — send a prompt, get a video. For multi-turn collaboration with the agent, see Interactive Sessions.

Video Agent in 30 seconds.

POST /v3/video-agents Send a text prompt describing the video you want. The agent handles scripting, avatar selection, scene composition, and rendering. The video is generated asynchronously — use the returned session_id to track progress and retrieve the video_id once rendering begins.

Powered by Hyperframes

Video Agent composes and renders its graphics with Hyperframes, HeyGen’s open-source HTML-to-video framework (GitHub). Every animated stat, chart, caption treatment, and scene transition in a generated video is a Hyperframes composition the agent authors to your direction. Because scenes are built in code rather than assembled from a fixed template set, the agent can produce any look you can describe — which is what makes the style paragraph in your prompt so effective. To render your own compositions through the same engine, see Hyperframes Cloud Rendering.

Request body

File input formats

Each item in the files array uses a type discriminator to specify how the file is provided:
Supported file types: image (png, jpeg), video (mp4, webm), audio (mp3, wav), and pdf. Upload files in advance via POST /v3/assets to get an asset_id — see Upload Assets.

Example request

Response

Poll for completion

Video generation is asynchronous — processing typically takes 5x–10x the final video length (a 1-minute video takes ~5–10 minutes; enterprise plans get priority queue access). Set poll intervals of 10–30 seconds, or skip polling entirely with a webhook. If a video has been processing for more than 24 hours, contact HeyGen Support with your video_id. First, poll the session to get the video_id, then poll the video for its final status:

Response (completed)

Video status transitions

The status field progresses through these values:

Response fields

Use webhooks instead of polling

Pass a callback_url in the creation request to receive a POST notification when the video completes or fails, instead of polling:
The callback_id is echoed back in the webhook payload so you can correlate notifications with requests.

List videos

Retrieve all videos in your account with pagination. Full schema: GET /v3/videos.

Delete a video

Permanently remove a video. Full schema: DELETE /v3/videos/{video_id}.
Response

Write a better prompt

The prompt is the whole interface — the agent makes every decision you leave open. Put the duration in the prompt, direct the look with a style paragraph, and paste a script for scene-by-scene control. The Prompting Guide builds one real prompt step by step and shows the video it produced.