Sending a bot
Learn how to send bots to meetings using the Meeting BaaS v2 API
You can send a bot to a meeting in two ways:
- Immediate: The bot joins the meeting right away
- Scheduled: The bot joins at a specific time in the future
Immediate Bot
Send a POST request to https://api.meetingbaas.com/v2/bots:
curl -X POST "https://api.meetingbaas.com/v2/bots" \
-H "Content-Type: application/json" \
-H "x-meeting-baas-api-key: YOUR-API-KEY" \
-d '{
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "AI Notetaker",
"recording_mode": "speaker_view",
"transcription_enabled": true,
"transcription_config": {
"provider": "gladia"
}
}'import requests
url = "https://api.meetingbaas.com/v2/bots"
headers = {
"Content-Type": "application/json",
"x-meeting-baas-api-key": "YOUR-API-KEY",
}
data = {
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "AI Notetaker",
"recording_mode": "speaker_view",
"transcription_enabled": true,
"transcription_config": {
"provider": "gladia"
}
}
response = requests.post(url, json=data, headers=headers)
print(response.json())fetch("https://api.meetingbaas.com/v2/bots", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-meeting-baas-api-key": "YOUR-API-KEY",
},
body: JSON.stringify({
meeting_url: "https://meet.google.com/abc-defg-hij",
bot_name: "AI Notetaker",
recording_mode: "speaker_view",
transcription_enabled: true,
transcription_config: {
provider: "gladia"
}
}),
})
.then((response) => response.json())
.then((data) => console.log(data.data.bot_id))
.catch((error) => console.error("Error:", error));Scheduled Bot
To schedule a bot to join at a specific time, use POST /v2/bots/scheduled:
curl -X POST "https://api.meetingbaas.com/v2/bots/scheduled" \
-H "Content-Type: application/json" \
-H "x-meeting-baas-api-key: YOUR-API-KEY" \
-d '{
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "AI Notetaker",
"recording_mode": "speaker_view",
"join_at": "2025-01-20T14:00:00Z"
}'import requests
from datetime import datetime
url = "https://api.meetingbaas.com/v2/bots/scheduled"
headers = {
"Content-Type": "application/json",
"x-meeting-baas-api-key": "YOUR-API-KEY",
}
data = {
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "AI Notetaker",
"recording_mode": "speaker_view",
"join_at": "2025-01-20T14:00:00Z" # ISO 8601 format
}
response = requests.post(url, json=data, headers=headers)
print(response.json())fetch("https://api.meetingbaas.com/v2/bots/scheduled", {
method: "POST",
headers: {
"Content-Type": "application/json",
"x-meeting-baas-api-key": "YOUR-API-KEY",
},
body: JSON.stringify({
meeting_url: "https://meet.google.com/abc-defg-hij",
bot_name: "AI Notetaker",
recording_mode: "speaker_view",
join_at: "2025-01-20T14:00:00Z" // ISO 8601 format
}),
})
.then((response) => response.json())
.then((data) => console.log(data.data.bot_id))
.catch((error) => console.error("Error:", error));Request Parameters
Required Parameters
meeting_url: The meeting URL (Google Meet, Microsoft Teams, or Zoom)bot_name: The display name of the bot
Recording Options
recording_mode: One of:"speaker_view"(default): Shows only the active speaker"gallery_view": Shows all participants"audio_only": Audio recording only (MP3)
Bot Appearance
bot_image: Optional. URL to the bot's avatar image (JPEG or PNG, HTTPS required)
Transcription
transcription_enabled: Set totrueto enable transcriptiontranscription_config: Required iftranscription_enabledistrue:provider:"gladia"(default) (More providers coming soon)api_key: Optional. Your transcription provider API key (for BYOK transcription)custom_params: Optional. Custom parameters for the transcription provider
Callbacks
callback_enabled: Set totrueto enable callbacks for this botcallback_config: Required ifcallback_enabledistrue:url: The URL to receive callback notificationsmethod:"POST"(default) or"PUT"secret: Optional. Secret key included inx-mb-secretheader for verification
Timeouts
timeout_config: Optional object:waiting_room_timeout: Seconds to wait in waiting room (default: 600, min: 120, max: 1800)no_one_joined_timeout: Seconds to wait if no one joins (default: 600, min: 120, max: 1800, isn't used by Zoom)silence_timeout: Once a participant has been identified, no_one_joined_timeout stops and silence_timeout kicks in. When there is continued silence for the seconds provided, the bot leaves the meeting (default: 600, min: 300, max: 1800, isn't used by Zoom)
Advanced Options
allow_multiple_bots:true(default) to allow multiple bots in the same meeting,falseto prevent duplicatesentry_message: Optional message the bot sends when joiningextra: Optional custom metadata (included in webhooks and callbacks)streaming_enabled: Enable audio streamingstreaming_config: Required ifstreaming_enabledistrue
Scheduled Bot Specific
join_at: Required for scheduled bots. ISO 8601 timestamp when the bot should join
Response
The API returns the bot ID:
{
"success": true,
"data": {
"bot_id": "123e4567-e89b-12d3-a456-426614174000"
}
}For scheduled bots, the bot_id is returned immediately and will be reused when the bot actually joins the meeting.
Next Steps
- Get meeting data
- Set up webhooks for real-time notifications
- Remove a bot
