> ## 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.

# Manage Brand Kits

> List the brand kits in a workspace, correct a kit's color, logo, and font roles with PATCH /v3/brand-kits/{brand_kit_id}, and delete kits over the HeyGen API.

![](https://mintcdn.com/heygen-1fa696a7/hfMXXwJzjE7vBSYZ/images/theme/research.webp?fit=max\&auto=format\&n=hfMXXwJzjE7vBSYZ\&q=85\&s=3e4c2594813dcfd56985f3d63e3ba321)

## List

[`GET /v3/brand-kits`](https://heygen-1fa696a7.mintlify.site/reference/list-brand-kits) returns the kits in the authenticated workspace, including the ones teammates created in the app. Page with `limit` and `token`; the response carries `data`, `has_more`, and `next_token` at the top level.

The listing is a summary with the color list and `logo_url` for the primary logo. [Read a kit by ID](https://heygen-1fa696a7.mintlify.site/docs/brand-kits/import.md#wait-for-the-import) for fonts and role assignments. `logo_url` is `null` for a kit with colors and fonts and no logo, which is common.

## Correct roles

An import assigns roles automatically, so [`PATCH /v3/brand-kits/{brand_kit_id}`](https://heygen-1fa696a7.mintlify.site/reference/update-brand-kit) is how you fix a slot the importer read differently than you would. It sets the kit's **name** and its **role assignments**:

| Field | Roles |
| - | - |
| `color_roles` | `primary`, `secondary`, `tertiary`, `accent` |
| `logo_roles` | `primary` |
| `font_roles` | `title_text`, `body_text`, each with a `font_id` and `weight` |

The colors, logos, and font files themselves are curated in the HeyGen app.

```bash theme={null}
curl -X PATCH "https://api.heygen.com/v3/brand-kits/3f9a1c47b8e24d5fa0c61e8b7d24f6a1" \
  -H "X-Api-Key: $HEYGEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "color_roles": { "primary": "#FF5733", "secondary": "#1A1A1A" } }'
```

An omitted field stays as it is, so send only what you are changing. A role object you send **replaces that group in full**: a role left out of it is cleared, which is why the example above clears `tertiary` and `accent`. `{}` clears a whole group.

> [!WARNING]
>
> Clear with `{}`. A `null` on any field is rejected, because generated clients drop `null` before it reaches the wire and the same request would behave differently over raw HTTP and through an SDK.

Role edits need an assembled kit and return `409 brand_kit_not_ready` while `status` is `loading` or `error`. Renaming works at any time, so a kit can be titled the moment its import starts.

## Delete

[`DELETE /v3/brand-kits/{brand_kit_id}`](https://heygen-1fa696a7.mintlify.site/reference/delete-brand-kit) removes a kit along with its colors, logos, and fonts. This cannot be undone. A kit that is still assembling can be deleted at any time.

Videos already generated with the kit keep their branding, since the colors were applied at render time. A Video Agent session still set to the deleted `brand_kit_id` reports it as invalid on its next use.


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