# What is the bot lifecycle?

> The bot lifecycle is the ordered set of states a meeting bot passes through from creation to exit, each reported as a webhook event: scheduled,.

Source: https://meetstream.ai/glossary/bot-lifecycle

*By Sidhdharth Sivasubramanian, Co-founder and CEO, MeetStream*

The bot lifecycle is the ordered set of states a meeting bot moves through, from creation to exit.

Each state arrives as a webhook event: scheduled, joining, in the waiting room, in the meeting, recording.

Exactly one terminal state says how the bot left.

After the call, processing reports each artefact as it is ready.

- **bot.joining**: dispatched
- **bot.in_waiting_room**: host admits
- **bot.inmeeting**: exactly once
- **bot.recording**: capture
- **terminal**: one of five
- **post-call**: artefacts, bot.done

*Every state is a webhook; the terminal event tells you how the bot left.*

## The states, in order

Five moves, each one a named webhook event at your endpoint.

- **1**: Step 1
- **Created**: Booked up to three months ahead
- **2**: Step 2
- **Dispatched**: The join can repeat three times
- **3**: Step 3
- **Waiting room**: A host admits it, exactly once
- **4**: Step 4
- **Recording**: Capture starts
- **5**: Step 5
- **Terminal event**: One event says how it left

*Every step reaches your endpoint as a named event.*

The [webhooks guide](https://meetstream.ai/integrations/webhooks) lists each name.

## How a run ends

One terminal event closes every run. Five are possible.

| Terminal event | Meaning | Status code |
|---|---|---|
| bot.stopped | Clean exit: meeting ended, timeout, API stop, host ended | 200 |
| bot.kicked | The host or a participant removed the bot | 200 |
| bot.denied | The host declined the join request | 500 |
| bot.notallowed | Waiting-room timeout | 500 |
| bot.failed | The run ended early; start a new bot | 500 |

On Zoom, two extra events sit between admission and recording.

They carry the host answer to Zoom's recording consent prompt, so your app knows the exact moment capture is cleared to begin.

The [Zoom bot API](https://meetstream.ai/meeting-bot-api/zoom) page covers the rest of Zoom's rules.

## After the terminal event

Four more events land as the artefacts become ready.

- **Audio ready**: The recording is fetchable
- **Transcript ready**: Speaker labels included
- **Video ready**: The MP4 is fetchable
- **Job complete**: The whole run is done

*Each one arrives at most once, and they arrive in any order.*

A later event tells you when media expires or is cleared from storage.

Streaming engines deliver the [live transcript](https://meetstream.ai/glossary/real-time-transcription) during the call.

Those runs finish at the audio event.

While the artefacts are still being prepared, a polled status reads as media processing.

The [webhooks guide](https://meetstream.ai/integrations/webhooks) carries every event name and payload.

## Frequently asked questions

### How many terminal events does a bot send?

Exactly one, always.

### Why does the status read Stopped after a kick?

The polled status reads Stopped for a clean exit and for a kick. The event name tells the two apart.

### Can I track the lifecycle by polling?

Yes. Poll the bot status endpoint, or watch events live from the command line tool.

### What ends a bot automatically?

Timeouts end it.

The waiting room, an empty room, silence, the recording cap, and a room left with only other notetakers all close the bot cleanly.

## Keep exploring

- [Webhooks](https://meetstream.ai/integrations/webhooks): Integration
- [Webhook](https://meetstream.ai/glossary/webhook): Glossary
- [Meeting bot](https://meetstream.ai/glossary/meeting-bot): Glossary
- [Meeting Bot API](https://meetstream.ai/meeting-bot-api): Product
- [Zoom OBF](https://meetstream.ai/glossary/zoom-obf): Glossary
- [Signed-in bot](https://meetstream.ai/glossary/signed-in-bot): Glossary

## Put the vocabulary to work

One API to join, record, stream and transcribe meetings across Zoom, Google Meet and Microsoft Teams.

---

Full site index for agents: https://meetstream.ai/llms.txt
API contract (OpenAPI 3.1): https://meetstream.ai/openapi.json
MCP discovery: https://meetstream.ai/.well-known/mcp
