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 Meeting BaaS.
- 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.
Setup and Installation
Prerequisites
- Python 3.11+
grpc_tools
for protocol buffer compilation- Ngrok for local development
- Poetry for dependency management
Quick Setup
-
Clone the repository:
git clone https://github.com/Meeting-Baas/speaking-meeting-bot.git cd speaking-meeting-bot
-
Install dependencies:
# Install Poetry curl -sSL https://install.python-poetry.org | python3 - # Configure Poetry and install dependencies poetry env use python3.11 poetry install poetry shell
-
Configure environment:
cp env.example .env
Edit
.env
with your API keys:MEETING_BAAS_API_KEY
: For meeting platform integrationOPENAI_API_KEY
: For the conversation LLMCARTESIA_API_KEY
: For text-to-speechGLADIA_API_KEY
orDEEPGRAM_API_KEY
: For speech-to-text
-
Run the server:
poetry run uvicorn app:app --reload --host 0.0.0.0 --port 8766
For detailed setup instructions, see the official setup guide.
API Usage Examples
Deploy a Speaking Bot
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"
}'
curl -X POST "https://speaking.meetingbaas.com/bots" \
-H "x-meeting-baas-api-key: <token>" \
-H "Content-Type: application/json" \
-d '{
"bot_image": "https://example.com/bot-avatar.png",
"bot_name": "Meeting Assistant",
"enable_tools": true,
"entry_message": "Hello! I\'m here to assist with the meeting.",
"extra": {
"company": "ACME Corp",
"meeting_purpose": "Weekly sync"
},
"meeting_url": "https://meet.google.com/abc-defg-hij",
"personas": [
"helpful_assistant",
"meeting_facilitator"
],
"prompt": "You are Meeting Assistant, a concise and professional AI bot that helps summarize key points and keep the meeting on track. Speak clearly and stay on topic."
}'
import requests
import json
def deploy_speaking_bot():
url = "https://speaking.meetingbaas.com/bots"
headers = {
"Content-Type": "application/json",
"x-meeting-baas-api-key": "your-api-key"
}
payload = {
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "AI Assistant",
"personas": ["helpful_assistant"],
"entry_message": "Hello! I'm your AI assistant for this meeting.",
"bot_image": "https://example.com/bot-avatar.png",
"enable_tools": True,
"extra": {
"company": "Your Company",
"meeting_purpose": "Team sync"
}
}
response = requests.post(url, headers=headers, json=payload)
return response.json()
# Deploy the speaking bot
result = deploy_speaking_bot()
print(result)
Remove a Bot from Meeting
curl -X DELETE "https://speaking.meetingbaas.com/bots/{bot_id}" \
-H "x-meeting-baas-api-key: your-api-key"
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
Example Persona Configuration
# Example persona structure
personas/
├── helpful_assistant/
│ ├── prompt.md # Main personality prompt
│ ├── context.md # Background context
│ └── rules.md # Behavioral rules
├── meeting_facilitator/
│ ├── prompt.md
│ ├── context.md
│ └── rules.md
└── interviewer/
├── prompt.md
├── context.md
└── rules.md
Available Personas
- helpful_assistant: General meeting assistance and note-taking
- meeting_facilitator: Helps guide meetings and keep discussions on track
- interviewer: Conducts structured interviews and asks follow-up questions
- baas_onboarder: Specialized for customer onboarding meetings
Local Development
For local development and testing:
# Run in local development mode with ngrok auto-configuration
poetry run python run.py --local-dev
# Access interactive API docs
open http://localhost:8766/docs
# Test with CLI tools
poetry run python scripts/batch.py -c 1 --meeting-url YOUR_MEETING_URL

Get Started
Ready to deploy conversational AI agents in your meetings? Check out our comprehensive resources: