---
title: "Update a brand kit"
method: PATCH
path: "/brand_kits/{id}"
tags: ["Brand kits"]
---

# Update a brand kit

`PATCH /brand_kits/{id}`

## Request

- Base URL: `https://www.happyscribe.com/api/v1`
- URL: `https://www.happyscribe.com/api/v1/brand_kits/{id}`
- Auth: API key in header `Authorization`

Changes apply to every workspace that uses the kit. Omitted fields keep their values;
`null` resets a text field to its default. `background_color`, `logo_scale` and `show_video`
always take a value: `null` is refused with `422`.

`workspace_ids` replaces the whole set of workspaces the key belongs to that use the
kit: added workspaces switch to it, removed ones go back to HappyScribe's default
branding, and workspaces the key does not belong to are left alone. Adding a workspace
needs the same rights as creating a kit; removing one needs an owner or admin.
Scheduled bots pick up the change.

## Request body

- BrandKitUpdate
  - `metadata` union: Merged into the object's metadata: the keys you send are added or overwritten and the others kept. `""` as a value removes that key; `metadata: ""` removes every key. Numbers and booleans are stored as their text; objects, arrays and `null` are refused.
    - object
    - ''
  - `bot_name` string, nullable: Default display name of the notetaker bot in the workspace.
  - `background_color` string: Background HEX color for the notetaker avatar video tile.
  - `brand_color` string, nullable: Accent HEX color applied to buttons and headers in summary recap emails.
  - `brand_url` string, nullable: Website or app link included in participant summary emails.
  - `brand_description` string, nullable: Company tagline or description rendered in recap email footers.
  - `logo_scale` integer: Percentage scaling factor for the logo on the avatar tile.
  - `show_video` boolean: Whether the notetaker shows its avatar tile as a video feed. `false` joins with the camera off, so participants see only the bot name. A `bot_avatar` sent when creating a bot is still shown.
  - `send_chat_message` boolean, nullable: Whether the notetaker automatically posts an in-call greeting upon joining.
  - `chat_message` string, nullable: Greeting message posted when the bot joins and starts recording. Supports `{{user}}`.
  - `chat_message_paused` string, nullable: Announcement posted if recording is paused.
  - `workspace_ids` string[]: Every workspace the key belongs to that should use this kit. An empty list detaches all of them, as long as a workspace the key does not belong to still uses the kit; to unbrand every workspace, delete the kit.

## Response `200`

The updated brand kit.

- BrandKit
  - `id` string, required: Brand kit ID, beginning with `brk_`.
  - `object` string, required: Always `brand_kit`.
  - `workspace_ids` string[], required: The workspaces that use this kit, among those the key belongs to.
  - `bot_name` string, required: Display name of the notetaker bot. Defaults to one derived from the name of the workspace that created the kit.
  - `background_color` string, required: Background HEX color for the notetaker avatar video tile.
  - `brand_color` string, nullable: Accent HEX color applied to buttons and headers in summary recap emails.
  - `brand_url` string, uri, nullable: Website or app link included in participant summary emails.
  - `brand_description` string, nullable: Company tagline or description rendered in recap email footers.
  - `logo_url` string, uri, nullable: URL of the attached workspace logo image.
  - `logo_scale` integer, required: Percentage scaling factor for the logo on the avatar tile.
  - `custom_thumbnail_url` string, uri, nullable: URL of the full custom 16:9 thumbnail replacing the composited avatar tile.
  - `show_video` boolean: Whether the notetaker shows its avatar tile as a video feed. `false` joins with the camera off, so participants see only the bot name. A `bot_avatar` sent when creating a bot is still shown.
  - `send_chat_message` boolean, required: Whether the notetaker automatically posts an in-call greeting upon joining.
  - `chat_message` string, required: Greeting message posted when the bot joins and starts recording. Supports `{{user}}`. Falls back to the standard greeting when not customized, so it is never null.
  - `chat_message_paused` string, required: Announcement posted if recording is paused. Falls back to the standard announcement when not customized, so it is never null.
  - `preview_url` string, uri: A page that shows this kit as saved, the notetaker's tile in the call, its chat messages and the summary email. Anyone with the link can open it, without signing in, until `preview_expires_at`. Every response carries a fresh link.
  - `preview_expires_at` string, date-time: When `preview_url` stops working, ten minutes after the response, in ISO 8601. Read the brand kit again for a fresh link.
  - `metadata` Metadata: Your own key-value pairs, for your ids and context. HappyScribe stores them, returns them on the object and in every webhook that carries it, and never acts on them. Up to 50 keys of up to 40 characters (no square brackets), values up to 500 characters. See [metadata](/meetingkit/setup#a-workspace-per-customer).
  - `created_at` string, date-time: When the brand kit was created, in ISO 8601.

## Other responses

- `401`: Your API key is missing (`missing_api_key`) or wrong (`invalid_api_key`), or it may not access this resource (`unauthorized`).
- `403`: The key is not an owner or admin of a workspace that uses the kit, or of a workspace added or removed (`workspace_update_not_allowed`), or the plan does not include notetaker customization (`plan_upgrade_required`). Nothing changes.
- `404`: No workspace the key belongs to uses this brand kit, or a listed workspace is not one the key belongs to.
- `422`: A field failed validation.

---

[API](https://skmtc.dev/happyscribe/apis/happyscribe-api.md) - [All operations](https://skmtc.dev/happyscribe/apis/happyscribe-api/llms.txt) - [OpenAPI document](https://skmtc.dev/happyscribe/apis/happyscribe-api/revisions/1281bd968c3d?raw)
