Skip to main content
Send a bot to the meeting with one POST, then read the transcript while the call is still running. The bot joins Google Meet like any participant — no plugin, no host configuration — and streams back a speaker-attributed transcript you either poll over REST or subscribe to over WebSocket.
Hosted, no install: connect your agent (Claude Code, Codex, Cursor) or get an API key (free credit, no card required). Self-hosting: Deployment.

1. Send the bot

native_meeting_id is the id inside the join URL — abc-defg-hij in https://meet.google.com/abc-defg-hij — not the whole URL. Have only the URL? Send meeting_url alone; the API parses it into platform and native_meeting_id:
$API_BASE is https://api.cloud.vexa.ai hosted, or http://localhost:18056 self-hosted. Optional on the spawn: language (ISO code; omit for per-window auto-detection) and task (transcribe default, or translate).

2. Read the transcript live

Segments stream in as the meeting runs. Poll:
Live drafts arrive as completed: false and are replaced by completed: true confirmations. For per-segment push instead of polling, subscribe on the gateway’s /ws:

Google Meet specifics

  • Admission. The bot may be parked in a lobby until a host admits it — admit it like any guest. A run that ended there reports awaiting_admission_timeout or awaiting_admission_rejected; automatic_leave.max_wait_for_admission sets how long it waits.
  • Joining as a real account. With authenticated: true the bot uses a persistent browser profile and joins as your Google account instead of an anonymous guest. If that profile is signed out it refuses to join with auth_session_missing rather than silently degrading — see Authenticated bots.
  • Leaving on its own. An active bot leaves after 10 minutes with no remote microphone audio and finishes as completed(left_alone). Widen it per meeting with automatic_leave.max_time_left_alone.

Stop the bot

See also