- Upload your images with
POST /files. - Create the kit with
POST /brand_kits. It answers apreview_url. - Show
preview_urlto a human. - Change the kit with
PATCH /brand_kits/{id}until they approve it. Nothing is live yet. - Apply it: set
branding.brand_kit_idin a workspace’s settings.
1. Upload your images
Upload each image once, asmultipart/form-data with purpose=brand_kit: a logo, and a 16:9
picture if you want your own video tile.
url downloads instead of
displaying. A workspace takes 60 uploads a minute; past that, 429 rate_limited.
2. Create the kit
Send what you know; every group is optional and takes its default when left out.workspace_ids is empty until a workspace applies it in step 5.
workspace_ids is read-only; settings decide which workspaces use a kit.
Which workspace owns it
A key that belongs to one workspace needs nothing more: that workspace owns the files and the kit. A key that belongs to several must sendworkspace_id on POST /files (as a form field)
and on POST /brand_kits; without it, both answer 400 missing on workspace_id.
workspace_id reads null when the key does not belong to the workspace that owns the kit.
3. Show the preview
Givepreview_url to a human: it shows the notetaker’s tile in a call, its chat messages and
the summary email, exactly as the kit is saved. It needs no sign-in and lasts 10 minutes
(preview_expires_at). Every GET or PATCH of the kit answers a fresh one:
4. Iterate
Send only what changes. Here the human wants their own picture on the tile:{ "bot": { "tile": { "type": "logo" } } } switches back to it. Show the new preview_url.
While no workspace uses the kit, nothing a customer sees changes. Once one does, every PATCH
reaches its next calls and emails straight away.
5. Apply it
A workspace uses a kit through its settings, set on the workspace alone (["workspaces:wks_…"]). A new workspace has none of its own: it inherits your account’s. Give
it settings that apply the kit:
409 scope_taken naming the
assignment: PATCH its settings with the same branding instead. A kit is set on a workspace
alone; on an account, a member or a meeting category it answers 422 not_supported.
The kit’s read-only workspace_ids now lists the workspace. One kit can brand many workspaces: apply it
to each. "brand_kit_id": "none" goes back to the default look. See Settings.
A single bot can still override the name, avatar and greeting when you
send it.
What a kit holds
Each choice is atype plus an object named after it. A read returns only the chosen type’s
object; the options of the others stay stored.
The bot
bot.tile.color.background_color and bot.tile.logo.background_color are one value: sending
both with different colors is 422 invalid.
Write both chat messages in the brand’s voice, and keep {{user}}: it becomes the name of
the person the notetaker records for. A message you don’t write reads as the standard one.
The email
email.branded.logo is the tile’s logo until you set one of its own. email.branded.cta is
the button under the meeting’s name:
If your users have no MeetingKit account, set
cta to none or to a link. In link.url,
{{meeting_id}} is replaced by the meeting’s mtg_ id; write it exactly so, with no spaces.
An email with no meeting to name shows the “Open meeting” button instead of a link whose url
names {{meeting_id}}.
Writing rules
- Partial at every depth. On
POSTandPATCH, a group, an object or a field you leave out keeps its value.typecan be left out: the current one stays. nullresets a text (bot.name, the chat messages,color,website,description) to its default.- A read’s
botandemailcan be sent back unchanged. Send those groups only, not the whole object:id,object,preview_urland the other read-only fields are422 unknown_field. A name or message equal to the default the read showed stays unset, so it keeps following the default. - Files (
bot.tile.logo.file,bot.tile.image.file,email.branded.logo) take afile_id,null, or the{ id, url }a read returned. From that object onlyidcounts: the same id keeps the image, another id copies that file. The kit keeps its own copy, so it doesn’t depend on the file afterwards. - A file reads as
{ id, url }.urlis the kit’s copy, signed for a year and fresh on every read.idisnullfor an image uploaded in the dashboard. nullremoves an image.email.branded.logo: nullgoes back to the tile’s logo. Alogoorimagetile can’t lose its file: choose another tile first.
Errors
Every error is{ "errors": [{ "code", "field", "message" }] }. See
Errors.
field is the dotted path into your request, such as bot.tile.logo.background_color.