From a button
A “Send bot to meeting” button lets your user paste a link to a call that is on no calendar.join_at the notetaker joins as soon as it can: within seconds, and always within
three minutes. member_id makes the meeting this user’s, so it shows in their
meetings list with source: "bot".
member_id comes from connecting a calendar. For a user
who never connected one, create their member once and store the mem_ id:
name and metadata
stay as they are. Change them with PATCH /members/{id}.
From your backend
If your product already knows which meetings to record, from your own calendar sync or your users’ choices, your backend sends a bot per meeting and keeps it in step with your calendar.Schedule it
Setjoin_at to the meeting’s start, as an ISO 8601 time with an offset:
queued until join_at, then joins on time. Send it as soon as the meeting
is on your calendar, and at least ten minutes before it starts: scheduled bots are
guaranteed a seat. join_at must be in the future.
participantsare the people you expect, with names and emails. MeetingKit uses them to name the speakers instead of “Speaker 1”. Up to 100.metadataholds your own ids: flat string values, merged on update. It comes back on the bot and thebot.*webhooks. It is not copied to the meeting: set the meeting’s own withPATCH /meetings/{id}.
One bot per meeting
When several of your users are invited to the same meeting, you want one bot, not one per attendee. A request with the sameworkspace_id, meeting_url and join_at as a bot that
is still queued, joining or in_call returns that bot instead of sending a second one.
- Send the meeting’s start as
join_at, the same value for every attendee. - Send the join link exactly as it appears in the invite.
- It is per workspace: two customers who meet each other get one bot each.
POST times out, send it again and you get the bot that was
created.
The meeting belongs to the member of that first request. A request naming a different
member_id answers 409 bot_already_recording, with the id of the bot already there: send
the bot once per meeting, with the member who owns it, such as the organizer.
Keep it in step with your calendar
Store the botid next to your meeting, then:
join_at and meeting_url can change until the bot starts joining; participants until
the call ends; metadata until the bot ends. Past that, PATCH answers
409 bot_not_editable. Cancelling a bot in the call makes it leave; what it recorded is
kept. Once a day, re-read the next seven days of your calendar and reconcile them with your
bots: calendar notifications get lost.
How the bot looks and records
A bot follows the workspace’s and the member’s recording choices and the workspace’s branding. Override them for one bot:
These values become the meeting’s own settings, so the bot and its meeting never disagree.
Before the call, change the language, summary or silence alert with
PATCH /settings/{id}, the
settings_id of the meeting’s own assignment in its settings.assignments. See
Settings.
What happens next
The
bot.* webhooks follow these steps. The results are on the meeting: when
meeting.finished fires for the bot’s meeting_id, read
GET /meetings/{id}/results.