{
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"data": {
"object": {
"id": "bot_01k0h4r9s8x7c2dvq3m5n6p4ab",
"object": "bot",
"meeting_id": "mtg_01k0h4r9s8x7c2dvq3m5n6p4ab",
"meeting_url": "https://zoom.us/j/123456789",
"join_at": "2026-07-20T14:00:00Z",
"status": "queued",
"bot_name": "Acme Notetaker",
"welcome_message": "Recording this meeting for Acme",
"language": "en",
"recording_start": "on_join",
"recording_mode": "audio_only",
"silence_alert": true,
"summary_language": "en",
"summary_template": "discovery_call",
"participants": [
{
"email": "carmen@example.com",
"name": "Carmen"
}
],
"metadata": {
"partner_meeting_id": "meeting-123"
},
"created_at": "2026-07-20T13:58:12Z",
"ended_at": null
}
}
}Bots
Bot transcript ready
Sent when the transcript of the call is ready. Read it with
GET /meetings/{meeting_id}/results; the summary is not ready yet.
Delivered to every workspace webhook endpoint subscribed to this event,
signed with the endpoint’s whsec_ secret. See
Webhooks for signature verification, retries,
and ordering.
WEBHOOK
bot.transcript_ready
{
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"data": {
"object": {
"id": "bot_01k0h4r9s8x7c2dvq3m5n6p4ab",
"object": "bot",
"meeting_id": "mtg_01k0h4r9s8x7c2dvq3m5n6p4ab",
"meeting_url": "https://zoom.us/j/123456789",
"join_at": "2026-07-20T14:00:00Z",
"status": "queued",
"bot_name": "Acme Notetaker",
"welcome_message": "Recording this meeting for Acme",
"language": "en",
"recording_start": "on_join",
"recording_mode": "audio_only",
"silence_alert": true,
"summary_language": "en",
"summary_template": "discovery_call",
"participants": [
{
"email": "carmen@example.com",
"name": "Carmen"
}
],
"metadata": {
"partner_meeting_id": "meeting-123"
},
"created_at": "2026-07-20T13:58:12Z",
"ended_at": null
}
}
}Authorizations
Your API key, sent bare. See Authentication.
Body
application/json
Stable typed event ID beginning with evt_. Use it to deduplicate retries.
The event type. Also sent in the X-HappyScribe-Event header.
bot.recording_started: the notetaker is in the call and recording.bot.recording_completed: the call ended and the recording is available.bot.transcript_ready: the transcript is ready.bot.summary_ready: the summary is ready; the bot iscompleted.bot.failed: the bot ended without a usable result.bot.cancelled: the bot was cancelled.
Available options:
bot.recording_started, bot.recording_completed, bot.transcript_ready, bot.summary_ready, bot.failed, bot.cancelled When MeetingKit emitted the event.
object: the bot, as GET /bots/{id} returns it.
Show child attributes
Show child attributes
Response
200
Return any 2xx status to acknowledge receipt. Any other status, or a timeout, triggers a retry — up to 21 attempts with backoff.