Create a meet login
Create a meet login — a Google Workspace user identity attached to a parent meet workspace.
Each login represents one Workspace user that bots can sign in as. Many logins can share one workspace; they all use the workspace's cert/key for SAML signing. Round-robin assignment picks the least-loaded active login when a bot is dispatched with meet_config.email_group (or credential_id) on POST /v2/bots.
Prerequisites: Create a meet workspace first via POST /v2/meet-workspaces. Pass the returned workspace_id here.
Domain Validation: The email must belong to the parent workspace's domain (or a subdomain). For example, if the workspace domain is bots.acme.com, valid emails include bot1@bots.acme.com or bot2@dev.bots.acme.com, but not bot1@acme.com. The same rule applies to email_group if provided.
Email Group (optional but encouraged): Set email_group to a Google Group address that contains the bot users as members. When you put this group address on a calendar invite, the assigned bot lands in Meet's verified queue and bypasses the waiting room. Logins sharing the same email_group form one round-robin pool.
Per-team Uniqueness on Email: Each email may exist at most once per team. Attempting to register the same email twice returns 409.
Concurrency: Each login supports up to 20 concurrent SSO sessions by default. When a login hits its capacity, the round-robin assigner skips it and tries the next one in the pool. If all logins in a pool are saturated, the bot creation fails with MEET_LOGIN_UNAVAILABLE (or falls back to anonymous, depending on your fallback setting).
Error Scenarios:
404 Not Found:workspace_idis unknown or does not belong to your team.409 Conflict: A login for thisemailalready exists.422 Unprocessable Entity:emailoremail_groupdomain does not match the parent workspace's domain.
Authorization
ApiKeyAuth Your Meeting BaaS API key. Get one from your account settings.
In: header
Request Body
application/json
Email of the Google Workspace user this login signs in as. Domain must match the parent workspace's domain.
^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$emaillength <= 254Optional Google Group address used for round-robin pooling. Logins sharing the same email_group form one round-robin pool. If you put this group on calendar invites, the assigned bot will land in the verified queue and bypass the waiting room.
^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$emaillength <= 254User-friendly label for this credential. Not unique — names can repeat within a team.
1 <= length <= 100UUID of the parent meet_workspace. Create one via POST /v2/meet-workspaces first.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://api.meetingbaas.com/v2/meet-logins" \ -H "Content-Type: application/json" \ -d '{ "email": "bot1@bots.customer.com", "name": "Production Bot Pool — Account 1", "workspace_id": "f0e1d2c3-b4a5-6789-0123-456789abcdef" }'{
"data": {
"active_session_count": 9007199254740991,
"created_at": "string",
"credential_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"email": "string",
"email_group": "string",
"extra": {
"environment": "production",
"internal_user_id": "u_123"
},
"failure_data": null,
"last_error_at": "string",
"last_error_message": "string",
"last_used_at": "string",
"name": "string",
"state": "active",
"updated_at": "string",
"workspace_id": "string"
},
"success": true
}{
"code": "string",
"error": "string",
"message": "string",
"statusCode": 9007199254740991,
"success": false
}{
"code": "string",
"details": "string",
"error": "string",
"message": "string",
"statusCode": 9007199254740991,
"success": false
}{
"code": "string",
"details": "string",
"error": "string",
"message": "string",
"statusCode": 9007199254740991,
"success": false
}{
"code": "string",
"details": "string",
"error": "string",
"message": "string",
"retryAfter": 9007199254740991,
"statusCode": 9007199254740991,
"success": false
}{
"code": "string",
"details": "string",
"error": "string",
"message": "string",
"statusCode": 9007199254740991,
"success": false
}