Skip to main content
A Vexa bot joins a call like any participant and streams back a speaker-attributed transcript. No plugin, no host configuration.

1. Send the bot

The only thing that changes between platforms is the platform value.
curl -X POST "$API_BASE/bots" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{"platform":"google_meet","native_meeting_id":"abc-defg-hij","bot_name":"Vexa"}'
native_meeting_id is the id inside the join URL (e.g. abc-defg-hij for Meet), not the whole URL. Optional: language (ISO code, omit to auto-detect) and task (transcribe default, or translate). On Meet and Teams the bot may wait in the lobby until a host admits it.

2. Read the transcript

Segments stream in as the meeting runs. Poll:
curl -H "X-API-Key: $API_KEY" \
  "$API_BASE/transcripts/google_meet/abc-defg-hij"
{
  "segments": [
    { "speaker": "Jane Liu", "text": "Let's lock the renewal pricing by July 1.",
      "start": 12.4, "end": 15.1, "language": "en", "completed": true, "confidence": 0.93 }
  ]
}
Each segment is diarized (who said what) with word-level timestamps. Live drafts arrive as completed: false and are replaced by completed: true confirmations. For live, per-segment push instead of polling, subscribe over WebSocket — see the Meetings API.

3. Manage and stop

# switch to live Spanish translation mid-call
curl -X PUT "$API_BASE/bots/google_meet/abc-defg-hij/config" \
  -H "X-API-Key: $API_KEY" -H "Content-Type: application/json" \
  -d '{"language":"es","task":"translate"}'

# stop the bot / leave the call
curl -X DELETE "$API_BASE/bots/google_meet/abc-defg-hij" -H "X-API-Key: $API_KEY"
The audio recording lands in your object storage — retrieve it via GET /recordings (Meetings API).

Next

The transcript compiles into your workspace, where agents act on it. Turn that into an automatic write-up: Report after every meeting.
If the bot joins but no text appears, transcription isn’t configured — see Troubleshooting.