Brand kits

Update a brand kit

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.

patch/brand_kits/{id}

Request

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

Request body

bot_namestring nullable

Default display name of the notetaker bot in the workspace.

background_colorstring

Background HEX color for the notetaker avatar video tile.

brand_colorstring nullable

Accent HEX color applied to buttons and headers in summary recap emails.

brand_urlstring nullable

Website or app link included in participant summary emails.

brand_descriptionstring nullable

Company tagline or description rendered in recap email footers.

logo_scaleinteger

Percentage scaling factor for the logo on the avatar tile.

show_videoboolean

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_messageboolean nullable

Whether the notetaker automatically posts an in-call greeting upon joining.

chat_messagestring nullable

Greeting message posted when the bot joins and starts recording. Supports {{user}}.

chat_message_pausedstring nullable

Announcement posted if recording is paused.

workspace_idsstring[]

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.

Example request

{
  "bot_name": "Starlight Notetaker",
  "brand_color": "#6366F1",
  "workspace_ids": [
    "wks_01k6a2r9s8x7c2dvq3m5n6p4ab",
    "wks_01k6a3t4v5w6x7y8z9a0b1c2de",
    "wks_01k6a4f5g6h7j8k9m0n1p2qrst"
  ]
}

Response

The updated brand kit.

idstring required

Brand kit ID, beginning with brk_.

objectstring required

Always brand_kit.

workspace_idsstring[] required

The workspaces that use this kit, among those the key belongs to.

bot_namestring required

Display name of the notetaker bot. Defaults to one derived from the name of the workspace that created the kit.

background_colorstring required

Background HEX color for the notetaker avatar video tile.

brand_colorstring nullable

Accent HEX color applied to buttons and headers in summary recap emails.

brand_urlstring uri nullable

Website or app link included in participant summary emails.

brand_descriptionstring nullable

Company tagline or description rendered in recap email footers.

logo_urlstring uri nullable

URL of the attached workspace logo image.

logo_scaleinteger required

Percentage scaling factor for the logo on the avatar tile.

custom_thumbnail_urlstring uri nullable

URL of the full custom 16:9 thumbnail replacing the composited avatar tile.

show_videoboolean

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_messageboolean required

Whether the notetaker automatically posts an in-call greeting upon joining.

chat_messagestring 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_pausedstring required

Announcement posted if recording is paused. Falls back to the standard announcement when not customized, so it is never null.

preview_urlstring 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_atstring date-time

When preview_url stops working, ten minutes after the response, in ISO 8601. Read the brand kit again for a fresh link.

metadataMetadata

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.

created_atstring date-time

When the brand kit was created, in ISO 8601.

Example response

{
  "id": "brk_01k6c3v7w2q9d8m4n5p6r7s8tx",
  "object": "brand_kit",
  "workspace_ids": [
    "wks_01k6a2r9s8x7c2dvq3m5n6p4ab",
    "wks_01k6a3t4v5w6x7y8z9a0b1c2de"
  ],
  "bot_name": "Acme Assistant",
  "background_color": "#2E2E2E",
  "brand_color": "#0052FF",
  "brand_url": "https://acme.com/app",
  "brand_description": "Acme AI Meeting Companion",
  "logo_url": "https://assets.happyscribe.com/logos/acme.png",
  "logo_scale": 80,
  "custom_thumbnail_url": null,
  "show_video": true,
  "send_chat_message": true,
  "chat_message": "Hi everyone! I am taking notes for {{user}}.",
  "chat_message_paused": "Recording is currently paused.",
  "preview_url": "https://www.happyscribe.com/app/shared/brand-kits/brk_01k6c3v7w2q9d8m4n5p6r7s8tx/preview?token=WyJicmtfMDFrNmMzdjd3MnE5ZDhtNG41cDZyN3M4dHgiLDE3OTA0MTM4MDBd--50d858e0985ecc7f60418aaf0cc5ab587f42c2570a884095a9e8ccacd0f6545c",
  "preview_expires_at": "2026-09-26T09:10:00Z",
  "metadata": {},
  "created_at": "2026-09-26T09:00:00Z"
}

Changes

No recorded changes to this operation across all 1 revision of this API.