> ## Documentation Index
> Fetch the complete documentation index at: /help/llms.txt
> Use this file to discover all available pages before exploring further.

# Tavus

> Generate a personal Tavus replica video for each contact, wait for the callback and share the hosted link on LinkedIn.

> [!NOTE]
>
> **Pro plan.** Tavus works through a connection, HTTP steps and listeners (**Wait for webhook**, **Call & wait**), which are part of Pro and Agency (and the free trial). Anything you already have keeps working on every plan. See [Plans and billing](/help/account/billing.md).

You train a replica of yourself once in Tavus. A **Call & wait** step then asks Tavus for a video with the contact's name and this contact's callback URL; Tavus calls back with a hosted link and the next LinkedIn message shares it.

> [!NOTE]
>
> **How it connects:** Tavus's API with your key in the `x-api-key` header. See Tavus's [Create video](https://docs.tavus.io/api-reference/video-request/create-video) docs. The request and callback below follow Tavus's docs.

## Before you start

* **Tavus plan:** API plans include a number of video minutes (Tavus's pricing).
* **A replica:** trained in Tavus; copy its `replica_id`.
* **An API key:** from Tavus's developer portal.

## 1. Connect Tavus

In Kerux, open **Integrations > Connections**, click **Connect** on **Custom API** (under **Developers**):

* **How it signs in:** **API key in a header**, **Header name** `x-api-key`, paste the key.
* **Base URL:** `https://tavusapi.com`

Click **Save**, then **Test connection**.

## 2. Request the video and wait

After **Invitation accepted**, add a **Call & wait** step named `tavus`, pick the connection. Its request:

```json theme={null}
{
  "method": "POST",
  "url": "/v2/videos",
  "bodyType": "json",
  "body": {
    "replica_id": "YOUR_REPLICA_ID",
    "script": "Hi {{contact.first_name}}, quick idea for {{contact.company}}...",
    "video_name": "Kerux {{contact.full_name}}",
    "callback_url": "{{wait.callback_url}}"
  }
}
```

Tavus's callback (from its docs, trimmed):

```json theme={null}
{ "video_id": "8a4f...", "status": "ready", "hosted_url": "https://videos.tavus.io/video/8a4f...", "download_url": "https://..." }
```

## 3. Share the link

Add a **Condition** on `{{steps.tavus.payload.status}}` equal to `ready`, then a LinkedIn message with `{{steps.tavus.payload.hosted_url}}`. Errors and timeouts go to a plain text message.

## Test with one contact

In the **Builder**, click **Test** to open **Test on one contact**. The journey shows the request and the callback when it arrives.

## Common errors

> [accordion] 401 Unauthorized
>
> The key is wrong. Create a new one in Tavus's developer portal.

> [accordion] 400 with a replica error
>
> The replica id is wrong or the replica isn't finished training.

> [accordion] Status is error in the callback
>
> Tavus couldn't generate the video. The **Condition** sends the contact to the text message; check the video in Tavus.

Related: [Webhook steps](/help/integrations/webhook-steps.md), [HeyGen](/help/integration-guides/heygen.md), [Vidyard](/help/integration-guides/vidyard.md).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.