heygen
HeyGen API for AI video avatars. Use when user mentions "HeyGen", "AI avatar", "video avatar", or "AI presenter".
What this skill does
## Troubleshooting
If requests fail, run `zero doctor check-connector --env-name HEYGEN_TOKEN` or `zero doctor check-connector --url https://api.heygen.com/v2/avatars --method GET`
## How to Use
All examples below assume you have `HEYGEN_TOKEN` set.
The base URL for the HeyGen API is:
- v1 endpoints: `https://api.heygen.com/v1`
- v2 endpoints: `https://api.heygen.com/v2`
### 1. List Available Avatars
Get all avatars available to your account:
```bash
curl -s -X GET "https://api.heygen.com/v2/avatars" --header "x-api-key: $HEYGEN_TOKEN" | jq '.data.avatars[] | {avatar_id, avatar_name, gender}'
```
Each avatar has an `avatar_id` needed for video generation.
### 2. Get Avatar Details
Retrieve detailed information about a specific avatar. Replace `<avatar_id>` with an actual avatar ID:
```bash
curl -s -X GET "https://api.heygen.com/v2/avatar/<avatar_id>/details" --header "x-api-key: $HEYGEN_TOKEN" | jq .data
```
### 3. List Available Voices
Get all AI voices for video narration:
```bash
curl -s -X GET "https://api.heygen.com/v2/voices" --header "x-api-key: $HEYGEN_TOKEN" | jq '.data.voices[] | {voice_id, name, language, gender}'
```
Voice properties include:
- `voice_id`: Unique identifier for use in video generation
- `language`: Primary language (e.g., "English", "Multilingual")
- `gender`: "female", "male", or "unknown"
- `emotion_support`: Whether the voice supports emotion variations
### 4. Create an Avatar Video
Generate a video with an AI avatar presenter. Replace `<avatar_id>` and `<voice_id>` with actual IDs from the list endpoints.
Write to `/tmp/heygen_request.json`:
```json
{
"video_inputs": [
{
"character": {
"type": "avatar",
"avatar_id": "<avatar_id>",
"avatar_style": "normal"
},
"voice": {
"type": "text",
"input_text": "Hello! Welcome to our product demo. Let me walk you through the key features.",
"voice_id": "<voice_id>",
"speed": 1.0
},
"background": {
"type": "color",
"value": "#FFFFFF"
}
}
],
"dimension": {
"width": 1920,
"height": 1080
},
"title": "Product Demo Video"
}
```
Then run:
```bash
curl -s -X POST "https://api.heygen.com/v2/video/generate" --header "x-api-key: $HEYGEN_TOKEN" --header "Content-Type: application/json" -d @/tmp/heygen_request.json | jq .
```
The response contains a `video_id` to track the generation progress.
### 5. Check Video Status
Poll for video generation status using the `video_id` from the generate response. Replace `<video_id>` with the actual video ID:
```bash
curl -s -X GET "https://api.heygen.com/v1/video_status.get?video_id=<video_id>" --header "x-api-key: $HEYGEN_TOKEN" | jq '{status: .data.status, video_url: .data.video_url, duration: .data.duration}'
```
Status values:
- `pending`: Video is queued
- `processing`: Video is being rendered
- `completed`: Video is ready (includes `video_url`)
- `failed`: Generation failed (includes error details)
### 6. List Videos
Retrieve all videos associated with your account:
```bash
curl -s -X GET "https://api.heygen.com/v1/video.list" --header "x-api-key: $HEYGEN_TOKEN" | jq .
```
### 7. Delete a Video
Remove a video from your account. Replace `<video_id>` with the actual video ID:
```bash
curl -s -X DELETE "https://api.heygen.com/v1/video.delete" --header "x-api-key: $HEYGEN_TOKEN" --header "Content-Type: application/json" -d '{"video_id": "<video_id>"}' | jq .
```
### 8. List Templates
Get all video templates created in your account:
```bash
curl -s -X GET "https://api.heygen.com/v2/templates" --header "x-api-key: $HEYGEN_TOKEN" | jq .data
```
### 9. Get Template Details
Retrieve a template configuration and its variables. Replace `<template_id>` with the actual template ID:
```bash
curl -s -X GET "https://api.heygen.com/v2/template/<template_id>" --header "x-api-key: $HEYGEN_TOKEN" | jq .data
```
### 10. Generate Video from Template
Create a video using a template with variable substitution. Replace `<template_id>` and variable keys with actual values from the template details.
Write to `/tmp/heygen_request.json`:
```json
{
"caption": false,
"title": "Video from Template",
"variables": {
"script": {
"name": "script",
"type": "text",
"properties": {
"content": "Your custom script text goes here."
}
}
}
}
```
Then run:
```bash
curl -s -X POST "https://api.heygen.com/v2/template/<template_id>/generate" --header "x-api-key: $HEYGEN_TOKEN" --header "Content-Type: application/json" -d @/tmp/heygen_request.json | jq .
```
### 11. Translate a Video
Translate an existing video into another language. Replace `<video_url>` and `<language>` with actual values:
Write to `/tmp/heygen_request.json`:
```json
{
"video_url": "<video_url>",
"output_language": "<language>",
"title": "Translated Video"
}
```
Then run:
```bash
curl -s -X POST "https://api.heygen.com/v2/video_translate" --header "x-api-key: $HEYGEN_TOKEN" --header "Content-Type: application/json" -d @/tmp/heygen_request.json | jq .
```
### 12. List Supported Translation Languages
Get all languages available for video translation:
```bash
curl -s -X GET "https://api.heygen.com/v2/video_translate/target_languages" --header "x-api-key: $HEYGEN_TOKEN" | jq .data
```
### 13. Share a Video
Generate a public sharing URL for a video. Replace `<video_id>` with the actual video ID:
```bash
curl -s -X POST "https://api.heygen.com/v1/video/share" --header "x-api-key: $HEYGEN_TOKEN" --header "Content-Type: application/json" -d '{"video_id": "<video_id>"}' | jq .
```
## Guidelines
1. **Poll for completion**: Video generation is asynchronous. After calling the generate endpoint, poll `video_status.get` until status is `completed` or `failed`
2. **Download promptly**: Video and thumbnail URLs expire after 7 days
3. **Use templates for consistency**: Create templates in the HeyGen dashboard and use the template generate endpoint for repeatable video production
4. **Choose appropriate avatars**: List avatars first to find one matching your use case, then get details for supported styles
5. **Monitor credits**: Video generation consumes API credits based on video duration
6. **Use JSON files for complex bodies**: Write request bodies to `/tmp/heygen_request.json` to avoid shell quoting issues
Related in Image & Video
watch
IncludedWatch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or Whisper API fallback), and hands the result to Claude so it can answer questions about what's in the video.
physical-ai-defect-image-generation
IncludedUse when the user wants to orchestrate defect image generation, run associated setup, or handle outputs on OSMO. The Day 0 path handles cold-start with USD-to-ROI, image-edit augmentation, and AnomalyGen to create initial PCBA datasets. The Day 1 path performs inference and labeling on real images. This skill helps with first-time asset setup, creation of finetuning checkpoints, and configuring deployment. Trigger keywords: defect image generation, dig workflow, dig pipeline, defect image detection workflow, aoi pipeline, aoi anomalygen, usd2roi anomalygen, day 0 pcba, day 1 pcba, day 1 real-photo alignment, day 1 manual roi, metal surface anomaly, glass defect, anomalygen finetune, setup_pcb, setup_metal, setup_glass, setup_pretrained, dig setup, dig datasets, dig pretrained checkpoint, dig image-edit endpoint.
accelint-react-best-practices
IncludedReact performance optimization and best practices. ALWAYS use this skill when working with any React code - writing components, hooks, JSX; refactoring; optimizing re-renders, memoization, state management; reviewing for performance; fixing hydration mismatches; debugging infinite re-renders, stale closures, input focus loss, animations restarting; preventing remounting; implementing transitions, lazy initialization, effect dependencies. Even simple React tasks benefit from these patterns. Covers React 19+ (useEffectEvent, Activity, ref props). Triggers - useEffect, useState, useMemo, useCallback, memo, inline components, nested components, components inside components, re-render, performance, hydration, SSR, Next.js, useDeferredValue, combined hooks.
elevenlabs-agents
IncludedBuild conversational AI voice agents with ElevenLabs Platform using React, JavaScript, React Native, or Swift SDKs. Configure agents, tools (client/server/MCP), RAG knowledge bases, multi-voice, and Scribe real-time STT. Use when: building voice chat interfaces, implementing AI phone agents with Twilio, configuring agent workflows or tools, adding RAG knowledge bases, testing with CLI "agents as code", or troubleshooting deprecated @11labs packages, Android audio cutoff, CSP violations, dynamic variables, or WebRTC config. Keywords: ElevenLabs Agents, ElevenLabs voice agents, AI voice agents, conversational AI, @elevenlabs/react, @elevenlabs/client, @elevenlabs/react-native, @elevenlabs/elevenlabs-js, @elevenlabs/agents-cli, elevenlabs SDK, voice AI, TTS, text-to-speech, ASR, speech recognition, turn-taking model, WebRTC voice, WebSocket voice, ElevenLabs conversation, agent system prompt, agent tools, agent knowledge base, RAG voice agents, multi-voice agents, pronunciation dictionary, voice speed control, elevenlabs scribe, @11labs deprecated, Android audio cutoff, CSP violation elevenlabs, dynamic variables elevenlabs, case-sensitive tool names, webhook authentication
humanizer
IncludedHumanize AI-generated text by detecting and removing patterns typical of LLM output. Rewrites text to sound natural, specific, and human. Uses 28 pattern detectors, 560+ AI vocabulary terms across 3 tiers, and statistical analysis (burstiness, type-token ratio, readability) for comprehensive detection. Use when asked to humanize text, de-AI writing, make content sound more natural/human, review writing for AI patterns, score text for AI detection, or improve AI-generated drafts. Covers content, language, style, communication, and filler categories.
generating-mermaid-diagrams
IncludedSalesforce architecture diagrams using Mermaid with ASCII fallback. Use this skill when generating text-based diagrams for Salesforce architecture, OAuth flows, ERDs, integration sequences, or Agentforce structure. TRIGGER when: user says "diagram", "visualize", "ERD", or asks for sequence diagrams, flowcharts, class diagrams, or architecture visualizations in Mermaid. DO NOT TRIGGER when: user wants PNG/SVG image output (use generating-visual-diagrams), or asks about non-Salesforce systems.