tavus-video-gen
Creates AI videos with custom people and backgrounds from scripts.
Installation
Paste this into Claude Code, Cursor, or any agent that can run commands.
SKILL.mdShow the author's original SKILL.md
---
name: tavus-video-gen
description: Generate AI videos with Tavus replicas. Use when creating personalized videos from scripts or audio, adding custom backgrounds, watermarks, or generating videos at scale. Covers the video generation API, not real-time conversations.
---
# Tavus Video Generation Skill
Generate personalized AI videos with replicas speaking your script.
## Quick Start
```bash
curl -X POST https://tavusapi.com/v2/videos \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"replica_id": "rfe12d8b9597",
"script": "Hey there! Welcome to our product demo."
}'
```
Response:
```json
{
"video_id": "1e30440cf9",
"status": "queued"
}
```
## Full API Options
```bash
curl -X POST https://tavusapi.com/v2/videos \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"replica_id": "rfe12d8b9597",
"script": "Your script text here",
"video_name": "Product Demo v1",
"callback_url": "https://your-webhook.com/video-ready",
"background_url": "https://example.com/landing-page",
"background_source_url": "https://s3.../background.mp4",
"watermark_url": "https://s3.../logo.png",
"fast": false,
"transparent_background": false
}'
```
### Parameters
| Param | Description |
|-------|-------------|
| `replica_id` | Required. Stock or custom replica ID |
| `script` | Text for replica to speak (use this OR audio_url) |
| `audio_url` | Pre-recorded audio (.wav/.mp3) for replica to lip-sync |
| `video_name` | Display name |
| `callback_url` | Webhook for completion/error |
| `background_url` | Website URL to record as background |
| `background_source_url` | Video file URL for background |
| `watermark_url` | PNG/JPEG logo overlay |
| `fast` | Quick render (disables some features) |
| `transparent_background` | WebM with alpha (requires `fast: true`) |
## Using Audio Instead of Script
```json
{
"replica_id": "rfe12d8b9597",
"audio_url": "https://s3.../narration.mp3"
}
```
Supported formats: `.wav`, `.mp3`
## Background Options
### Website Background
Records a scrolling website as the background:
```json
{
"background_url": "https://example.com/landing-page"
}
```
### Video Background
Uses a video file:
```json
{
"background_source_url": "https://s3.../promo-bg.mp4"
}
```
### Transparent Background
For compositing in video editors:
```json
{
"fast": true,
"transparent_background": true
}
```
Outputs `.webm` with alpha channel.
## Check Video Status
```bash
curl https://tavusapi.com/v2/videos/{video_id} \
-H "x-api-key: YOUR_API_KEY"
```
Status values: `queued`, `generating`, `ready`, `error`, `deleted`
When ready:
```json
{
"status": "ready",
"hosted_url": "https://videos.tavus.io/video/xxx",
"download_url": "https://stream.mux.com/.../high.mp4",
"stream_url": "https://stream.mux.com/xxx.m3u8"
}
```
## Webhook Callback
On completion:
```json
{
"video_id": "1e30440cf9",
"status": "ready",
"hosted_url": "https://videos.tavus.io/video/1e30440cf9",
"download_url": "...",
"stream_url": "..."
}
```
On error:
```json
{
"video_id": "xxx",
"status": "error",
"status_details": "Error message here"
}
```
## Scripting Best Practices
- Keep under 5 minutes for quality/engagement
- Write conversationally (speak out loud to test)
- Use punctuation to indicate pauses
- Clear structure: intro → body → CTA
- Break long content into multiple videos
## List & Delete Videos
```bash
# List all videos
curl https://tavusapi.com/v2/videos -H "x-api-key: YOUR_API_KEY"
# Delete video
curl -X DELETE https://tavusapi.com/v2/videos/{video_id} \
-H "x-api-key: YOUR_API_KEY"
```
Mirrored from the author's public source. Install counts from the open skills registry.