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_uuid to 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 expired
  • access_denied: The bot was denied access to the meeting
  • authentication_error: Failed to authenticate with the meeting platform
  • network_error: Network connectivity issues during recording
  • internal_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_uuid to 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_id so you can correlate with your internal data
  • The event_uuid field 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.

GET
/bots/webhooks/bot

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