Your API key
Keep your key on your backend. Send it bare inAuthorization, and pin the API version so
the shapes never change under you:
Happyscribe-Version: 2026-10-12. The key must be an
owner or admin of each customer’s workspace.
A workspace per customer
Each of your customers gets its own workspace: their users, meetings, recording rules and branding stay apart from every other customer’s. Keep your customer’s id inmetadata:
wks_ id next to your customer. Every other call takes it as workspace_id.
metadata is yours, on workspaces, members, meetings, calendar events, bots, brand kits
and webhook endpoints: up to 50 keys, keys up to 40 characters, string values up to 500
characters. Updates merge; an empty string removes a key. MeetingKit never acts on it,
and it comes back in every webhook that carries the object.
A webhook endpoint
Register your endpoint in the workspace before its users connect a calendar: connecting sends events straight away. Name each event you want; wildcards such asmeeting.* are
rejected.
secret from the response; it is shown once. Webhooks
shows how to verify each request, handle retries, and recover events you missed. Treat each
event as a signal: read the resource again and save what the read returns.
Company defaults
Your customer’s admin decides what gets recorded by default and how the notetaker looks in calls.What a new workspace starts with
Until you change them, a workspace and its members start with these defaults:
The notetaker joins a scheduled meeting three minutes before it starts.
Which setting wins
For each meeting, the most specific choice wins:- A bot: what you send with
POST /botsapplies to that bot’s meeting. - A meeting: recording it or not, and anything else set
with a
meeting:assignment, applies to that occurrence. - A member: their own recording choice and settings. A meeting is recorded when any member whose calendar has it records it: one member is enough, and it still gets one notetaker.
- The workspace: a new member’s settings start as a copy of the workspace’s. Changing the
workspace’s later applies to members set up after it, not to existing ones: change theirs
too. Set the company default before you create members. A member’s summary language is set
on the member, with
summary.languagein their settings.
settings is the result, and settings.sources says which assignment decided each
field. See Settings.
What gets recorded
The workspace’s settings are the default for its users. Every workspace has them: find their id inGET /workspaces/{id} (settings.assignments, the one whose scope is the workspace alone)
and change them:
recording.enabled: true records every meeting. To record only some, set it to false and
record each category with its own assignment:
Each user can then choose their own in meeting settings.
Branding
A brand kit is how the notetaker presents itself in your customer’s calls and in the summary email. Create one and pick it for the workspace:
Each choice is a
type and an object named after it, and an image is a file you upload first
with POST /files. If your users have no MeetingKit
account, set the email’s button (email.branded.cta) to none or to a link of your own.
workspace_id is the workspace that owns the kit. One kit can brand several workspaces:
workspace_ids lists the ones that use it, and PATCH changes every one at once. Leave
workspace_ids out to prepare a kit nothing uses yet, then pick it with branding.brand_kit_id
in a workspace’s settings. A single bot can still override the name and avatar when you
send it. Every field is on
the brand kit object.
Company defaults and branding need a plan with notetaker customization; without it they
answer 403 plan_upgrade_required.