1. Send the bot
native_meeting_ids:
- the numeric meeting ID (10–15 digits) Teams prints next to a passcode — pass the passcode
in
passcode, never glued onto the id; - the thread id out of a classic
…/l/meetup-join/19:meeting_…@thread.v2link, which carries its own credential and takes no separate passcode.
meeting_url instead settles both the host and the passcode on its own.
$API_BASE is https://api.cloud.vexa.ai hosted, or http://localhost:18056 self-hosted.
2. Read the transcript live
Segments stream in as the meeting runs. Poll:completed: false and are replaced by completed: true confirmations. For
per-segment push instead of polling, subscribe on the gateway’s /ws:
Microsoft Teams specifics
- Admission. The bot may wait in the lobby until a host admits it — admit it like any guest. A
run that ended there reports
awaiting_admission_timeoutorawaiting_admission_rejected;automatic_leave.max_wait_for_admissionsets how long it waits. - Non-default clouds. On
teams.live.comfor personal meetings, orgov./dod.teams.microsoft.usfor GCC-High and DoD, addteams_base_host— otherwise the bot builds its URL on the world-wide host and joins a different Teams. Hosts outside the Teams web clients are rejected with422. - Passcodes. Only
passcodeis read.password,meeting_passwordand similar aliases are rejected with a422naming the right field. The passcode is kept off the storedconstructed_meeting_urland out of the logs. - Language auto-detection. Teams rides the mixed-audio lane, where a low-confidence detection
discards the window rather than guessing; those windows carry
language: null. Pinlanguageon the spawn to avoid it.
Stop the bot
See also
- Send a bot and get a transcript — the full walkthrough, all platforms
- Meetings API — every parameter, status, and response shape
- Troubleshooting — the bot joined but there is no transcript