> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.meetstream.ai/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.meetstream.ai/_mcp/server.

# Google Meet Bots

> Run meeting bots on Google Meet with the MeetStream API: zero setup, lobby and admission behavior, signed-in bots that skip the waiting room, per-participant audio and video, and calendar auto-join.

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

```bash
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](https://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](/guides/app-integrations/gmeet-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**.

```json
{
  "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](/api-reference/api-endpoints/google-signed-in-bots/list-google-logins).

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](/guides/app-integrations/google-signed-in-bots).

## Google Meet behavior at a glance

| Behavior               | On Google Meet                                                                                                                |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| Setup                  | None                                                                                                                          |
| Admission              | Anonymous by default; signed-in bots on the invite skip the lobby                                                             |
| Recording start        | Immediately after joining (no permission gate)                                                                                |
| Timeout defaults       | `waiting_room_timeout` 600 (max 600), `noone_joined_timeout` 600, `everyone_left_timeout` 600                                 |
| Per-participant audio  | Partial isolation — up to 3 concurrent speaker streams via WebRTC CSRC demuxing, attributed to the active speaker             |
| Per-participant video  | Webcam up to 854×480 @ 800 kbps; screen share up to 1280×720 @ 2 Mbps; **multiple concurrent screen shares** (unique to Meet) |
| Native captions        | Supported via the `meeting_captions` [transcription provider](/guides/transcription-recordings/post-call-transcription)       |
| Pause/resume recording | Supported — [guide](/guides/features/pause-resume-recording)                                                                  |
| Quirk                  | Participant 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](/guides/features/scheduling-bots) and [Google Calendar OAuth Setup](/guides/calendar-integrations/google-calendar-oauth-setup).

## Next steps

* [Create your first bot](/guides/get-started/create-your-first-bot)
* [Live transcription](/guides/transcription-recordings/live-transcription) and [real-time audio](/guides/websockets/real-time-audio-streaming)
* [Webhooks and events](/guides/webhooks/webhooks-and-events)