> ## Documentation Index
> Fetch the complete documentation index at: https://heygen-1fa696a7.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Brand Kits

> Apply your brand colors, fonts, and logo to HeyGen Video Agent output. List brand kits with the API and pass a brand_kit_id so every generated video ships on-brand.

<img className="w-full h-44 object-cover rounded-xl" src="https://mintcdn.com/heygen-1fa696a7/hfMXXwJzjE7vBSYZ/images/theme/research.webp?fit=max&auto=format&n=hfMXXwJzjE7vBSYZ&q=85&s=3e4c2594813dcfd56985f3d63e3ba321" alt="" noZoom width="1400" height="788" data-path="images/theme/research.webp" />

A brand kit is a saved set of brand colors, fonts, and logos. Pass its `brand_kit_id` to the [Video Agent](/docs/video-agent) and the agent applies it to everything it builds — scene backgrounds, text treatments, chart palettes, and logo placement — so output ships on-brand without describing your brand in the prompt.

A brand kit governs how a video **looks**. To control how your terms are **spoken**, pair it with a [brand glossary](/docs/brand-glossary) on the endpoints that accept one — see [On Brand](/docs/on-brand).

<Info>
  **API reference:** [List Brand Kits](/reference/list-brand-kits) · [Create Session](/reference/create-video-agent-session) · [Send Message](/reference/send-message-or-request-revision)
</Info>

<Note>
  Brand kits are **read-only over the API**. `GET /v3/brand-kits` is the only brand-kit endpoint — create and edit them in the HeyGen app, then reference them by ID here.
</Note>

## List your brand kits

Full schema: [`GET /v3/brand-kits`](/reference/list-brand-kits). Returns the brand kits available in the authenticated workspace.

### Query parameters

| Parameter | Type    | Default | Description                                            |
| --------- | ------- | ------- | ------------------------------------------------------ |
| `limit`   | integer | 10      | Results per page.                                      |
| `token`   | string  | —       | Opaque cursor from a previous response's `next_token`. |

```bash theme={null}
curl "https://api.heygen.com/v3/brand-kits" \
  -H "X-Api-Key: $HEYGEN_API_KEY"
```

### Response

```json theme={null}
{
  "data": [
    {
      "brand_kit_id": "3f9a1c47b8e24d5fa0c61e8b7d24f6a1",
      "name": "Acme Corp — Primary",
      "logo_url": "https://resource2.heygen.ai/image/c4e18a72f95b4d6e8a30b7c15d92f6e3/original",
      "colors": ["#FF5733", "#1A1A1A", "#FFFFFF"]
    }
  ],
  "has_more": false,
  "next_token": null
}
```

| Field          | Type           | Description                                                                                                                                                                   |
| -------------- | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `brand_kit_id` | string         | Unique identifier. Pass this as `brand_kit_id` when creating a session.                                                                                                       |
| `name`         | string         | Display name of the brand kit.                                                                                                                                                |
| `logo_url`     | string \| null | Primary brand logo URL (public CDN). `null` when the kit defines colors and fonts but no logo, which is common — treat it as optional rather than assuming a logo is present. |
| `colors`       | array          | Brand colors as hex values.                                                                                                                                                   |

## Apply a brand kit to a video

Pass `brand_kit_id` when you create the session. It works in both `generate` and `chat` modes.

<CodeGroup>
  ```bash curl theme={null}
  curl -X POST "https://api.heygen.com/v3/video-agents" \
    -H "X-Api-Key: $HEYGEN_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "prompt": "Create a 45-second explainer about our Q3 product launch.",
      "brand_kit_id": "3f9a1c47b8e24d5fa0c61e8b7d24f6a1",
      "orientation": "landscape"
    }'
  ```

  ```python Python theme={null}
  import requests

  resp = requests.post(
      "https://api.heygen.com/v3/video-agents",
      headers={"X-Api-Key": HEYGEN_API_KEY},
      json={
          "prompt": "Create a 45-second explainer about our Q3 product launch.",
          "brand_kit_id": "3f9a1c47b8e24d5fa0c61e8b7d24f6a1",
          "orientation": "landscape",
      },
  )
  session_id = resp.json()["data"]["session_id"]
  ```

  ```javascript Node.js theme={null}
  const resp = await fetch("https://api.heygen.com/v3/video-agents", {
    method: "POST",
    headers: {
      "X-Api-Key": process.env.HEYGEN_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      prompt: "Create a 45-second explainer about our Q3 product launch.",
      brand_kit_id: "3f9a1c47b8e24d5fa0c61e8b7d24f6a1",
      orientation: "landscape",
    }),
  });
  const { data } = await resp.json();
  ```
</CodeGroup>

## Switch brands mid-session

In an [interactive session](/docs/interactive-sessions), `brand_kit_id` is also accepted on each follow-up message, so you can re-brand without starting over — useful when producing the same video for multiple brands or sub-brands.

```bash theme={null}
curl -X POST "https://api.heygen.com/v3/video-agents/sess_abc123" \
  -H "X-Api-Key: $HEYGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Rebuild this with our EMEA sub-brand.",
    "brand_kit_id": "7b41e05c9d3a4e628fb15c2a6d80e39f"
  }'
```

## Brand kits and styles

`brand_kit_id` and `style_id` are independent and can be combined:

* **`style_id`** picks a curated visual template — scene layout, pacing, overall aesthetic. See [Styles & References](/docs/styles-and-references).
* **`brand_kit_id`** supplies your colors, fonts, and logo.

Use a style for the look of the video and a brand kit to make that look yours.

## Errors

An unknown or inaccessible `brand_kit_id` is rejected when the request is made, rather than failing partway through the render:

```json theme={null}
{
  "error": {
    "code": "resource_not_found",
    "message": "Brand kit not found.",
    "param": "brand_kit_id",
    "doc_url": null
  }
}
```

Brand kits are scoped to the authenticated workspace. If you get this error with an ID that exists, confirm the API key belongs to the same workspace that owns the brand kit.
