HeyGen
HeyGen is an AI video generation platform that creates studio-quality avatar videos, voice clones, and translated video content from simple text prompts. The product line includes Avatar V (digital twins), Photo Avatar, Avatar IV, the Starfish text-to-speech engine, the Video Agent API, Video Translation, and Lipsync. HeyGen serves sales, marketing, e-learning, and localization teams with both self-serve pay-as-you-go API access (starting at a $5 minimum) and enterprise contracts. The company is SOC 2 Type II and GDPR compliant and has powered 50M+ generated videos.
APIs
HeyGen API
The HeyGen REST API exposes video generation, avatar management, text-to-speech (Starfish), video translation, and lipsync capabilities. It supports avatar videos generated from...
Collections
HeyGen API
OPENPricing Plans
Rate Limits
FinOps
Heygen Finops
FINOPSResources
Sources
opencollection: 1.0.0
info:
name: HeyGen API
version: 4.0.8
request:
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
items:
- info:
name: Videos
type: folder
items:
- info:
name: Retrieve Video Status/Details
type: http
http:
method: GET
url: https://api.heygen.com/v1/video_status.get
params:
- name: video_id
value: ''
type: query
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This endpoint allows you to retrieve the status and details of a specific video.
- info:
name: Delete a Video
type: http
http:
method: DELETE
url: https://api.heygen.com/v1/video.delete
params:
- name: video_id
value: ''
type: query
description: id of the video you want to delete
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Delete a Video
- info:
name: Create Avatar Video (V2)
type: http
http:
method: POST
url: https://api.heygen.com/v2/video/generate
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This API now generates videos with our New AI Studio backend.
- info:
name: Retrieve Video List
type: http
http:
method: GET
url: https://api.heygen.com/v1/video.list
params:
- name: limit
value: ''
type: query
description: Enter a range from 0-100 for the number of videos you wish to retrieve in one response. If more than
100 videos exist, you can retrieve the remaining videos using the pagination token returned in the response.
- name: folder_id
value: ''
type: query
- name: title
value: ''
type: query
- name: token
value: ''
type: query
description: pagination token for next page
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This endpoint retrieves a list of videos associated with the user.
- info:
name: Create a WebM Video
type: http
http:
method: POST
url: https://api.heygen.com/v1/video.webm
headers:
- name: x-api-key
value: ''
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Generates a webm video with transparent background and an avatar speaking the input text. You can customize the
avatar's pose, style, and voice, as well as the dimensions of the video.
- info:
name: Webhooks
type: folder
items:
- info:
name: List Webhook Endpoints
type: http
http:
method: GET
url: https://api.heygen.com/v1/webhook/endpoint.list
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: list all your registered webhook endpoints
- info:
name: Add a Webhook Endpoint
type: http
http:
method: POST
url: https://api.heygen.com/v1/webhook/endpoint.add
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Add a Webhook Endpoint
- info:
name: Update a Webhook Endpoint
type: http
http:
method: PATCH
url: https://api.heygen.com/v1/webhook/endpoint.update
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: update an existing webhook endpoint
- info:
name: Delete a Webhook Endpoint
type: http
http:
method: DELETE
url: https://api.heygen.com/v1/webhook/endpoint.delete
params:
- name: endpoint_id
value: ''
type: query
description: the endpoint's id you want to delete
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: delete an existing webhook endpoint
- info:
name: List Available Webhook Events
type: http
http:
method: GET
url: https://api.heygen.com/v1/webhook/webhook.list
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: list all supported webhook events
- info:
name: Avatars
type: folder
items:
- info:
name: List All Avatars (V2)
type: http
http:
method: GET
url: https://api.heygen.com/v2/avatars
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: You can get your Avatars and Talking Photos(Photo Avatars) with this endpoint.
- info:
name: List All Avatar Groups
type: http
http:
method: GET
url: https://api.heygen.com/v2/avatar_group.list
params:
- name: include_public
value: ''
type: query
description: Whether to include all public avatar groups
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: List all avatar groups
- info:
name: List All Avatars in one avatar group
type: http
http:
method: GET
url: https://api.heygen.com/v2/avatar_group/:group_id/avatars
params:
- name: group_id
value: ''
type: path
description: Avatar group id
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: List all avatars in one avatar group
- info:
name: Templates
type: folder
items:
- info:
name: Generate Video from Template
type: http
http:
method: POST
url: https://api.heygen.com/v2/template/:template_id/generate
params:
- name: template_id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This API now supports New AI Studio!
- info:
name: Retrieve Template Details
type: http
http:
method: GET
url: https://api.heygen.com/v2/template/:template_id
params:
- name: template_id
value: ''
type: path
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This API now supports New AI Studio!
- info:
name: List Templates
type: http
http:
method: GET
url: https://api.heygen.com/v2/templates
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This API now supports New AI Studio!
- info:
name: Retrieve Template Details (V3)
type: http
http:
method: GET
url: https://api.heygen.com/v3/template/:template_id
params:
- name: template_id
value: ''
type: path
description: Unique identifier of the template.
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Retrieves template details by ID, including variables available for replacement and scene mappings for the New AI
Studio.
- info:
name: Voices
type: folder
items:
- info:
name: List All Voices (V2)
type: http
http:
method: GET
url: https://api.heygen.com/v2/voices
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: List All Voices (V2)
- info:
name: List Brand Voices
type: http
http:
method: GET
url: https://api.heygen.com/v1/brand_voice/list
params:
- name: limit
value: ''
type: query
description: Limit of brand voices to return
- name: token
value: ''
type: query
description: Pagination token
- name: name_only
value: ''
type: query
description: Return the name of the brand voices
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This endpoint is used to retrieve a list of brand voices your created
- info:
name: Update Brand Voice
type: http
http:
method: POST
url: https://api.heygen.com/v1/brand_voice/:brand_voice_id
params:
- name: brand_voice_id
value: ''
type: path
description: The unique identifier of the brand voice to update
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Updates an existing brand voice with specified changes. Only the fields that need to be modified should be included
in the request body.
- info:
name: Video Translation
type: folder
items:
- info:
name: List Supported Languages
type: http
http:
method: GET
url: https://api.heygen.com/v2/video_translate/target_languages
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: List Supported Languages
- info:
name: Check Translation Status
type: http
http:
method: GET
url: https://api.heygen.com/v2/video_translate/:video_translate_id
params:
- name: video_translate_id
value: ''
type: path
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Check Translation Status
- info:
name: Translate Video
type: http
http:
method: POST
url: https://api.heygen.com/v2/video_translate
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Translate Video
- info:
name: Streaming
type: folder
items:
- info:
name: Send Task
type: http
http:
method: POST
url: https://api.heygen.com/v1/streaming.task
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This endpoint is used to send a text to an Interactive Avatar, prompting it to speak the provided text.
- info:
name: Close Session
type: http
http:
method: POST
url: https://api.heygen.com/v1/streaming.stop
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This endpoint is used to terminate an active streaming session.
- info:
name: Start Session
type: http
http:
method: POST
url: https://api.heygen.com/v1/streaming.start
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This endpoint is used to start the connection for an existing streaming session.
- info:
name: List Sessions
type: http
http:
method: GET
url: https://api.heygen.com/v1/streaming.list
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This endpoint is used to retrieve a list of currently active streaming sessions.
- info:
name: New Session
type: http
http:
method: POST
url: https://api.heygen.com/v1/streaming.new
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This endpoint is used to initiate a new streaming session.
- info:
name: Create Session Token
type: http
http:
method: POST
url: https://api.heygen.com/v1/streaming.create_token
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This endpoint is used to generate a new access token for a streaming session.
- info:
name: Interrupt Task
type: http
http:
method: POST
url: https://api.heygen.com/v1/streaming.interrupt
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This endpoint is used to interrupt the speaking of an Interactive Avatar.
- info:
name: List Streaming Avatars
type: http
http:
method: GET
url: https://api.heygen.com/v1/streaming/avatar.list
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This API endpoint allows you to retrieve a list of public and custom interactive avatars.
- info:
name: Account
type: folder
items:
- info:
name: Get Remaining Quota
type: http
http:
method: GET
url: https://api.heygen.com/v2/user/remaining_quota
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Get Remaining Quota
- info:
name: Get Current User Information
type: http
http:
method: GET
url: https://api.heygen.com/v1/user/me
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Get Current User Information
- info:
name: Photo Avatars
type: folder
items:
- info:
name: Generate photo avatar photos
type: http
http:
method: POST
url: https://api.heygen.com/v2/photo_avatar/photo/generate
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This endpoint will generate photos that can be used to create photo avatars, returns a generation id, which can
be used in the check generation status endpoint to get status and final image/image keys
- info:
name: Generate photo avatar looks
type: http
http:
method: POST
url: https://api.heygen.com/v2/photo_avatar/look/generate
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This endpoint can be used to generate additional looks for a trained photo avatar group. The photo avatar group
must be trained to use this endpoint.
- info:
name: Check photo/look generation status
type: http
http:
method: GET
url: https://api.heygen.com/v2/photo_avatar/generation/:generation_id
params:
- name: generation_id
value: ''
type: path
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Check photo/look generation status
- info:
name: Create photo avatar group
type: http
http:
method: POST
url: https://api.heygen.com/v2/photo_avatar/avatar_group/create
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: 'This api can be used to create a photo avatar group
For generated photo avatar, pass the generation_id and the image_key
For user uploaded avatar, first upload the photo using the upload assets api. Then use the key as image_key
This api only allows using one photo to establish the identity, you can add more photos using the add looks api'
- info:
name: Add looks to photo avatar group
type: http
http:
method: POST
url: https://api.heygen.com/v2/photo_avatar/avatar_group/add
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Add other looks to existing photo avatar group
- info:
name: Train photo avatar group
type: http
http:
method: POST
url: https://api.heygen.com/v2/photo_avatar/train
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Train a photo avatar group.
- info:
name: Get training job status
type: http
http:
method: GET
url: https://api.heygen.com/v2/photo_avatar/train/status/:group_id
params:
- name: group_id
value: ''
type: path
description: Avatar group id
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Get the training status of a avatar group
- info:
name: Add motion
type: http
http:
method: POST
url: https://api.heygen.com/v2/photo_avatar/add_motion
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Add motion to an existing photo avatar, returns the id of the new avatar that has motion
- info:
name: Add sound effect
type: http
http:
method: POST
url: https://api.heygen.com/v2/photo_avatar/add_sound_effect
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: This api adds sound effect into a photo avatar
- info:
name: Photo avatar details
type: http
http:
method: GET
url: https://api.heygen.com/v2/photo_avatar/:id
params:
- name: id
value: ''
type: path
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Get the details of a photo avatar
- info:
name: Upscale an avatar
type: http
http:
method: POST
url: https://api.heygen.com/v2/photo_avatar/upscale
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Call this api to upscale an avatar, can only be called on an avatar that has motion, returns the photo avatar id
that is upscaled
- info:
name: Folders
type: folder
items:
- info:
name: Create Folder
type: http
http:
method: POST
url: https://api.heygen.com/v1/folders/create
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Create Folder
- info:
name: List Folders
type: http
http:
method: GET
url: https://api.heygen.com/v1/folders
params:
- name: limit
value: ''
type: query
description: Number of folders to return
- name: parent_id
value: ''
type: query
description: Filter by parent folder ID
- name: name_filter
value: ''
type: query
description: Search folders by name
- name: is_trash
value: ''
type: query
description: Filter trashed folders
- name: token
value: ''
type: query
description: A pagination token used for fetching the next set of folders
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Retrieves a list of folders with optional filters.
- info:
name: Update Folder (Rename Only)
type: http
http:
method: POST
url: https://api.heygen.com/v1/folders/:folder_id
params:
- name: folder_id
value: ''
type: path
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Updates the name of an existing folder.
- info:
name: Trash Folder
type: http
http:
method: POST
url: https://api.heygen.com/v1/folders/:folder_id/trash
params:
- name: folder_id
value: ''
type: path
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Moves a folder to the trash.
- info:
name: Restore Folder
type: http
http:
method: POST
url: https://api.heygen.com/v1/folders/:folder_id/restore
params:
- name: folder_id
value: ''
type: path
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Restore Folder
- info:
name: Assets
type: folder
items:
- info:
name: Upload Asset
type: http
http:
method: POST
url: https://api.heygen.com/v1/asset
headers:
- name: Content-Type
value: ''
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Uploads a media file (image, video, or audio) to the authenticated user's HeyGen account and returns the asset ID
for future use.
- info:
name: Digital Twins
type: folder
items:
- info:
name: Get Digital Twin Generation Status
type: http
http:
method: GET
url: https://api.heygen.com/v2/video_avatar/:avatar_id
params:
- name: avatar_id
value: ''
type: path
description: Unique identifier of the Digital Twin avatar.
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Checks the current status of the Digital Twin generation process and returns relevant details.
- info:
name: Delete Digital Twin
type: http
http:
method: DELETE
url: https://api.heygen.com/v2/video_avatar/:avatar_id
params:
- name: avatar_id
value: ''
type: path
description: Unique identifier of the Digital Twin avatar.
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Deletes a Digital Twin by its ID.
- info:
name: Create Digital Twin
type: http
http:
method: POST
url: https://api.heygen.com/v2/video_avatar
body:
type: json
data: '{}'
auth:
type: apikey
key: X-API-KEY
value: '{{X-API-KEY}}'
placement: header
docs: Submits the URLs for the required training footage and consent statement to create a Digital Twin.
bundled: true