Skip to main content
Glama

create_video

Render a talking-avatar video with HeyGen from a script or scenes, wait for completion, and return the video URL. Optionally save the MP4 locally.

Instructions

Primary tool — generates an avatar video with HeyGen and waits until it finishes rendering, returning the final video_url. Needs an avatar_id (list_avatars) and a voice_id (list_voices). Pass scenes for a multi-scene video, or avatar_id/text/voice_id for a single scene. Optionally saves the mp4 locally via output_path. Rendering typically takes 1-3 minutes and consumes account credits — check get_quota first for long scripts.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textNoScript the avatar speaks. Max 1500 characters per scene — split longer scripts across scenes.
speedNoSpeech rate (0.5–1.5). Default: 1.0
titleNoTitle shown in the HeyGen dashboard.
localeNoLocale for multilingual voices, e.g. 'es-MX'. Only for voices with support_locale: true.
scenesNoMulti-scene video: one entry per scene, each with its own avatar, text, voice and background. Overrides the flat single-scene arguments.
captionNoBurn subtitles into the video. Default: false
emotionNoDelivery style. Only works on voices with emotion_support: true.
voice_idNoHeyGen voice ID. Use list_voices to find one. Required when text is used.
audio_urlNoPublic URL of a pre-recorded audio file to lip-sync instead of text+voice_id.
avatar_idNoHeyGen avatar ID. Use list_avatars to find one. Required unless talking_photo_id or scenes is given.
dimensionNoOutput size preset: 1080p_landscape (1920x1080), 720p_landscape (1280x720), 1080p_portrait (1080x1920), 720p_portrait (720x1280), square (1080x1080).720p_landscape
backgroundNoScene background. Omit to keep the avatar's original background.
output_pathNoAbsolute path to save the finished .mp4 (e.g. /tmp/demo.mp4). Directory is created if needed. HeyGen URLs expire after 7 days, so save anything you want to keep.
avatar_styleNoFraming of the avatar. Default: normal
timeout_secondsNoMax seconds to wait for rendering. Default: 300. On timeout the video keeps rendering — use check_video with the returned video_id.
talking_photo_idNoTalking photo ID, as an alternative to avatar_id. Use list_avatars with include_talking_photos.
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the blocking behavior (waits until rendering completes), typical duration (1-3 minutes), credit consumption, and the optional local save via output_path. Missing details like URL expiry are covered in the schema, not the description, but the description gives a solid behavioral overview.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise yet information-dense. Each sentence serves a distinct purpose: defining the tool, stating prerequisites, explaining invocation modes, and flagging cost/timing. It's front-loaded with the core action and follow-up details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 16 parameters, the description provides high-level flow, blocking behavior, dependencies, and a cost warning. It mentions the return of video_url but not other potential outputs; however, the schema's rich parameter descriptions and absence of an output schema make this sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed per-parameter descriptions, so the baseline is 3. The description adds value by explaining the relationship between flat arguments and the scenes array, and by highlighting key dependencies (avatar_id, voice_id, output_path) that are essential for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'generates an avatar video with HeyGen and waits until it finishes rendering, returning the final video_url.' This is a specific verb+resource description that distinguishes it from sibling tools like generate_video by emphasizing the synchronous wait-and-return behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It sets expectations for prerequisites (avatar_id from list_avatars, voice_id from list_voices), explains single vs multi-scene usage, and advises checking get_quota for long scripts. It doesn't explicitly contrast with the sibling generate_video tool, but does clarify the primary use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/carlosvidal/heygen-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server