---
title: "Create a brand kit"
method: POST
path: "/brand_kits"
tags: ["Brand kits"]
---

# Create a brand kit

`POST /brand_kits`

## Request

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

Creates a brand kit and brands every workspace in `workspace_ids` with it, replacing
whatever kit they used. The key must be an owner or admin of each workspace, and each
workspace's plan must include notetaker customization.

## Request body

- BrandKitCreate
  - `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
    - ''
  - `workspace_ids` string[], required: Every workspace that should use this kit.
  - `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.

## Response `201`

Brand kit created.

- 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 listed workspace (`workspace_update_not_allowed`), or its plan does not include notetaker customization (`plan_upgrade_required`). Nothing is created.
- `404`: 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)
