Skip to navigation

Meeting Platforms Supported

What a MeetStream bot can do on Zoom, Google Meet, Microsoft Teams and WhatsApp calls (Beta), side by side

View as Markdown

One create_bot call works on every platform: MeetStream detects the platform from meeting_link. Use the tables below to check what each platform supports before you build.

MeetStream supports Zoom, Google Meet and Microsoft Teams, plus WhatsApp calls in Beta. Links from other meeting services are rejected with a 400. See HTTP errors from create_bot.

Joining

ZoomGoogle MeetMicrosoft Teams
SetupZoom Meeting SDK Client ID and Secret in Integrations > Zoom (guide)NoneNone
Guest joinYes, with your Zoom app. Meetings outside your app’s Zoom account need a token (next row)¹Yes, as an anonymous guestYes, as an anonymous guest
Signed-in joinzoom.zak_url (join as a Zoom user) or zoom.obf_url (join on behalf of a user in the meeting). Guidegoogle_meet.login_required with a registered Workspace domain. Guideteams.login_required with a registered Microsoft 365 tenant. Not for teams.live.com links. Guide
Links that join (https://)zoom.us/j/<meeting-id>?pwd=<passcode> on any *.zoom.us hostmeet.google.com/abc-defg-hijteams.microsoft.com/l/meetup-join/..., teams.microsoft.com/meet/<id>?p=..., teams.live.com/meet/<id>
Links not supported yetPersonal room /my/<name>, webinar /w/<id>, /s/<id> and /wc/join/<id> links, zoommtg:// links, ZoomGov (zoomgov.com)²http:// links, /lookup/ links, g.co/meet short linksteams.cloud.microsoft links, links with no path (teams.microsoft.com/#/...). Government cloud (*.teams.microsoft.us) is accepted but not verified
Bot name (bot_name)Any text, default MeetStreamAny text, default MeetStream. Signed-in bots show the Google account’s nameLetters, numbers, spaces and - ' . _ @ only. Signed-in bots show the Microsoft account’s name
Bot image (bot_image_url)Shown as the bot’s cameraShown as the bot’s cameraShown as the bot’s camera, for guest and signed-in bots
waiting_room_timeout60 to 1200 s, default 60060 to 600 s, default 60060 to 1800 s, default 1200
If the host has not started the meetingWaits on the same waiting_room_timeout, then NotAllowed. Stops immediately if Zoom reports Meeting not yet startedEnds as Failed with MeetingNotStarted when Meet shows “This meeting has not started”Waits on waiting_room_timeout, then NotAllowed

¹ Zoom requires Meeting SDK apps to authorize joins outside their own account. Without a token, those joins end with Unable to join external meeting.

² ZoomGov links pass validation, but ZoomGov meetings are not supported yet.

Recording and media

ZoomGoogle MeetMicrosoft Teams
Mixed audioYesYesYes
Composite video (video_required)YesYesYes
Layouts (recording_config.video_layout)grid_view (default), speaker_view, built after the callgrid_view (default), speaker_view, built after the callgrid_view (default), speaker_view, built after the call
Per-participant audio (audio_separate_streams)Up to 16 speakers, one stream eachUp to 16 speakers, one stream eachUp to 16 speakers, separated from Teams’ mixed audio; overlapping speech is attributed to one speaker
Per-participant video (video_separate_streams)Up to 16 webcams at 180p, 15 fps; no composite requiredUp to 16 streams, including screen shares; needs video_required: trueUp to 6 streams, including 1 screen share, up to 1280x720 at 15 fps; needs video_required: true
Screen shareCaptured as its own file when per-participant video is onCaptured as its own stream when per-participant video is on; counts toward the 16Captured as its own stream when per-participant video is on; one share at a time, counts toward the 6
Pause and resume recordingYesYesYes
ScreenshotsNoYesYes
Recording permissionIf the bot cannot record right away, it asks the host and waits recording_permission_denied_timeout (60 to 300 s, default 60)Not applicableNot applicable
Live audio over WebSocket (live_audio_required)Yes, per speakerYes, mixed audio tagged with the active speakerYes, mixed audio tagged with the dominant speaker
Outbound live video (live_video_required)Not implementedNot implementedNot implemented
Publish camera and microphone (bot_camera_stream)YesYesYes

Chat, participants and interaction

ZoomGoogle MeetMicrosoft Teams
Read chatYes. to is everyone, a participant’s name, or directYesYes. Every message is reported as to: "everyone"
Send chatYesYesYes
Intro message (bot_message)Posted once after joiningPosted a few seconds after joiningPosted after joining
Send imageYes, shown on the bot’s cameraYes, shown on the bot’s cameraYes, shown on the bot’s camera
Participant join and leave eventsYesYesYes

For inbound camera publishing, see Bot Camera Streaming and the Create Bot Payload Reference. See chat and visuals and participants and speaker timeline.

Transcription

ZoomGoogle MeetMicrosoft Teams
Post-call providersdeepgram, assemblyai, jigsawstack, sarvam, meetstreamdeepgram, assemblyai, jigsawstack, sarvam, meetstreamdeepgram, assemblyai, jigsawstack, sarvam, meetstream
Live providersdeepgram_streaming, assemblyai_streaming, sarvam_streaming, meetstream_streamingdeepgram_streaming, assemblyai_streaming, jigsawstack_streaming, sarvam_streaming, meetstream_streamingdeepgram_streaming, assemblyai_streaming, sarvam_streaming, meetstream_streaming
Native captions (meeting_captions)Not supported³Yes. The bot turns captions on and sends them live to your webhook. English onlyCollected only if captions are already running in the meeting. Saved after the call, not sent live. Labeled English

³ Zoom accepts meeting_captions in the request but does not produce captions. Use a post-call or live provider instead.

Only one live provider runs per bot. See live transcription, post-call transcription and transcription providers.

Automatic leave

SettingZoomGoogle MeetMicrosoft Teams
waiting_room_timeoutHonoredHonoredHonored
no_one_joined_timeoutNot enforcedHonoredNot enforced (covered by everyone_left_timeout)
everyone_left_timeoutStarts only after a participant leavesStarts after someone else has been in the meetingStarts whenever the bot is alone, including when nobody has joined
voice_inactivity_timeoutStarts after the first speaker is heardStarts after admissionStarts after admission; any meeting audio resets it
in_call_recording_timeoutEnforced only when video or separate streams are onNot enforcedNot enforced
recording_permission_denied_timeoutHonoredIgnoredIgnored
bot_detectionHonoredHonoredHonored

Full details, ranges and defaults are on automatic leave.

WhatsApp calls (Beta)

WhatsApp call support is in Beta and must be enabled for your workspace. It uses the same create_bot endpoint, with these differences:

  • Setup: pair a WhatsApp number under Integrations > WhatsApp. Pass whatsapp.account_id to pick a number, or omit it and MeetStream uses a healthy paired number.
  • Links: https://call.whatsapp.com/video/<token>, https://call.whatsapp.com/voice/<token> or https://web.whatsapp.com/call/video/<token>/. The WhatsApp Web home page is rejected.
  • Recording: mixed audio and composite video (grid_view only). Pause and resume work.
  • Not supported: per-participant audio and video (the flags are ignored), chat, intro messages, images, screenshots and native captions.
  • Transcription: post-call deepgram only.
  • Automatic leave: everyone_left_timeout is off by default. The bot leaves when call audio has stopped for call_end_grace_seconds (10 to 300 s, default 30), for example after the other side hangs up.

Not supported on any platform

  • Breakout rooms: the bot stays with the main meeting.
  • Zoom webinars (/w/ links), Teams town halls, webinars and live events.
  • Joining by dial-in number or PIN.
  • Links from other meeting services.