Sending a bot

Learn how to send AI bots to meetings through the Meeting BaaS API, with options for immediate or scheduled joining and customizable settings

Sending a Bot to a Meeting

You can summon a bot in two ways with a simple curl request, using one our code examples, our more simply if you use Typescript, our SDK.

API Request

Send a POST request to https://api.meetingbaas.com/bots:

join_meeting.sh
curl -X POST "https://api.meetingbaas.com/bots" \
     -H "Content-Type: application/json" \
     -H "x-meeting-baas-api-key: YOUR-API-KEY" \
     -d '{
           "meeting_url": "YOUR-MEETING-URL",
           "bot_name": "AI Notetaker",
           "recording_mode": "speaker_view",
           "bot_image": "https://example.com/bot.jpg",
           "entry_message": "I am a good meeting bot :)",
           "speech_to_text": {
             "provider": "Default"
           },
           "automatic_leave": {
             "waiting_room_timeout": 600
           }
         }'
join_meeting.py
import requests
url = "https://api.meetingbaas.com/bots"
headers = {
    "Content-Type": "application/json",
    "x-meeting-baas-api-key": "YOUR-API-KEY",
}
config = {
    "meeting_url": "YOUR-MEETING-URL",
    "bot_name": "AI Notetaker",
    "recording_mode": "speaker_view",
    "bot_image": "https://example.com/bot.jpg",
    "entry_message": "I am a good meeting bot :)",
    "speech_to_text": {
        "provider": "Default"
    },
    "automatic_leave": {
        "waiting_room_timeout": 600  # 10 minutes in seconds
    }
}
response = requests.post(url, json=config, headers=headers)
print(response.json())
join_meeting.js
fetch("https://api.meetingbaas.com/bots", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-meeting-baas-api-key": "YOUR-API-KEY",
  },
  body: JSON.stringify({
    meeting_url: "YOUR-MEETING-URL",
    bot_name: "AI Notetaker",
    recording_mode: "speaker_view",
    bot_image: "https://example.com/bot.jpg",
    entry_message: "I am a good meeting bot :)",
    speech_to_text: {
      provider: "Default",
    },
    automatic_leave: {
      waiting_room_timeout: 600,
    },
  }),
})
  .then((response) => response.json())
  .then((data) => console.log(data.bot_id))
  .catch((error) => console.error("Error:", error));

Request Parameters

Required Parameters

  • meeting_url: The meeting URL to join. Accepts Google Meet, Microsoft Teams or Zoom URLs.
  • bot_name: The display name of the bot.

Recording Options

  • recording_mode: Optional. One of:
    • "speaker_view": (default) The recording will only show the person speaking at any time
    • "gallery_view": The recording will show all the speakers
    • "audio_only": The recording will be a mp3

Bot Appearance and Behavior

  • bot_image: The URL of the image the bot will display. Must be a valid URI format. Optional.
  • entry_message: Optional. The message the bot will write within 15 seconds after being accepted in the meeting.

Transcription Settings

  • speech_to_text: Optional. If not provided, no transcription will be generated and processing time will be faster.
    • Must be an object with:
      • provider: One of:
        • "Default": Standard transcription, no API key needed
        • "Gladia" or "Runpod": Requires their respective API key to be provided
      • api_key: Required when using Gladia or Runpod providers. Must be a valid API key from the respective service.

Automatic Leaving

  • automatic_leave: Optional object containing:
    • waiting_room_timeout: Time in seconds the bot will wait in a meeting room before dropping. Default is 600 (10 minutes)
    • noone_joined_timeout: Time in seconds the bot will wait if no one joins the meeting

Advanced Options

  • webhook_url: URL for webhook notifications
  • deduplication_key: String for deduplication. By default, Meeting BaaS will reject you sending multiple bots to a same meeting within 5 minutes, to avoid spamming.
  • streaming: Object containing optional WebSocket streaming configuration:
    • audio_frequency: Audio frequency for the WebSocket streams. Can be "16khz" or "24khz" (defaults to "24khz")
    • input: WebSocket endpoint to receive raw audio bytes and speaker diarization as JSON strings from the meeting
    • output: WebSocket endpoint to stream raw audio bytes back into the meeting, enabling bot speech
  • extra: Additional custom data
  • start_time: Unix timestamp (in seconds) for when the bot should join the meeting. For example, if you want the bot to join at exactly 2:00 PM, set this to the millisecond timestamp of 2:00 PM.

Response

The API will respond with the unique identifier for your bot:

HTTP/2 200
Content-Type: application/json

{
  "bot_id": 42
}

Next Steps

Use this bot_id to:

On this page