# Bot Lifecycle The bot will go through several lifecycle states when created, with different status marking when things went wrong. ### Standard Statuses - `scheduled` - Bot is scheduled to join at a future time - `booting` - Setting up the bot infrastructure and preparing to join - `joining` - Attempting to join the meeting using the provided URL - `recording` - Successfully joined and actively recording the meeting - `processing` - Processing the recording after the meeting ends - `transcribing` - Transcribing the audio using the selected model - `finished` - Complete with transcript available for retrieval ### Failed Statuses - `not_admitted` - Bot was not admitted to the meeting - `bot_detected` - Google Meet, Microsoft Teams or Zoom detected the meeting bot as a virtual bot and blocked it. If this status is thrown then Skribby will automatically retry up to a maximum of 3 times. - `auth_required` - Authentication was required but not provided to join the meeting - `invalid_credentials` - Provided authentication credentials are invalid - `failed` - An error occurred from our side, we've been alerted and will be looking into it. Feel free to reach out for more information. ## Stop Reason When a bot's status is `finished` or `not_admitted`, a `stop_reason` field is included in the bot data that provides additional context about why the bot stopped. ### Stop Reasons for `not_admitted` Status - `invalid_meeting_url` - The provided meeting URL was invalid - `waiting_room_timeout` - The bot waited in the waiting room longer than the configured timeout (see `stop_options.waiting_room_timeout`) - `manually_stopped` - The bot was manually stopped before being admitted - `call_already_finished` - The meeting had already ended when the bot attempted to join - `request_denied` - The request to join the meeting was denied - `host_in_another_meeting` - The host was already in another meeting ### Stop Reasons for `finished` Status - `meeting_ended` - The meeting ended naturally - `last_person_detected` - The bot detected it was the last person in the meeting (see `stop_options.last_person_detection`) - `silence_detection_triggered` - The bot detected extended silence and stopped (see `stop_options.silence_detection`) - `manually_stopped` - The bot was manually stopped - `kicked` - The bot was removed from the meeting