Google Meet Bots

Zero-setup meeting bots for Google Meet

View as Markdown

Google Meet needs no setup at all — a single create_bot call puts a bot in the meeting:

curl -X POST "https://api.meetstream.ai/api/v1/bots/create_bot" \
-H "Authorization: Token <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"meeting_link": "https://meet.google.com/abc-defg-hij",
"bot_name": "Notetaker"
}'

Need a meeting to test against? Open meet.new while signed in — you’re the host of that meeting, so you can admit your own bot.

Lobby and admission

MeetStream bots join Google Meet anonymously by default, which means Meet’s admission rules apply:

  • With Host management on, only the host and co-hosts (and in some configurations trusted Workspace users) can see and admit lobby participants. Regular attendees often can’t see the request at all — to them it looks like the bot never arrived, while MeetStream correctly reports bot.in_waiting_room.
  • If nobody admits the bot before waiting_room_timeout (60–600s on Meet, default 600), it leaves with bot.notallowed.
  • If someone explicitly rejects the request, you get bot.denied.
  • MeetStream cannot override the organizer’s meeting-access settings or Workspace policies.

Once admitted, Meet bots go straight from bot.inmeeting to bot.recording — there is no recording-permission gate like Zoom’s.

Deep dive with troubleshooting flows: Google Meet Lobby & Admission.

Signed-in bots: skip the waiting room

A signed-in bot logs into a real Google account before joining, so it appears as a named participant instead of an anonymous guest — and if that account’s email is on the calendar invite, it skips the waiting room entirely.

{
"meeting_link": "https://meet.google.com/abc-defg-hij",
"bot_name": "Notetaker",
"google_meet": {
"login_required": true,
"google_login_domain": "yourdomain.com"
}
}

Requirements: a Google Workspace account on a custom domain, admin console access for a one-time SSO profile, and uploading a certificate per login in the dashboard (Integrations → Google Signed-In Bots). Scaling rule of thumb: one login per ~20 concurrent Meet sessions; MeetStream distributes bots across logins round-robin. Identities can also be managed via the Google Login endpoints.

Note: a signed-in bot’s visible name and avatar come from the Google account, not from bot_name.

Full walkthrough: Google Signed-In Bots.

Google Meet behavior at a glance

BehaviorOn Google Meet
SetupNone
AdmissionAnonymous by default; signed-in bots on the invite skip the lobby
Recording startImmediately after joining (no permission gate)
Timeout defaultswaiting_room_timeout 600, no_one_joined_timeout 600, everyone_left_timeout 300
Per-participant audioPartial isolation — up to 3 concurrent speaker streams via WebRTC CSRC demuxing, attributed to the active speaker
Per-participant videoWebcam up to 854×480 @ 800 kbps; screen share up to 1280×720 @ 2 Mbps; multiple concurrent screen shares (unique to Meet)
Native captionsSupported via the meeting_captions transcription provider
Pause/resume recordingSupported — guide
QuirkParticipant names can show “Unknown” for the first ~10 seconds while Meet’s name resolver populates

Calendar auto-join

Connect a Google Calendar (any account — personal Gmail or Workspace) and MeetStream detects meeting links in upcoming events and can schedule bots automatically, joining one minute before start. Recurring meetings, per-event overrides, and rescheduling are all handled — see the Scheduling guide and Google Calendar OAuth Setup.

Next steps

Google Meet FAQ

Almost always sitting in the lobby. With Host management on, only hosts and co-hosts can even see the admission request — regular attendees can’t. MeetStream reports bot.in_waiting_room the whole time. See the lobby guide.

Use a signed-in bot whose Google account email is on the calendar invite — invited participants bypass the lobby.

Meet’s name resolver can take ~10 seconds to populate names after a join. IDs (deviceId) are stable from the first moment — use those for joins across data. See Participants & Speaker Timeline.

No — tile layout is per-viewer in Meet, so no API can hide the bot for everyone. A clear bot_name (and a bot_message explaining why it’s there) is the practical answer.

The bot is removed like any participant, then normal post-call processing and webhooks run.