Speaking Bots API

Conversational AI Agents for Meetings

The Speaking Bots API lets you deploy conversational AI agents (personas) into Google Meet, Microsoft Teams, and Zoom meetings. These bots can speak, listen, and interact in real time, powered by Pipecat and MeetingBaas.

  • Deploy bots with custom personalities and voices
  • Real-time audio streaming and speech-to-text
  • Support for multiple platforms and multiple bots per meeting
  • OpenAPI and HTTP endpoints for easy integration

The API is open source and can be self-hosted or used via the public endpoint.

Key Features

  • Conversational AI: Bots can speak, listen, and interact in meetings
  • Custom Personas: Define unique personalities, voices, and entry messages
  • Multi-Platform: Google Meet, Microsoft Teams, Zoom
  • WebSocket Audio: Real-time audio streaming with Pipecat
  • Open Source: Full codebase available for customization
  • Easy Deployment: Launch bots with a simple HTTP POST

API Endpoints

  • POST /bots — Deploy a speaking bot to a meeting
  • DELETE /bots/{bot_id} — Remove a bot from a meeting
  • GET /health — Health check

See the API docs and OpenAPI spec for full details.

HTTP Example: Deploy a Speaking Bot

Minimal example using curl:


SPEAKING_BOT.SH
#!/bin/bash curl -X POST "https://speaking.meetingbaas.com/bots" \ -H "Content-Type: application/json" \ -d '{ "meeting_url": "https://us06web.zoom.us/j/123456789?pwd=example", "personas": ["baas_onboarder"], "meeting_baas_api_key": "your-api-key" }'

Python example for advanced persona usage:


View on GitHub
SPEAKING_BOT.PY
import json import requests # API endpoint url = "https://speaking.meetingbaas.com/bots" # Request headers headers = {"Content-Type": "application/json"} # Request payload payload = { "meeting_url": "https://meet.google.com/abc-defg-hij", "personas": ["interviewer", "note_taker"], "meeting_baas_api_key": "your-api-key", "websocket_url": "wss://your-server.com/ws", # Optional "tts_provider": "cartesia", # Optional "stt_provider": "deepgram", # Optional } # Send the request response = requests.post(url, headers=headers, data=json.dumps(payload)) # Process the response if response.status_code == 200: result = response.json() print(f"Success! Bot ID: {result.get('bot_id')}") print(f"Bot Name: {result.get('bot_name')}") else: print(f"Error: {response.status_code}") print(response.text)

Personas: Custom Conversational Agents

Define your own personas with unique prompts, voices, and behaviors. See the personas directory for examples.


  • Each persona is a folder with Markdown files for prompt, context, and rules
  • Assign a persona by name when launching a bot
  • Supports custom entry messages, images, and voice IDs
preview features