> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.meetstream.ai/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

> How MeetStream meeting bots work: what a bot is, the join-record-process lifecycle, where artifacts come from, and how the pieces of the API fit together.

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 <id> --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.