HeyGen integration
HeyGen generates video of a presenter: an avatar that speaks a script, a still photo animated into a talking head, or a prompt handed to its own agent which picks the avatar and writes the script. It also EDITS video you already have: replace the audio and re-sync the lips (create_lipsync_v3), translate it while keeping the speaker's voice (create_video_translation_v3), cut a long recording into short captioned clips (create_ai_clipping_v3), strip the filler words (create_filler_word_removal_v3), or remove the background (create_background_removal). It clones and designs voices, and reads text aloud. Input media is always either a public HTTPS URL or an asset_id: upload a local file with upload_asset first, then pass the asset_id it returns. Rendering takes time, and the tools come in two shapes. A tool that WAITS says so in its own description, in those words, and returns the finished result with no status call to make; it gives up after ten minutes, which is longer than a normal render but shorter than a long or batched one. Every other tool returns an id straight away, and you read the result with the matching get tool, or have HeyGen call you by passing callback_url. HeyGen republished this API as v3. Tools whose description says SUPERSEDED call the older routes and are kept only so existing work keeps running; each one names its replacement. API access needs a Team plan or above.
Say what should happen.
The workflow builds itself.
Common HeyGen use cases
- Remove obsolete or test videos
- Build voice selection dropdowns
- Populate avatar selection interface
- Display video library with pagination
- Create CEO avatar for company announcements
- Monitor video generation in async workflows
- Accept user photo uploads for personalization
- Create marketing videos with diverse presenters
- Monitor translation progress in async workflows
- Create personalized messages from customer photos
What you can do with HeyGen
Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.
Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.
Batche, 11 operations
complete_asset_batch_v3Complete asset batch v3POSTMark several direct-to-storage uploads finished so HeyGen ingests them. Only meaningful after something outside this workflow has PUT the bytes to the presigned URLs from create_asset_upload_batch_v3; no tool here does that.create_asset_upload_batch_v3Create asset upload batch v3POSTReserve several direct-to-storage upload slots at once, each with a presigned upload_url and its asset_id. Sending the bytes is a separate HTTP PUT that NO tool here performs. To upload files from a workflow, call upload_asset once per file instead.create_lipsync_batch_v3Create lipsync batch v3POSTSubmit up to 100 lipsync payloads as a single batch. Each payload becomes one batch item, created and processed independently so one bad source does not fail the rest.create_video_batch_v3Create video batch v3POSTSubmit up to 100 video creation payloads in one request and return a batch id immediately.create_video_quality_batchCreate video quality batchPOSTSubmit up to 100 pairwise video comparisons for asynchronous processing.create_video_translation_batch_v3Create video translation batch v3POSTSubmit up to 100 video-translation payloads (identical in shape to create_video_translation_v3) as a single batch.get_asset_batchGet asset batchGETReturns batch aggregate status and one page of items with their ids and statuses. Item statuses are one of queued, processing, completed, or failed.get_comparison_batchGet comparison batchGETReturn aggregate batch status and one cursor-paginated page of comparison items.get_lipsync_batchGet lipsync batchGETReturns batch aggregate status and one page of items with their ids and statuses. Item statuses are one of queued, processing, completed, or failed.get_video_batchGet video batchGETReturns batch aggregate status and one page of items with their video ids and statuses. Item statuses are one of queued, processing, completed, or failed.get_video_translation_batchGet video translation batchGETReturns batch aggregate status and one page of items with their ids and statuses. Item statuses are one of queued, processing, completed, or failed.
Video, 11 operations
create_avatar_videoCreate avatar videoPOSTGenerate a video from a specific avatar or image, with explicit control over the avatar, the voice and the script. Waits for the job and returns the finished result; gives up after 10 minutes.create_talking_photo_videoCreate talking photo videoPOSTGenerate a video from a still photo that speaks a script. SUPERSEDED: prefer create_video_v3; this older route still answers but gains nothing new.create_videoCreate videoPOSTGenerate a video of a HeyGen avatar speaking a script. SUPERSEDED: prefer create_video_v3; this older route still answers but gains nothing new. Waits for the job and returns the finished result; gives up after 10 minutes.create_video_v3Create video v3POSTGenerate a video of a HeyGen avatar speaking, from a script or from audio you supply. Pick avatar_id with list_avatar_looks and voice_id with list_voices_v3. Waits for the job and returns the finished result; gives up after 10 minutes.delete_videoDelete videoDELETEDelete a video. SUPERSEDED: prefer delete_video_v3; this older route still answers but gains nothing new.delete_video_v2Delete video v2DELETEPermanently delete a video. Supports both generated and translated videos.delete_video_v3Delete video v3DELETEPermanently deletes a video and its associated files. This action cannot be undone.get_video_statusGet video statusGETCheck whether a video has finished rendering. SUPERSEDED: prefer get_video_v3; this older route still answers but gains nothing new.get_video_translate_statusGet video translate statusGETCheck whether a video translation has finished. SUPERSEDED: prefer get_video_translation; this older route still answers but gains nothing new.get_video_v2Get video v2GETGet detailed information about a video including status, URLs, and metadata. Supports both generated and translated videos.get_video_v3Get video v3GETReturns details for a video including status, video_url, thumbnail_url, duration, and failure info if applicable.
Voice, 8 operations
create_model_audio_voiceCreate model audio voicePOSTCreates a model-backed audio voice from one or more recordings, or retrains an existing professional voice when `voice_id` is supplied. Waits for the job and returns the finished result; gives up after 10 minutes.delete_audio_voiceDelete audio voiceDELETEDeletes the caller-owned model-backed audio voice. The voice is removed from subsequent reads, but a voice cannot be deleted while its status is `PENDING`.delete_voiceDelete voiceDELETEDeletes a voice clone owned by the caller. The voice must not be in use by any template.design_voiceDesign voicePOSTReturns up to 3 voices matching a natural language description (e.g. 'warm, confident female narrator'). Use the seed parameter to get different batches of results.get_audio_voiceGet audio voiceGETReturns one caller-owned model-backed audio voice and its current lifecycle state.get_voiceGet voiceGETReturns details for a specific voice, including clone workflow status when available. Use this to poll a voice clone until its status is 'complete'.list_audio_voicesList audio voicesGETList voices available for TTS generation with cursor-based pagination. Filter by type (public/private), language, and gender.list_model_audio_voicesList model audio voicesGETReturns the model-backed audio voices in the caller's workspace, ordered newest first. Use `limit` and `token` to retrieve additional pages.
Avatar, 6 operations
create_avatarCreate avatarPOSTCreates a new avatar from an image, video footage, or a text prompt. Supports photo, digital_twin, and prompt types. Avatar training is asynchronous.create_digital_twinCreate digital twinPOSTCreate a digital-twin avatar from recorded footage. SUPERSEDED: prefer create_avatar; this older route still answers but gains nothing new.delete_avatarDelete avatarDELETEPermanently deletes an avatar group and all its associated looks. Cannot delete public or community groups.get_avatarGet avatarGETReturns details for a specific avatar group including name, gender, preview URLs, looks count, and training status.list_avatar_groupsList avatar groupsGETReturns a paginated list of avatar groups (characters). Each group contains one or more looks. Filterable by ownership.list_avatarsList avatarsGETList the avatars available to the account. SUPERSEDED: prefer list_avatar_looks; this older route still answers but gains nothing new.
Ai clipping, 4 operations
create_ai_clipping_v3Create ai clipping v3POSTTurn a long video into one or more short, ready-to-share clips with captions, following the requested output_settings. Waits for the job and returns the finished result; gives up after 10 minutes.delete_ai_clippingDelete ai clippingDELETESoft-deletes an AI clip job and its clips.get_ai_clippingGet ai clippingGETReturns the full job resource including produced clips, statuses, and presigned download URLs.list_ai_clipping_v3List ai clipping v3GETReturns a cursor-paginated list of AI clip jobs in the authenticated user's workspace, newest first.
Background removal, 4 operations
create_background_removalCreate background removalPOSTRemove a video's background, returning the subject on transparency, an alpha matte and the scene without the subject. Re-sending a request_id returns the original job. Waits for the job and returns the finished result; gives up after 10 minutes.delete_background_removalDelete background removalDELETESoft-deletes a background removal job.get_background_removalGet background removalGETReturns a background removal job including its status and, once completed, presigned download URLs for the produced layers.list_background_removalsList background removalsGETReturns a paginated list of background removal jobs for the account, newest first.
Brand glossarie, 4 operations
create_brand_glossaryCreate brand glossaryPOSTCreates a brand glossary in your workspace. Pass the returned `brand_glossary_id` when creating a video or translation to apply it.delete_brand_glossaryDelete brand glossaryDELETEDeletes a brand glossary. This cannot be undone: there is no way to restore a deleted brand glossary through the API.get_brand_glossaryGet brand glossaryGETReturns one brand glossary with its full term list, so you can see exactly which terms are remapped and how.list_brand_glossariesList brand glossariesGETList brand glossaries (custom term mappings, a.k.a. brand voices) in the authenticated user's workspace.
Brand kit, 4 operations
create_brand_kitCreate brand kitPOSTCreates a brand kit by importing brand assets from a public website, including logos, colors and font files found on the site.delete_brand_kitDelete brand kitDELETEDeletes a brand kit, along with the colors, logos and fonts it holds. This cannot be undone: there is no way to restore a deleted brand kit through the API.get_brand_kitGet brand kitGETReturns one brand kit with the colors, logos and fonts it was built from, and which of them play which role.list_brand_kitsList brand kitsGETReturns brand kits available in the authenticated user's workspace. Each brand kit contains colors, fonts, and logos that can be applied to Video Agent sessions.
Lipsync, 4 operations
create_lipsync_v3Create lipsync v3POSTReplaces the audio on an existing video and re-animates the speaker's lip movements to match the new audio. Waits for the job and returns the finished result; gives up after 10 minutes.delete_lipsyncDelete lipsyncDELETEPermanently deletes a lipsync job and its associated files. This action cannot be undone.get_lipsyncGet lipsyncGETReturns details for a lipsync job including status, video_url, caption_url, and failure info if applicable.list_lipsyncs_v3List lipsyncs v3GETReturns a paginated list of all lipsync jobs in the account.
Podcast, 4 operations
create_podcast_v3Create podcast v3POSTGenerate a multi-avatar conversational podcast video from a topic and/or source files plus two avatars. Waits for the job and returns the finished result; gives up after 10 minutes.delete_podcastDelete podcastDELETESoft-deletes a podcast so it no longer appears in the get/list endpoints. Does not cancel in-flight generation or permanently remove files.get_podcastGet podcastGETReturns a podcast's status and, once completed, its video_url, thumbnail_url, and duration.list_podcasts_v3List podcasts v3GETReturns a paginated list of the podcasts in the authenticated workspace, newest first.
Render, 4 operations
create_hyperframes_render_v3Create hyperframes render v3POSTRenders a HyperFrames composition (an HTML+JS+assets project bundled as a .zip) into a video. Waits for the job and returns the finished result; gives up after 10 minutes.delete_renderDelete renderDELETESoft-deletes a HyperFrames render. Subsequent GETs return 404.get_renderGet renderGETReturns full details for a single HyperFrames render, including status and signed video_url when complete.list_hyperframes_renders_v3List hyperframes renders v3GETReturns a cursor-paginated list of HyperFrames renders in the account, newest first.
Statuse, 4 operations
bulk_asset_statuses_v3Bulk asset statuses v3GETReturns statuses for up to 100 assets in one request, addressed by comma-separated asset_ids and/or batch_ids query params.bulk_lipsync_statuses_v3Bulk lipsync statuses v3GETReturns statuses for up to 100 lipsyncs in one request, addressed by comma-separated lipsync_ids and/or batch_ids query params.bulk_video_statuses_v3Bulk video statuses v3GETReturns statuses for up to 100 videos in one request, addressed by comma-separated video_ids and/or batch_ids query params.bulk_video_translation_statuses_v3Bulk video translation statuses v3GETReturns statuses for up to 100 video translations in one request, addressed by comma-separated video_translation_ids and/or batch_ids query params.
Asset, 3 operations
delete_assetDelete assetDELETEPermanently deletes an asset. The asset must belong to the caller's workspace and not already be deleted.get_assetGet assetGETReturns metadata for an asset in the caller's workspace, including owner, upload timestamp, file type, and a publicly accessible URL.list_assetsList assetsGET**Beta**, this endpoint may change with a few days' notice. Lists a workspace member's uploaded assets, newest first, with cursor-based pagination.
Look, 3 operations
delete_lookDelete lookDELETEDeletes an avatar look and its backing resource. Supported types: photo_avatar, digital_twin, and kit-based looks. Studio avatar (model_index) types cannot be deleted via the API.get_lookGet lookGETReturns details for a specific avatar look including supported engines, preferred orientation, preview URLs, and training status.list_avatar_looksList avatar looksGETReturns a paginated list of avatar looks (outfits, poses, styles). Filterable by group_id, avatar_type, and ownership. The look id is the avatar_id to pass when creating a video.
Template, 3 operations
generate_from_template_v3Generate from template v3POSTGenerates a video from the template by replacing its variables (text, image, video, audio, character, voice). Waits for the job and returns the finished result; gives up after 10 minutes.get_templateGet templateGETReturns template details including its variable schema (with current default values) and scenes.list_templates_v3List templates v3GETReturns a paginated list of API-ready templates in the workspace. Templates are created and edited in the HeyGen web editor; only templates with variables defined are listed.
Video agent, 3 operations
create_video_agent_v3Create video agent v3POSTOne-shot video generation from a prompt, agent handles scripting, avatar selection, scene composition, and rendering.get_video_agentGet video agentGETReturns the current status, progress, video_id, and recent chat messages for a session.list_video_agent_sessionsList video agent sessionsGETReturns a paginated list of video agent sessions for the authenticated user, sorted newest-first.
Video translation, 3 operations
create_video_translation_v3Create video translation v3POSTTranslates a video into one or more target languages with voice cloning and lip-sync. Returns one video_translation_id per language.delete_video_translationDelete video translationDELETEPermanently deletes a video translation and its associated files. This action cannot be undone.get_video_translationGet video translationGETReturns details for a translation job including status, output language, video_url, and failure info if applicable.
Avatar realtime, 2 operations
create_avatar_realtime_sessionCreate avatar realtime sessionPOSTStart a low-latency streaming avatar session and return a `stream_id`.get_avatar_realtimeGet avatar realtimeGETGet the status of a streaming avatar session.
Cancel, 2 operations
cancel_avatar_realtime_sessionCancel avatar realtime sessionPOSTCancel a running streaming session.cancel_workflow_runCancel workflow runPOSTRequests cancellation of a run.
Comparison, 2 operations
create_video_quality_comparison_v3Create video quality comparison v3POSTSubmit one pairwise video comparison. Waits for the job and returns the finished result; gives up after 10 minutes.get_comparisonGet comparisonGETReturn the latest state and result or terminal error for one comparison.
Endpoint, 2 operations
create_webhook_endpointCreate webhook endpointPOSTRegisters an HTTPS URL to receive webhook event notifications. Returns the endpoint details and a signing secret.delete_webhook_endpointDelete webhook endpointDELETEPermanently removes a webhook endpoint. Events will no longer be delivered to this URL. This action cannot be undone.
Execution, 2 operations
create_workflow_executionCreate workflow executionPOSTRun one HeyGen workflow by name with the inputs it declares, and return its output. list_workflows shows the available workflows and their shapes. Waits for the job and returns the finished result; gives up after 10 minutes.get_executionGet executionGETPoll the status and output of a workflow execution. **Single-workflow executions** return output in the `output` field.
Filler word removal, 2 operations
create_filler_word_removal_v3Create filler word removal v3POSTRemove filler words ("um", "uh") and overlong silences from a video, returning one cleaned cut plus the number of cuts and how much was removed. Waits for the job and returns the finished result; gives up after 10 minutes.get_filler_word_removalGet filler word removalGETReturns the job resource: lifecycle status, progress, and, once completed, the presigned download URL of the cleaned video plus removal statistics.
Generate, 2 operations
create_video_agentCreate video agentPOSTCreate a video from a text prompt using HeyGen's Video Agent. Waits for the job and returns the finished result; gives up after 10 minutes.generate_from_proofread_v3Generate from proofread v3POSTStarts final video generation using the approved subtitles from a proofread session.
Me, 2 operations
get_user_me_v1Get user me v1GETReturns the authenticated user's profile, remaining credits or balance, and billing details.get_user_me_v3Get user me v3GETReturns the authenticated user's profile, remaining credits or balance, and billing details.
Proofread, 2 operations
create_proofread_v3Create proofread v3POSTCreates a proofread session that extracts editable subtitles from a video before final rendering.get_proofreadGet proofreadGETReturns the status and details of a proofread session.
Workflow, 2 operations
create_workflowCreate workflowPOSTAtomically creates a workflow and publishes its required product graph as immutable version 1: the graph is validated and compiled first, then the workflow.get_workflowGet workflowGETReturns a single workflow definition, including its current mutable draft graph.
Workflow run, 2 operations
create_workflow_runCreate workflow runPOSTStarts a run of the workflow named in the request body. Waits for the job and returns the finished result; gives up after 10 minutes.get_workflow_runGet workflow runGETReturns a single workflow run: the exact version it is pinned to, created/started/completed timestamps, aggregate node progress, a sanitized terminal error (if any).
Caption, 1 operation
get_video_translate_captionGet video translate captionGETGet the caption file (SRT or VTT format) for a completed video translation. The translation must have status "completed", use get_video_v2 to check status first.
Clone, 1 operation
clone_voiceClone voicePOSTCreate a voice clone from an audio sample of a speaker. Pass the returned voice id as voice_id when generating speech or an avatar video. Waits for the job and returns the finished result; gives up after 10 minutes.
Complete, 1 operation
complete_asset_uploadComplete asset uploadPOSTMark a direct-to-storage upload finished so HeyGen ingests the file. Only meaningful after something outside this workflow has PUT the bytes to the presigned URL from create_asset_upload; no tool here does that.
Consent, 1 operation
create_avatar_consentCreate avatar consentPOSTInitiates the consent flow for an avatar group and returns a URL for the user to complete approval in their browser.
Direct upload, 1 operation
create_asset_uploadCreate asset uploadPOSTReserve a direct-to-storage upload slot, returning a presigned upload_url and the asset_id the file will have.
Graph execution, 1 operation
create_graph_executionCreate graph executionPOSTRun several HeyGen workflows wired as a graph, returning every output keyed by workflow id. list_workflows shows the available workflows. Waits for the job and returns the finished result; gives up after 10 minutes.
Language, 1 operation
list_languagesList languagesGETReturns all supported target language names for video translation.
Node type, 1 operation
list_node_typesList node typesGETDiscovery catalog of authorable node types, grouped by family with per-variant config schema and ports.
Resource, 1 operation
get_video_agent_resourceGet video agent resourceGETReturns a single session resource (image, video, draft, avatar, voice, etc.) by its resource_id.
Scene, 1 operation
list_scenesList scenesGETReturns the video's scenes together with the video-level context needed to use them.
Speech, 1 operation
create_speech_v3Create speech v3POSTSynthesize speech audio from text using a specified voice. The voice must support the starfish engine, use list_voices_v3 (with engine=starfish) to find compatible voices.
Srt, 1 operation
download_proofread_srt_v3Download proofread srt v3GETReturns presigned download URLs for the edited and original SRT files of a completed proofread session.
Text, 1 operation
append_avatar_realtime_textAppend avatar realtime textPOSTAppend a text delta to a session created with `type: text_stream`.
Tt, 1 operation
generate_model_speechGenerate model speechPOSTGenerates speech using the voice identified by `voice_id` and returns a URL for one completed mono PCM16 WAV file at 44.1 kHz.
Version, 1 operation
get_versionGet versionGETReturns a single immutable, compiled workflow version, including its full plan summary.
Showing the first 120 of 156 endpoints. The rest are in the product, searchable from the workflow builder and from chat.
Use HeyGen from Claude Code, Cursor or Codex
Connect HeyGen in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its HeyGen operations become tools the client can call, next to every other integration you connected.
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"
[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"{
"mcpServers": {
"livecontext": {
"type": "http",
"url": "https://livecontext.ai/mcp",
"headers": {
"X-API-Key": "YOUR_API_KEY"
}
}
}
}How to connect HeyGen
- Create your workspace
Sign up free. Nothing to install.
- Connect HeyGen once
Add your HeyGen connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.
- Describe the job in chat
The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.
HeyGen integration FAQ
What can you do with the HeyGen integration?
LiveContext exposes 156 operations on HeyGen, covering batche, video, voice and avatar. Common uses include Remove obsolete or test videos, Build voice selection dropdowns and Populate avatar selection interface.
