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.
The API is open source and can be self-hosted or used via the public endpoint.
- 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 meetingDELETE /bots/{bot_id}
— Remove a bot from a meetingGET /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 GitHubSPEAKING_BOT.PYimport 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

Resources
Open-Source
Transcript SeekerTranscript Seeker: a complete interface in ReactSpeaking Bots: AI-powered meeting participantsMCP Tools - Model Context ProtocolMeeting MCP ServerMCP on VercelMCP Documentation ServerNode server for Notion summariesSimple Transcript player in ReactMeeting summarization using Make.comInterface for the Gladia transcription APIInterface for the AssemblyAI transcription API
APIs
Product
PlansFeature ListMeeting Transcription APIAI Meeting Assistant APIAPI to Record and Transcribe Video MeetingsMeeting bots with transcriptionMeeting bot API for Google MeetAlternative Recording API for Google MeetAlternatives to Recall AIRecall AI vs Meeting BaaSMeeting bot API for ZoomMeeting bot API for Microsoft Teams