Skip to main content

List

GET /v3/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 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} is how you fix a slot the importer read differently than you would. It sets the kit’s name and its role assignments: The colors, logos, and font files themselves are curated in the HeyGen app.
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.
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} 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.