API v2

Google Meet Authentication

Send authenticated Google Meet bots that sign in as Google Workspace users via SAML SSO, bypass the waiting room, and join sign-in-restricted meetings

Authenticated Google Meet Bots

By default, Meeting BaaS bots join Google Meet as anonymous guests. That works for open meetings, but it falls short when a meeting is restricted to signed-in users, restricted to a host's organization, or configured to send guests to a waiting room.

Authenticated Meet bots solve this. Each bot signs in as a real Google Workspace user from a domain you control, using SAML SSO, before it joins the call. To Meet, the bot looks like any other signed-in participant.

This feature is Google Meet–only. For Zoom authentication, see Zoom Integration. For Microsoft Teams, see Microsoft Teams Authentication. Leave meet_config null for anonymous Meet joins.

Why authenticate

ScenarioAnonymous botAuthenticated bot
Open meeting, anyone with link✅ Joins✅ Joins
"Only people in the organization can join"MEET_LOGIN_REQUIRED✅ Joins as a Workspace user
Guests sent to a waiting room⏳ Waits for admit✅ Bypasses via verified queue (with email_group)
Calendar-invited participants auto-admitted❌ Not invited✅ Invite the Google Group, land in the verified queue

How it works

Authentication is built on three resources. You configure the first two once, then reference them per bot.

Meet Workspace — the parent resource representing one Google Workspace's SAML SSO configuration. It holds the SAML signing certificate and private key shared by every login under it. You create one per Google Workspace domain. See Setup.

Meet Logins — one per Google Workspace user the bots sign in as. Many logins can share a single workspace. Logins can be grouped into round-robin pools by email_group.

meet_config on the bot — when you create a bot, you tell it which login (or pool) to use. The dispatcher signs the bot in via SAML SSO using the workspace's keypair, then joins the meeting.

Meet Workspace (domain + SAML cert/key)

        ├── Meet Login  bot1@bots.acme.com   ┐
        ├── Meet Login  bot2@bots.acme.com   ├─ email_group: bots@bots.acme.com (round-robin pool)
        └── Meet Login  bot3@bots.acme.com   ┘

        POST /v2/bots  { meet_config: { email_group: "bots@bots.acme.com" } }

                 least-loaded active login is assigned → bot signs in → joins Meet

The meet_config object

All Meet authentication options are passed in a single meet_config object on POST /v2/bots:

{
  "bot_name": "Recording Bot",
  "meeting_url": "https://meet.google.com/abc-defg-hij",
  "meet_config": {
    "email_group": "bots@bots.acme.com",
    "fallback": "fail"
  }
}
ParameterDescription
email_groupRound-robin pool selector. The bot is assigned the least-loaded active login in this pool. Preferred for most use cases — takes priority over credential_id. Pass "" to round-robin across all of the team's active logins.
credential_idPin one specific login (UUID) for this bot.
fallbackWhat to do when no login slot is available: fail (default) fails bot creation with MEET_LOGIN_UNAVAILABLE; anonymous silently falls back to an anonymous join.

Leave meet_config null for anonymous Meet joins, Zoom, or Microsoft Teams.

Key concepts

The verified queue and the waiting room

When you put a login's email_group (a Google Group address) on the calendar invite for a meeting, the assigned bot lands in Meet's verified queue and bypasses the waiting room — it is treated as an invited participant. This is the recommended pattern for unattended recording. Without an invite, an authenticated bot still benefits from being a signed-in organizational user, but may still hit the host's admission rules.

Round-robin pools and concurrency

Each login supports up to 20 concurrent SSO sessions. When you dispatch bots with an email_group, the assigner picks the least-loaded active login and skips any login at capacity. If every login in a pool is saturated, bot creation fails with MEET_LOGIN_UNAVAILABLE (or falls back to anonymous, per your fallback setting). Create more logins to raise the ceiling, and configure a Meet Login Utilization alert to stay ahead of saturation (the utilization endpoint gives an on-demand view).

States

Both workspaces and logins track health with a state field:

  • active — healthy and usable.
  • invalid — the system auto-disabled the resource after a failure (a SAML rejection for workspaces; a bot login failure such as a suspended user, or a bot account that never completed its first-time interactive "Welcome to Workspace" login). Re-enable manually via PATCH after fixing the underlying issue.

When a resource flips to invalid, last_error_message and last_error_at explain why.

Security

The SAML certificate and private key are encrypted at rest using AES-256-GCM. The private_key_pem is never returned in any API response — not on create, and not on subsequent reads. If you lose it, rotate the keypair via PATCH /v2/meet-workspaces/{workspace_id}.

Pages in this section

FAQ

On this page