---
title: HeyGen API Integration on Truto
slug: heygen
category: Video
canonical: "https://truto.one/integrations/detail/heygen/"
---

# HeyGen API Integration on Truto



**Category:** Video  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 70 tools for HeyGen that AI agents can call directly.

- **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.

## How it works

1. **Link your customer's HeyGen account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach HeyGen.** The Proxy API is a 1-to-1 mapping of the HeyGen API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **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

- **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.

## FAQs

### 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.

## Related reading

- [Connect HeyGen to Claude: Scale Video Agents and Voice Synthesis](https://truto.one/blog/connect-heygen-to-claude-scale-video-agents-and-voice-synthesis/) — Learn how to connect HeyGen to Claude using a managed MCP server. Scale asynchronous video generation, orchestrate interactive agents, and automate video translation.
- [Connect HeyGen to ChatGPT: Generate AI Videos and Custom Avatars via MCP](https://truto.one/blog/connect-heygen-to-chatgpt-generate-ai-videos-and-custom-avatars/) — A technical guide to securely connecting HeyGen to ChatGPT using a managed MCP server. Automate video generation, avatar creation, and voice synthesis workflows.
- [Connect HeyGen to AI Agents: Automate Video Translation & Lipsync](https://truto.one/blog/connect-heygen-to-ai-agents-automate-video-translation-and-lipsync/) — A deep-dive engineering guide to integrating HeyGen with AI agents. Learn how to fetch HeyGen tools via Truto, handle async video jobs, and build video workflows.
