Meeting Bot
Join any meeting as an AI assistant. Transcribe conversations, generate summaries, extract action items, or actively participate using your assistant's personality.
Supported Platforms
Microsoft Teams
Native bot integration with participant roster and speaker identification.
Zoom
Join Zoom meetings via URL with automatic platform detection.
Google Meet
Native integration with Google Meet for seamless joining.
PSTN Dial-In
Universal fallback: dial into any meeting with a phone number and access code.
Operating Modes
Listen Mode
Silently transcribe the meeting, identify speakers, and generate a summary when the meeting ends. Perfect for meeting notes and documentation.
Participate Mode
Actively engage in the conversation using your assistant's personality. Two participation styles:
- • addressed_only - Only respond when directly addressed (e.g., "Alex, what do you think?")
- • proactive - Interject when relevant to the conversation
Quick Start
Join a meeting with a single API call. The platform is auto-detected from the URL:
# Join a Teams meeting to listen and transcribe
curl -X POST https://voice.voicerail.ai/api/v1/meeting-bot/join \
-H "Authorization: Bearer $VOICERAIL_KEY" \
-H "X-Organization-Id: $ORG_ID" \
-d '{
"assistantId": "asst_xxx",
"meetingUrl": "https://teams.microsoft.com/l/meetup-join/...",
"mode": "listen"
}'Active Participation
Have your AI assistant actively participate in discussions:
# Join and actively participate in the meeting
curl -X POST https://voice.voicerail.ai/api/v1/meeting-bot/join \
-H "Authorization: Bearer $VOICERAIL_KEY" \
-H "X-Organization-Id: $ORG_ID" \
-d '{
"assistantId": "asst_xxx",
"meetingUrl": "https://zoom.us/j/123456789",
"mode": "participate",
"participationStyle": "addressed_only",
"maxDurationSeconds": 3600
}'PSTN Dial-In
For platforms without native integration, or when you have a conference bridge phone number:
# Dial into any meeting via PSTN
curl -X POST https://voice.voicerail.ai/api/v1/meeting-bot/join \
-H "Authorization: Bearer $VOICERAIL_KEY" \
-H "X-Organization-Id: $ORG_ID" \
-d '{
"assistantId": "asst_xxx",
"dialInNumber": "+14155551234",
"dialInCode": "123456#",
"mode": "listen"
}'Note: PSTN mode uses speaker diarization (Speaker 1, Speaker 2, etc.) instead of named participants.
Leaving Meetings
The bot automatically leaves when:
- • The meeting ends (detected automatically)
- • All human participants leave
- • Someone says "Alex, please leave the call" (semantic detection)
- • Maximum duration timeout is reached
Or leave programmatically:
# Leave the meeting
curl -X POST https://voice.voicerail.ai/api/v1/meeting-bot/{sessionId}/leave \
-H "Authorization: Bearer $VOICERAIL_KEY" \
-H "X-Organization-Id: $ORG_ID"Post-Meeting Outputs
After the meeting ends, retrieve the AI-generated summary and full transcript:
# Get AI-generated meeting summary (after meeting ends)
curl https://voice.voicerail.ai/api/v1/meeting-bot/{sessionId}/summary \
-H "Authorization: Bearer $VOICERAIL_KEY" \
-H "X-Organization-Id: $ORG_ID"
# Response:
{
"summary": "The team discussed Q4 priorities...",
"actionItems": [
{ "assignee": "Alex", "action": "Prepare budget proposal", "dueDate": "2024-01-15" }
],
"keyDecisions": [
"Moving forward with React for the frontend rewrite"
],
"keyTopics": ["Budget", "Roadmap", "Hiring"],
"recordingUrl": "https://storage.voicerail.ai/..."
}# Get full meeting transcript
curl https://voice.voicerail.ai/api/v1/meeting-bot/{sessionId}/transcript \
-H "Authorization: Bearer $VOICERAIL_KEY" \
-H "X-Organization-Id: $ORG_ID"
# Response:
{
"transcript": [
{ "speaker": "Alex Chen", "text": "Let's start with the roadmap...", "timestamp": "2024-01-10T10:00:05Z" },
{ "speaker": "Sam Taylor", "text": "I have some concerns about the timeline.", "timestamp": "2024-01-10T10:00:32Z" }
]
}API Reference
Join Meeting Request
| Field | Type | Required | Description |
|---|---|---|---|
| assistantId | string | Yes | The assistant to use for the meeting |
| meetingUrl | string | * | Teams, Zoom, or Google Meet URL |
| dialInNumber | string | * | E.164 phone number for PSTN dial-in |
| dialInCode | string | No | Access code to enter after dialing |
| mode | string | No | "listen" (default) or "participate" |
| participationStyle | string | No | "addressed_only" (default) or "proactive" |
| maxDurationSeconds | integer | No | Max meeting duration (60-28800, default 14400) |
* Either meetingUrl or dialInNumber must be provided.
Bot Identity
The meeting bot appears in participant rosters using your assistant's name:
- • Native integrations: "Alex - VoiceRail" (visible in roster)
- • PSTN dial-in: Appears as a phone participant
Common Use Cases
- • Meeting Notes - Automatic transcription and summary for all meetings
- • AI Scribe - Like Fireflies.ai, but using your own AI assistant
- • Sales Calls - Capture customer conversations and extract action items
- • Interview Assistant - Record and analyze candidate interviews
- • Training - Have an AI subject matter expert join training sessions
Next Steps
- • Create an assistant with the right personality for your meetings
- • Configure custom reasoning for domain-specific knowledge
- • View meeting analytics in the observability dashboard
- • See the full API reference for all Meeting Bot endpoints