← Back to Documentation

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 Meeting
# 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:

Participate Mode
# 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:

PSTN Dial-In
# 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 Meeting
# 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 Summary
# 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 Transcript
# 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

FieldTypeRequiredDescription
assistantIdstringYesThe assistant to use for the meeting
meetingUrlstring*Teams, Zoom, or Google Meet URL
dialInNumberstring*E.164 phone number for PSTN dial-in
dialInCodestringNoAccess code to enter after dialing
modestringNo"listen" (default) or "participate"
participationStylestringNo"addressed_only" (default) or "proactive"
maxDurationSecondsintegerNoMax 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