Video
HeyGen
API integration
Ship Video features without building the integration. Full HeyGen API access via Proxy and 70+ MCP-ready tools for AI agents — extend models and mappings to fit your product.
Talk to usUse Cases
Why integrate with HeyGen
Common scenarios for SaaS companies building HeyGen integrations for their customers.
Embed personalized video outreach in sales engagement tools
Let SDRs and AEs generate thousands of unique, name-personalized avatar videos directly from your platform's sequencing UI. Truto handles HeyGen auth and the async generation lifecycle so your team ships the feature without managing render queues.
Add automated video translation to LMS and content platforms
Offer course creators and marketers a one-click button to translate existing videos into dozens of languages with lip-sync and editable subtitles. Your users stay in your product while HeyGen handles rendering and proofreading.
Ship interactive video avatars inside support and chat products
Upgrade text-based bots into live streaming avatars that speak LLM responses out loud. Customer experience platforms can package this as a premium tier without owning the WebRTC streaming or voice synthesis stack.
Generate dynamic product and listing videos from structured data
Real estate, e-commerce, and marketing SaaS can turn CRM or catalog records into avatar-narrated videos automatically. Connect once via Truto and trigger video generation from any record change.
Capture voice and avatar clones natively in your app
Let users record consent-based avatar and voice clones inside your platform rather than redirecting them to HeyGen's dashboard. Useful for creator tools, sales platforms, and white-labeled video products.
What You Can Build
Ship these features with Truto + HeyGen
Concrete product features your team can ship faster by leveraging Truto’s HeyGen integration instead of building from scratch.
Bulk personalized video generation with webhook delivery
Trigger thousands of video renders from a template and listen to HeyGen webhook events to know when each `video_url` and `gif_url` is ready for email embedding.
Live streaming avatar chat sessions
Spin up video agent sessions, retrieve access tokens, and push messages to a real-time avatar from your own chat or support UI.
End-to-end video localization pipeline
Upload a source video, kick off a translation job, expose the generated SRT files for in-app proofreading, then re-render the final lip-synced output.
In-app voice and avatar cloning flow
Capture user consent, upload reference media via direct-to-storage uploads, and create cloned voices and avatars that get reused across future video generations.
Template-driven video creation from structured records
Map fields from CRM, PIM, or LMS records into HeyGen workflow executions to produce on-brand videos using your customer's brand kits and glossaries.
Lip-sync replacement for existing video assets
Let users upload a base video and swap the audio track with synthesized speech or a cloned voice, producing a new lip-synced render for outbound campaigns.
SuperAI
HeyGen AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_hey_gen_video_agents
List HeyGen video agents available in your account. Returns video agent records including id, name, and created_at.
create_a_hey_gen_video_agent
Create a new HeyGen video agent session. Returns session_id, url, and access_token required for connecting to the streaming session.
get_single_hey_gen_video_agent_by_id
Get a single HeyGen video agent by id. Returns the video agent record including id, name, and created_at.
hey_gen_video_agents_send_message
Send a message to an active HeyGen video agent session identified by session_id. Returns task_id, session_id, and status confirming the message was accepted.
hey_gen_video_agents_stop
Stop an active HeyGen video agent session. Returns session_id and status confirming the session was stopped. Required: session_id.
list_all_hey_gen_video_agents_styles
List available HeyGen video agent styles. Returns: id.
list_all_hey_gen_brand_glossaries
List HeyGen brand glossaries. Returns a collection of brand glossary records. Returns: id.
list_all_hey_gen_brand_kits
List all brand kits available in HeyGen. Returns a collection of brand kit objects; no source documentation was available to enumerate additional fields beyond id.
list_all_hey_gen_avatars
List avatars available in heygen. Returns: id.
create_a_hey_gen_avatar
Create a new avatar in heygen. Returns: id.
get_single_hey_gen_avatar_by_id
Get a single heygen avatar by id. Returns: id. Required: id.
delete_a_hey_gen_avatar_by_id
Delete a heygen avatar by id. Returns an empty 204 response on success. Required: id.
list_all_hey_gen_avatars_looks
List all HeyGen avatar looks available in the account. Returns: id.
get_single_hey_gen_avatars_look_by_id
Get a single HeyGen avatar look by id.
hey_gen_avatars_looks_partial_update
Partially update a HeyGen avatar look by look_id.
delete_a_hey_gen_avatars_look_by_id
Delete a HeyGen avatar look by id. Returns an empty 204 response on success. Required: id.
create_a_hey_gen_avatar_group_consent
Create a consent record for a HeyGen avatar group. Returns: group_id. Required: group_id.
create_a_hey_gen_audio_text_to_speech
Create a text-to-speech audio file in HeyGen using the v1 API. Returns the generated audio including audio_url. Required: text, voice_id.
list_all_hey_gen_audio_voices
List all available audio voices in HeyGen. Returns: voice_id, name.
list_all_hey_gen_audio_sounds
List audio sounds available in HeyGen. Returns: id.
list_all_hey_gen_voices
List all available HeyGen voices. Returns: voice_id, name, language, type, preview_audio, support_pause, emotion_support.
create_a_hey_gen_voice
Create a new HeyGen voice. Returns: voice_id, name, language, type, preview_audio, support_pause, emotion_support.
get_single_hey_gen_voice_by_id
Get a single HeyGen voice by id. Returns: voice_id, name, language, type, preview_audio, support_pause, emotion_support. Required: id.
create_a_hey_gen_voices_speech
Create speech audio in HeyGen by submitting a voice synthesis request. Returns audio output; specific response fields are not enumerable from the available source documentation.
create_a_hey_gen_voices_clone
Create a cloned voice in HeyGen by submitting a voice clone request. Returns the newly created voice clone object including its voice_id.
list_all_hey_gen_videos
List HeyGen videos in the current account. Returns a collection of video records including video_id, status, video_title, video_url, thumbnail_url, duration, and created_at.
create_a_hey_gen_video
Create a new HeyGen AI-generated video. Video generation is asynchronous — poll the get method to check progress. Returns video_id of the newly queued video. Required: video_inputs.
get_single_hey_gen_video_by_id
Get a single HeyGen video by id. Returns video_id, status, video_title, video_url, thumbnail_url, duration, gif_url, created_at, and caption_url. Required: id.
delete_a_hey_gen_video_by_id
Delete a HeyGen video by id. Returns an empty 204 response on success. Required: id.
list_all_hey_gen_video_agent_videos
List videos associated with a specific HeyGen video agent session. Returns video records including id, status, video_url, and created_at. Required: session_id.
get_single_hey_gen_video_agent_resource_by_id
Get a specific HeyGen video agent resource by id. Returns: id. Required: session_id, id.
create_a_hey_gen_video_translate
Create a HeyGen video translation job that translates a source video into a specified target language. Returns: video_translate_id. Required: video_url, output_language.
list_all_hey_gen_video_translate_target_languages
List all supported target languages available for HeyGen video translation. Returns: language, name. No required parameters.
list_all_hey_gen_video_translate_captions
List heygen video translate captions available in the account. Returns a collection of caption records. Returns: id.
list_all_hey_gen_video_translations
List all video translation jobs in HeyGen. Returns: video_translation_id, status, output_language, url, title, created_at.
create_a_hey_gen_video_translation
Create a new video translation job in HeyGen. Returns: video_translation_id, status, output_language, url, title, created_at. Required: video_url, output_language.
get_single_hey_gen_video_translation_by_id
Get a single HeyGen video translation job by id. Returns: video_translation_id, status, output_language, url, title, created_at. Required: id.
hey_gen_video_translations_partial_update
Update an existing HeyGen video translation job by video_translation_id. Returns: video_translation_id, status, output_language, url, title, created_at.
delete_a_hey_gen_video_translation_by_id
Delete a HeyGen video translation job by id. Returns an empty 204 response on success. Required: id.
list_all_hey_gen_video_translations_languages
List the supported languages available for HeyGen video translation. Returns: language_code, language.
create_a_hey_gen_video_translations_proofread
Create a HeyGen video translation proofreading job. Returns: id.
get_single_hey_gen_video_translations_proofread_by_id
Get a HeyGen video translation proofreading job by id. Returns: id. Required: id.
list_all_hey_gen_video_translation_proofread_srts
List SRT subtitle content for a HeyGen video translation proofread. Returns: proofread_id, srt. Required: proofread_id.
update_a_hey_gen_video_translation_proofread_srt_by_id
Update the SRT subtitle content for a HeyGen video translation proofread. Returns: proofread_id, srt. Required: proofread_id.
create_a_hey_gen_video_translation_proofread_generate
Trigger the generation process for a HeyGen video translation proofread, initiating content generation for the specified proofread job. Required: proofread_id.
list_all_hey_gen_lipsyncs
List heygen lipsync jobs. Returns: id, status, created_at.
create_a_hey_gen_lipsync
Create a new heygen lipsync job. Returns: id, status, created_at.
get_single_hey_gen_lipsync_by_id
Get a single heygen lipsync job by id. Returns: id, status, created_at.
hey_gen_lipsyncs_partial_update
Update a heygen lipsync job by id. Returns: id, status, created_at.
delete_a_hey_gen_lipsync_by_id
Delete a heygen lipsync job by id. Returns an empty 204 response on success.
list_all_hey_gen_hyperframes_renders
List HeyGen hyperframe renders. Returns render records including their id.
create_a_hey_gen_hyperframes_render
Create a new HeyGen hyperframe render. Returns the created render record including its id.
get_single_hey_gen_hyperframes_render_by_id
Get a single HeyGen hyperframe render by id. Returns the render record including its id. Required: id.
delete_a_hey_gen_hyperframes_render_by_id
Delete a HeyGen hyperframe render by id. Returns an empty 204 response on success. Required: id.
list_all_hey_gen_workflows
List HeyGen workflows. Returns workflow objects including id and workflow-specific attributes; consult the HeyGen API docs for the full field-level breakdown of each record.
create_a_hey_gen_workflows_execution
Create a new HeyGen workflow execution to trigger a workflow run. Returns: id.
get_single_hey_gen_workflows_execution_by_id
Get a HeyGen workflow execution by id to retrieve its current details. Returns: id. Required: id.
create_a_hey_gen_workflows_graph_execution
Create a new HeyGen workflow graph execution. No parameter or response-field documentation was found in the available source; the full request body and response shape are not enumerable from current source — consult the HeyGen API reference for field-level details.
list_all_hey_gen_webhooks_event_types
List all available webhook event types in HeyGen. Returns: event_type, description.
list_all_hey_gen_webhooks_endpoints
List registered HeyGen webhook endpoints. Returns: endpoint_id, url, events, status, and created_at for each endpoint. The secret field is always null in list responses.
create_a_hey_gen_webhooks_endpoint
Register an HTTPS URL as a HeyGen webhook endpoint to receive event notifications. Returns the created endpoint including endpoint_id, url, events, status, created_at, and a one-time signing secret. Store the secret securely — it is not shown again after creation. Required: url, events.
hey_gen_webhooks_endpoints_partial_update
Update an existing HeyGen webhook endpoint by id. Returns the updated endpoint including endpoint_id, url, events, status, and created_at. Required: id.
delete_a_hey_gen_webhooks_endpoint_by_id
Permanently delete a HeyGen webhook endpoint by id, stopping all event delivery to that URL. This action cannot be undone. Returns an empty response on success. Required: id.
create_a_hey_gen_webhook_endpoint_rotate_secret
Rotate the signing secret for a HeyGen webhook endpoint, immediately invalidating the old one. Returns: endpoint_id, secret, url, events, status, and created_at. Store the new secret securely — it will not be shown again. Required: endpoint_id.
list_all_hey_gen_webhooks_events
List HeyGen webhook events from the paginated delivery history, optionally filtered by event type or entity. Returns: event_type, entity_id.
create_a_hey_gen_asset
Upload a file to HeyGen as a reusable asset. Returns: asset_id, url, file_type, created_at, owner. Required: file. Max 32 MB; supported types are png, jpeg, mp4, webm, mp3, wav, and pdf.
get_single_hey_gen_asset_by_id
Get metadata for a HeyGen asset by id. Returns: asset_id, owner, created_at, file_type, url.
delete_a_hey_gen_asset_by_id
Permanently delete a HeyGen asset by id. Returns: asset_id.
hey_gen_assets_complete
Finalize a direct-to-S3 upload for a HeyGen asset by id. Call after the upload PUT returns 200; repeated calls are idempotent and return the same finalized asset. Returns: asset_id, url, file_type, created_at, owner.
create_a_hey_gen_assets_direct_upload
Begin a direct-to-S3 asset upload in HeyGen. After calling this endpoint, PUT the file bytes directly to the returned upload_url, then finalize the upload by calling POST /v3/assets/{asset_id}/complete. Returns: asset_id, upload_url.
Why Truto
Why use Truto’s MCP server for HeyGen
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 500+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
How It Works
From zero to integrated
Go live with HeyGen in under an hour. No boilerplate, no maintenance burden.
Link your customer’s HeyGen account
Use Truto’s frontend SDK to connect your customer’s HeyGen account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call HeyGen
Truto’s Proxy API is a 1-to-1 mapping of the HeyGen API. You call us, we call HeyGen, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate HeyGen’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about HeyGen on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
How do end users authenticate their HeyGen accounts?
HeyGen uses API key authentication. Through Truto, your end users provide their HeyGen API key during the connection flow, and Truto stores and injects it on every request so you never handle the credential directly.
How should we handle long-running video renders?
Video generation is asynchronous. The recommended pattern is to call the create video endpoint, then either register a HeyGen webhook endpoint via Truto to receive completion events, or poll the get-video-by-id endpoint until the status resolves to completed or failed.
Can we upload large video and audio files without proxying through our backend?
Yes. HeyGen exposes a direct upload flow for assets, which Truto surfaces through the assets direct upload and assets complete operations. Your frontend can upload directly to HeyGen's storage and then mark the upload complete.
Does Truto support HeyGen's real-time streaming avatars?
Yes. You can create a video agent session, fetch its access token, send messages, and stop the session via Truto. The actual WebRTC media stream is established directly between your client and HeyGen using the returned token.
Can we let users edit translated subtitles before the final render?
Yes. After triggering a translation proofread, you can list the generated SRT entries, update them with corrections (useful for industry jargon or brand terms), and then call the proofread generate endpoint to produce the final lip-synced video.
Can we access a user's brand kits, glossaries, and existing avatars?
Yes. Truto exposes list endpoints for HeyGen brand kits, brand glossaries, avatars, avatar looks, and voices, so your UI can let users pick from their own existing HeyGen assets when composing a video.
From the Blog
HeyGen integration guides
Deep dives, architecture guides, and practical tutorials for building HeyGen integrations.
HeyGen
Get HeyGen integrated into your app
Our team understands what it takes to make a HeyGen integration successful. A short, crisp 30 minute call with folks who understand the problem.