HeyGen
Create AI-generated videos with virtual avatars using HeyGen.
On this page
Connect
Auth type: API key (secret_text). Paste the API key (or token) from the provider's settings into the connect dialog. It is encrypted at rest and only decrypted on the server when an action runs.
- In the editor: Backend panel, Integrations tab, then Connect. This connects it for the project.
- For every project in a workspace: Workspace settings, Integrations.
- Owners and admins choose which integrations members may connect in the admin panel (Integrations tab), and can attach their own OAuth app there.
Call it from a workflow
Pass the action name and its input. The call resolves with { success, output, error? }; a missing connection resolves with success false and the reason. See ctx.integrations.invoke and ctx.integrations.call.
// .workflow.js (native ctx)
export async function run(ctx) {
const res = await ctx.integrations.invoke("heygen", "create-video-from-template", {
"templateId": "<templateId>",
"title": "<video title>"
});
if (!res.success) throw new Error(res.error);
ctx.log.info("HeyGen answered", { output: res.output });
}// defineWorkflow module (@app/sdk ctx)
import { defineWorkflow } from "@app/sdk";
export default defineWorkflow({
id: "heygen-create-video-from-template",
name: "HeyGen: Create Video from Template",
description: "Calls HeyGen when a row is created.",
trigger: { type: "entity_event", entity: "tickets", event: "created" },
async run(ctx, event) {
const res = await ctx.integrations.call("heygen", {
"action": "create-video-from-template",
"templateId": "<templateId>",
"title": "<video title>"
}) as { success: boolean; error?: string };
if (!res.success) throw new Error(res.error);
},
});curl -X POST "$APP_ORIGIN/__appbricx/connector-proxy/heygen/create-video-from-template" \
-H "Authorization: Bearer $APP_KEY" \
-H "content-type: application/json" \
-d '{"props":{"templateId":"<templateId>","title":"<video title>"}}'Actions
list_avatarsin catalog
List Avatars. Retrieve a list of all available avatars.
No input.
create-video-from-template
Create Video from Template. Create a video using a selected template.
| Input | Type | Description |
|---|---|---|
templateIdrequired | id (picked from your account) | Select the template to generate the video. |
titlerequired | text | Title of the generated video. |
captionoptional | boolean | Enable Captions |
includeGifoptional | boolean | Include GIF Preview |
enableSharingoptional | boolean | Enable Public Sharing |
folderIdoptional | id (picked from your account) | Select the folder to store the video. |
brandVoiceIdoptional | id (picked from your account) | Select the Brand Voice to apply to the video. |
callbackUrloptional | text | Webhook URL to notify when video rendering is complete. |
dimensionWidthoptional | number | Video Width |
dimensionHeightoptional | number | Video Height |
variablesoptional | object (depends on other props) | Template Varriables |
custom_api_call
Custom API Call. Make a custom API call to a specific endpoint
| Input | Type | Description |
|---|---|---|
urlrequired | object (depends on other props) | url |
methodrequired | one of "GET" | "POST" | "PATCH" | "PUT" | "DELETE" | "HEAD" | Method |
headersrequired | object | Authorization headers are injected automatically from your connection. |
queryParamsrequired | object | Query Parameters |
body_typeoptional | one of "none" | "json" | "form_data" | "raw" | Body Type |
bodyoptional | object (depends on other props) | Body |
response_is_binaryoptional | boolean | Enable for files like PDFs, images, etc. |
failsafeoptional | boolean | No Error on Failure |
timeoutoptional | number | Timeout (in seconds) |
followRedirectsoptional | boolean | Follow redirects |
list_videos
List Videos. Retrieve a list of all generated videos.
| Input | Type | Description |
|---|---|---|
limitoptional | number | Maximum number of videos to retrieve (max 100). |
list_voices
List Voices. Retrieve a list of all available voices.
No input.
retrieve_sharable_video_url
Retrieve Sharable Video URL. Generates a public URL for a video, allowing it to be shared and accessed publicly.
| Input | Type | Description |
|---|---|---|
videoIdrequired | text | The ID of the video to generate a shareable URL for. |
retrieve_video_status
Retrieve Video Status. Retrieve the status and details of a video using its ID.
| Input | Type | Description |
|---|---|---|
videoIdrequired | text | The ID of the video to retrieve the status for. |
retrieve-translated-video-status
Retrieve Translated Video Status. Retrieves the status of a translated video.
| Input | Type | Description |
|---|---|---|
videoIdrequired | text | The ID of the translated video to check the status for. |
translate_video
Translate Video. Translate a video into 175+ languages with natural voice and lip-sync.
| Input | Type | Description |
|---|---|---|
videoUrlrequired | text | URL of the video file to be translated. Supports direct URLs, Google Drive, and YouTube. |
titleoptional | text | Optional title of the translated video. |
outputLanguagerequired | id (picked from your account) | Select the language for video translation. |
translateAudioOnlyoptional | boolean | Only translate the audio without modifying faces. |
speakerNumoptional | number | Number of speakers in the video (if applicable). |
brandVoiceIdoptional | id (picked from your account) | Select the Brand Voice to apply to the video. |
callbackIdoptional | text | Custom ID returned in webhook callback. |
callbackUrloptional | text | URL to notify when translation is complete. |
upload_asset
Upload an Asset. Upload media files (images, videos, or audio) to HeyGen. Supports JPEG, PNG, MP4, WEBM, and MPEG files.
| Input | Type | Description |
|---|---|---|
filerequired | file | The file to upload (JPEG, PNG, MP4, WEBM, or MPEG). |
Details
- Id
heygen- Category
- AI and ML
- Tags
- video, avatar, generation, ai, presentation
- Package
@activepieces/piece-heygen@0.1.5- Tier
- Community