Bot Webhook Events Documentation
Meeting BaaS sends the following webhook events related to bot recordings.
Bot Webhook Event Types
1. complete
Sent when a bot successfully completes recording a meeting.
Payload Structure:
{
\"event\": \"complete\",
\"data\": {
\"bot_id\": \"123e4567-e89b-12d3-a456-426614174000\",
\"event_uuid\": \"123e4567-e89b-12d3-a456-426614174001\",
\"transcript\": [
{
\"speaker\": \"John Doe\",
\"offset\": 1.5,
\"start_time\": 1.5,
\"end_time\": 2.4,
\"words\": [
{
\"start\": 1.5,
\"end\": 1.9,
\"word\": \"Hello\"
},
{
\"start\": 2.0,
\"end\": 2.4,
\"word\": \"everyone\"
}
]
}
],
\"speakers\": [
\"John Doe\",
\"Jane Smith\"
],
\"mp4\": \"https://storage.example.com/recordings/video123.mp4?token=abc\",
\"audio\": \"https://storage.example.com/recordings/audio123.wav?token=abc\",
\"event\": \"complete\",
\"extra\": {
\"foo\": \"bar\"
}
}
}When it's triggered:
- After a bot successfully records and processes a meeting
- After the recording is uploaded and made available
- When all processing of the meeting recording is complete
What to do with it:
- Download the MP4 recording for storage in your system
- Store the transcript data in your database
- Update meeting status in your application
- Notify users that the recording is available
- Use
event_uuidto correlate with calendar events (if applicable)
2. failed
Sent when a bot fails to join or record a meeting.
Payload Structure:
{
\"event\": \"failed\",
\"data\": {
\"bot_id\": \"123e4567-e89b-12d3-a456-426614174000\",
\"event_uuid\": \"123e4567-e89b-12d3-a456-426614174001\",
\"error\": \"meeting_not_found\",
\"message\": \"Could not join meeting: The meeting ID was not found or has expired\",
\"extra\": {
\"foo\": \"bar\"
}
}
}Common error types:
meeting_not_found: The meeting ID or link was invalid or expiredaccess_denied: The bot was denied access to the meetingauthentication_error: Failed to authenticate with the meeting platformnetwork_error: Network connectivity issues during recordinginternal_error: Internal server error
What to do with it:
- Log the failure for troubleshooting
- Notify administrators or users about the failed recording
- Attempt to reschedule if appropriate
- Update meeting status in your system
- Use
event_uuidto correlate with calendar events (if applicable)
3. transcription_complete
Sent when transcription is completed separately from recording.
Payload Structure:
{
\"event\": \"transcription_complete\",
\"data\": {
\"bot_id\": \"123e4567-e89b-12d3-a456-426614174000\"
}
}When it's triggered:
- After requesting retranscription via the API
- When an asynchronous transcription job completes
- When a higher quality or different language transcription becomes available
What to do with it:
- Update the transcript data in your system
- Notify users that improved transcription is available
- Run any post-processing on the new transcript data
Webhook Usage Tips
- Each event includes the
bot_idso you can correlate with your internal data - The
event_uuidfield is included when the bot was created from a calendar event (null for direct bots or scheduled bots) - The complete event includes speaker identification and full transcript data
- For downloading recordings, the mp4 URL is valid for 24 hours
- Handle the webhook asynchronously and return 200 OK quickly to prevent timeouts
For security, always validate the API key in the x-meeting-baas-api-key header matches your API key.
Authorization
ApiKeyAuth x-meeting-baas-api-key<token>
API key for authentication
In: header
Response Body
application/json
curl -X GET "https://api.meetingbaas.com/bots/webhooks/bot"null