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

# Vidyard

> Send each contact a personal Vidyard Video Agent video on LinkedIn: Kerux requests it, waits for Vidyard's callback and sends the link.

> [!NOTE]
>
> **Pro plan.** Vidyard 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).

When someone accepts, a **Call & wait** step sends their details to Vidyard's Video Agent with this contact's own callback URL. Vidyard generates the video from your avatar and calls back; the next LinkedIn message sends it.

> [!NOTE]
>
> **How it connects:** Vidyard Video Agent's webhook endpoint with your auth token in the body, and a callback to Kerux. See Vidyard's Video Agent API help articles ([Vidyard developer docs](https://developer.vidyard.com)). The field names below come from Vidyard's docs; check the callback's fields with **Listen for test event**.

## Before you start

* **Vidyard plan:** Video Agent is a Vidyard AI product with its own plans; check access in your Vidyard account.
* **Your avatar and campaign** set up in Video Agent.
* **The endpoint and token:** in Vidyard, open **Integrations > API** for Video Agent and copy the **Webhook Endpoint URL** and the auth token.

## 1. Keep the token in a connection

Vidyard reads its token from the request body, so store it in a Kerux connection and refer to it as `{{secrets.token}}`: the token then never appears in the step. In Kerux, open **Integrations > Connections**, click **Connect** on **Custom API** (under **Developers**):

* **How it signs in:** **Bearer token**, paste the Video Agent auth token.
* **Base URL:** the scheme and host of the Webhook Endpoint URL (everything before the path).

Click **Save**. Kerux also sends the token as a bearer header to that host; the body is what Vidyard's docs ask for.

## 2. Request the video

After **Invitation accepted**, add a **Call & wait** step named `vidyard` and pick that connection. Its request (the `url` is the rest of the Webhook Endpoint URL):

```json theme={null}
{
  "method": "POST",
  "url": "/PATH_OF_THE_WEBHOOK_ENDPOINT_URL",
  "bodyType": "json",
  "body": {
    "auth_token": "{{secrets.token}}",
    "email": "{{email}}",
    "firstName": "{{contact.first_name}}",
    "lastName": "{{contact.last_name | optional}}",
    "jobTitle": "{{contact.title | optional}}",
    "companyName": "{{contact.company}}",
    "vy_custom_id": "{{contact.linkedin_url}}",
    "webhook_url": "{{wait.callback_url}}"
  }
}
```

Set the wait limit to cover Vidyard's generation time (for example 24 hours).

## 3. Send it

Vidyard's callback carries the video (for example `video_uuid`, `thumbnail_url`) and its `approval_status`. Click **Listen for test event**, run one contact, and click the fields you need in the sample. Then:

* a **Condition** on the approval status if your Video Agent requires approval;
* a LinkedIn message with a short line and the video's share link from the callback.

## Test with one contact

In the **Builder**, click **Test** to open **Test on one contact** with your own details. The journey shows the request and, when it arrives, Vidyard's callback.

## Common errors

> [accordion] 401 or invalid token
>
> The auth token is wrong or belongs to another account. Copy it again from **Integrations > API**.

> [accordion] The contact waits until it times out
>
> Vidyard didn't call back in time, or the video is waiting for approval. Check Video Agent, and raise the wait limit if needed.

> [accordion] The message waits for a value
>
> A field used in the message is empty in the callback. Pick another field, or give it a default.

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


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