> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.meetstream.ai/guides/introduction/how-bots-work/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.meetstream.ai/_mcp/server. # How MeetStream Bots Work > The mental model behind every MeetStream API call: how a bot joins a meeting, what it records, and where the audio, video and transcripts come from. One mental model makes the whole API predictable: **a bot is a headless meeting participant with a lifecycle, and everything else hangs off it.** ## The lifecycle ``` create_bot → Joining → InWaitingRoom → InMeeting → Recording ↓ Done ← MediaProcessing ← Stopped / NotAllowed / Denied / Error ``` 1. **You create a bot** with a meeting link and a name. On Google Meet and Teams it joins immediately with zero setup; Zoom needs a [one-time app setup](/guides/platforms/zoom) and gates recording on host permission. 2. **It joins like a person** — enters the lobby, waits to be admitted, appears in the participant list under its `bot_name`. Admission rules are the platform's, not ours: see the [lobby guide](/guides/app-integrations/gmeet-lobby-admission). 3. **It captures** — mixed audio always; video, [per-participant streams](/guides/transcription-recordings/per-participant-audio), [live WebSocket audio](/guides/websockets/real-time-audio-streaming), and [live transcripts](/guides/transcription-recordings/live-transcription) when configured. 4. **It leaves** — when the meeting ends, when a [timeout fires](/guides/features/automatic-leave-configuration), when [bot detection](/guides/features/automatic-leave-configuration) spots another notetaker, or when you call `remove_bot`. 5. **Post-call processing runs** — audio, video, and transcription pipelines fire their own [webhook events](/guides/webhooks/webhooks-and-events) as artifacts become ready, ending with `bot.done`. Every state transition is observable: poll `GET /bots/{id}/status`, subscribe a [workspace webhook](/guides/webhooks/workspace-webhooks), or watch live with `meetstream bot status --watch`. ## Where artifacts live The `bot_id` from `create_bot` is the key to everything: | Artifact | Endpoint | | ------------------------------- | ------------------------------------------------------------------------------------------------- | | Recording (audio/video) | [`get_audio` / `get_video`](/guides/transcription-recordings/retrieve-recordings) | | Per-participant streams | `get_audio_streams` / `get_recording_streams` | | Transcript | `get_transcript` (resolve `transcript_id` via `/detail`) | | Participants & speaker timeline | [`get_participants` / `get_speaker_timeline`](/guides/features/participants-and-speaker-timeline) | | Chat log | [`get_chats`](/guides/features/chat-and-visuals) | | AI meeting summary | `GET /bots/{id}/summary` | ## What makes it production-grade * **[Deduplication & idempotency](/guides/features/deduplication-idempotency-keys)** — retries and races never double-book a meeting or double-charge. * **[Scheduling](/guides/features/scheduling-bots)** — future joins, calendar-driven auto-join, recurring meetings. * **[Timeout controls](/guides/features/automatic-leave-configuration)** — every way a bot could linger has a knob and a sane default. * **[Retention control](/guides/features/usage-and-retention)** and [BYO S3](/guides/features/custom-storage-configurations) — your data, your rules. Start with the [quickstart](/guides/get-started/create-your-first-bot) — first bot in a meeting in under five minutes. > Meeting bot API documentation for Zoom, Google Meet and Microsoft Teams: create bots, stream real-time audio, transcribe, and run in-meeting voice agents.