---
title: "List Bots"
method: GET
path: "/api/v1/bot/"
tags: ["bot"]
---

# List Bots

`GET /api/v1/bot/`

Get a list of all bots

The base rate limit for this endpoint is:
- 60 requests per min per workspace

## Query parameters

- `join_at_after` string, date
- `join_at_before` string, date
- `meeting_url` string
- `metadata__<key>` string
- `page` integer
- `platform` string[]
- `status` string[]
- `use_cursor` string

## Response `200`

- PaginatedBotGetList
  - `count` integer
  - `next` string, uri, nullable
  - `previous` string, uri, nullable
  - `results` BotGet[]
    - `id` string, uuid, required
    - `meeting_url` union, required
      - WebexMeetingInvite
        - `platform` 'webex', required — * `webex` - webex
        - `meeting_subdomain` string, required
        - `meeting_personal_room_id` string — Required for personal room meetings.
        - `meeting_mtid` string — Required for scheduled/spaces meetings.
        - `meeting_path` string — Required for scheduled/spaces meetings.
      - GmeetMeetingInviteMeetingLink
        - `platform` 'google_meet', required — * `google_meet` - google_meet
        - `meeting_id` string, required
      - GotoMeetingInviteMeetingLink
        - `platform` 'goto_meeting', required — * `goto_meeting` - goto_meeting
        - `meeting_id` string, required
      - TeamsLiveMeetingInviteMeetingLink
        - `platform` 'microsoft_teams_live', required — * `microsoft_teams_live` - microsoft_teams_live
        - `meeting_id` string, required
        - `meeting_password` string, nullable
      - TeamsMeetingInviteMeetingLink
        - `platform` 'microsoft_teams', required — * `microsoft_teams` - microsoft_teams
        - `meeting_id` string, nullable
        - `meeting_password` string, nullable
        - `organizer_id` string, nullable
        - `tenant_id` string, nullable
        - `message_id` string, nullable
        - `thread_id` string, nullable
        - `business_meeting_id` string, nullable
        - `business_meeting_password` string, nullable
      - ZoomMeetingInviteMeetingLink
        - `platform` 'zoom', required — * `zoom` - zoom
        - `meeting_id` string, required
        - `meeting_password` string, nullable
        - `tk` string, nullable
        - `zak` string, nullable
    - `bot_name` string — The name of the bot that will be displayed in the call. *(Note: Authenticated Google Meet bots will use the Google account name and this field will be ignored.)*
    - `join_at` string, date-time, required — The time at which the bot is scheduled to join the call, formatted in ISO 8601. For ad-hoc bots, this is the time at which the bot was requested to join.
    - `recording_config` BotRecordingConfig
      - `transcript` BotRecordingConfigTranscriptArtifact
        - `metadata` object
        - `provider` BotRecordingConfigTranscriptProvider, required
          - `recallai_streaming` RecallaiStreamingTranscription
            - `language_code` 'auto' | 'bg' | 'ca' | 'cs' | 'da' | 'de' | 'el' | 'en' | 'en_au' | 'en_uk' | 'en_us' | 'es' | 'et' | 'fi' | 'fr' | 'he' | 'hi' | 'hr' | 'hu' | 'id' | 'it' | 'ja' | 'ko' | 'lt' | 'lv' | 'ms' | 'nl' | 'no' | 'pl' | 'pt' | 'ro' | 'ru' | 'sk' | 'sv' | 'th' | 'tr' | 'uk' | 'vi' | 'zh' — * `auto` - auto * `bg` - bg * `ca` - ca * `cs` - cs * `da` - da * `de` - de * `el` - el * `en` - en * `en_au` - en_au * `en_uk` - en_uk * `en_us` - en_us * `es` - es * `et` - et * `fi` - fi * `fr` - fr * `he` - he * `hi` - hi * `hr` - hr * `hu` - hu * `id` - id * `it` - it * `ja` - ja * `ko` - ko * `lt` - lt * `lv` - lv * `ms` - ms * `nl` - nl * `no` - no * `pl` - pl * `pt` - pt * `ro` - ro * `ru` - ru * `sk` - sk * `sv` - sv * `th` - th * `tr` - tr * `uk` - uk * `vi` - vi * `zh` - zh
            - `spelling` RecallaiSpellingEntry[] — List of text strings to find/replace in the transcript.
              - …
            - `key_terms` string[] — Increases the chances that these terms appear in the transcript over some sound-alikes.
            - `filter_profanity` boolean
            - `mode` 'prioritize_low_latency' | 'prioritize_accuracy' — * `prioritize_low_latency` - prioritize_low_latency * `prioritize_accuracy` - prioritize_accuracy
          - `assembly_ai_async_chunked` object — Docs: https://www.assemblyai.com/docs/api-reference/transcripts/submit
            - `audio_end_at` integer — The point in time, in milliseconds, to stop transcribing in your media file. See [Set the start and end of the transcript](https://www.assemblyai.com/docs/pre-recorded-audio/set-the-start-and-end-of-the-transcript) for more details.
            - `audio_start_from` integer — The point in time, in milliseconds, to begin transcribing in your media file. See [Set the start and end of the transcript](https://www.assemblyai.com/docs/pre-recorded-audio/set-the-start-and-end-of-the-transcript) for more details.
            - `auto_chapters` boolean — Enable [Auto Chapters](https://www.assemblyai.com/docs/speech-understanding/auto-chapters), can be true or false
            - `auto_highlights` boolean — Enable [Key Phrases](https://www.assemblyai.com/docs/speech-understanding/key-phrases), either true or false
            - `content_safety` boolean — Enable [Content Moderation](https://www.assemblyai.com/docs/content-moderation), can be true or false
            - `content_safety_confidence` integer — The confidence threshold for the [Content Moderation](https://www.assemblyai.com/docs/content-moderation) model. Values must be between 25 and 100.
            - `custom_spelling` object[] — Customize how words are spelled and formatted using to and from values. See [Custom Spelling](https://www.assemblyai.com/docs/pre-recorded-audio/custom-spelling) for more details.
              - …
            - `disfluencies` boolean — Transcribe [Filler Words](https://www.assemblyai.com/docs/pre-recorded-audio/filler-words), like "umm", in your media file; can be true or false
            - `entity_detection` boolean — Enable [Entity Detection](https://www.assemblyai.com/docs/speech-understanding/entity-detection), can be true or false
            - `filter_profanity` boolean — Filter profanity from the transcribed text, can be true or false. See [Profanity Filtering](https://www.assemblyai.com/docs/profanity-filtering) for more details.
            - `format_text` boolean — Enable [Text Formatting](https://www.assemblyai.com/docs/pre-recorded-audio), can be true or false
            - `iab_categories` boolean — Enable [Topic Detection](https://www.assemblyai.com/docs/speech-understanding/topic-detection), can be true or false
            - `keyterms_prompt` string[] — Improve accuracy with up to 200 (for Universal-2) or 1000 (for Universal-3-Pro) domain-specific words or phrases (maximum 6 words per phrase). See [Keyterms Prompting](https://www.assemblyai.com/docs/pre-recorded-audio/keyterms-prompting) for more details.
            - `language_code` union — The language of your audio file. Possible values are found in [Supported Languages](https://www.assemblyai.com/docs/pre-recorded-audio/supported-languages). The default value is 'en_us'.
              - …
            - `language_codes` string[], nullable — The language codes of your audio file. Used for [Code switching](https://www.assemblyai.com/docs/speech-to-text/pre-recorded-audio/code-switching) One of the values specified must be `en`.
            - `language_confidence_threshold` number, float — The confidence threshold for the automatically detected language. An error will be returned if the language confidence is below this threshold. Defaults to 0. See [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection) for more details.
            - `language_detection` boolean — Enable [Automatic language detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection), either true or false.
            - `language_detection_options` object — Specify options for [Automatic Language Detection](https://www.assemblyai.com/docs/pre-recorded-audio/language-detection).
              - …
            - `multichannel` boolean — Enable [Multichannel](https://www.assemblyai.com/docs/pre-recorded-audio/multichannel) transcription, can be true or false.
            - `prompt` string — Provide natural language prompting of up to 1,500 words of contextual information to the model. See the [Prompting Guide](https://www.assemblyai.com/docs/pre-recorded-audio/prompting) for best practices. Note: This parameter is only supported for the Universal-3-Pro model.
            - `punctuate` boolean — Enable [Automatic Punctuation](https://www.assemblyai.com/docs/pre-recorded-audio), can be true or false
            - `redact_pii` boolean — Redact PII from the transcribed text using the Redact PII model, can be true or false. See [PII Redaction](https://www.assemblyai.com/docs/pii-redaction) for more details.
            - `redact_pii_audio` boolean — Generate a copy of the original media file with spoken PII "beeped" out, can be true or false. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction#request-for-redacted-audio) for more details.
            - `redact_pii_audio_options` object — Specify options for [PII redacted audio](https://www.assemblyai.com/docs/pii-redaction#request-for-redacted-audio) files.
              - …
            - `redact_pii_audio_quality` 'mp3' | 'wav' — Controls the filetype of the audio created by redact_pii_audio. Currently supports mp3 (default) and wav. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction#request-for-redacted-audio) for more details.
            - `redact_pii_policies` string[] — The list of PII Redaction policies to enable. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction) for more details.
            - `redact_pii_sub` union — The replacement logic for detected PII, can be `entity_type` or `hash`. See [PII redaction](https://www.assemblyai.com/docs/pii-redaction) for more details.
              - …
            - `sentiment_analysis` boolean — Enable [Sentiment Analysis](https://www.assemblyai.com/docs/speech-understanding/sentiment-analysis), can be true or false
            - `speaker_labels` boolean — Enable [Speaker diarization](https://www.assemblyai.com/docs/pre-recorded-audio/speaker-diarization), can be true or false
            - `speaker_options` object — Specify options for [Speaker diarization](https://www.assemblyai.com/docs/pre-recorded-audio/speaker-diarization#set-a-range-of-possible-speakers). Use this to set a range of possible speakers.
              - …
            - `speakers_expected` integer, nullable — Tells the speaker label model how many speakers it should attempt to identify. See [Set number of speakers expected](https://www.assemblyai.com/docs/pre-recorded-audio/speaker-diarization#set-number-of-speakers-expected) for more details.
            - `speech_models` string[] — List multiple speech models in priority order, allowing our system to automatically route your audio to the best available option. See [Model Selection](https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model) for available models and routing behavior.
            - `speech_threshold` number, float, nullable — Reject audio files that contain less than this fraction of speech. Valid values are in the range [0, 1] inclusive. See [Speech Threshold](https://www.assemblyai.com/docs/speech-threshold) for more details.
            - `speech_understanding` object — Enable speech understanding tasks like [Translation](https://www.assemblyai.com/docs/speech-understanding/translation), [Speaker Identification](https://www.assemblyai.com/docs/speech-understanding/speaker-identification), and [Custom Formatting](https://www.assemblyai.com/docs/speech-understanding/custom-formatting). See the task-specific docs for available options and configuration.
              - …
            - `summarization` boolean — Enable [Summarization](https://www.assemblyai.com/docs/speech-understanding/summarization), can be true or false
            - `summary_model` 'informative' | 'conversational' | 'catchy' — The model to summarize the transcript
            - `summary_type` 'bullets' | 'bullets_verbose' | 'gist' | 'headline' | 'paragraph' — The type of summary
            - `temperature` number — Control the amount of randomness injected into the model's response. See the [Prompting Guide](https://www.assemblyai.com/docs/pre-recorded-audio/prompting) for more details. Note: This parameter can only be used with the Universal-3-Pro model.
            - `custom_topics` boolean — This parameter does not currently have any functionality attached to it.
            - `speech_model` union — This parameter has been replaced with the `speech_models` parameter, learn more about the `speech_models` parameter [here](https://www.assemblyai.com/docs/pre-recorded-audio/select-the-speech-model).
              - …
            - `topics` string[] — This parameter does not currently have any functionality attached to it.
          - `assembly_ai_v3_streaming` object — Docs: https://www.assemblyai.com/docs/api-reference/streaming-api/streaming-api
            - `speech_model` 'universal-streaming-english' | 'universal-streaming-multilingual' | 'whisper-rt' | 'u3-rt-pro' | 'universal-3-5-pro' — The speech model used for your Streaming session.
            - `format_turns` boolean — Whether to return formatted final transcripts.
            - `inactivity_timeout` integer — Optional time in seconds of inactivity before session is terminated. If not set, no inactivity timeout is applied.
            - `keyterms_prompt` string[] — A list of words and phrases to improve recognition accuracy for. See [Keyterms Prompting](https://www.assemblyai.com/docs/streaming/keyterms-prompting) for more details.
            - `language_detection` string — Whether to detect the language and return language metadata on utterances and final turns. Only available for the multilingual model.
            - `max_turn_silence` integer — The maximum amount of silence in milliseconds allowed in a turn before end of turn is triggered. See [Turn Detection](https://www.assemblyai.com/docs/streaming/universal-streaming/turn-detection) for configuration details.
            - `min_turn_silence` integer — The minimum amount of silence in milliseconds required to detect end of turn when confident. See [Turn Detection](https://www.assemblyai.com/docs/streaming/universal-streaming/turn-detection) for configuration details.
            - `vad_threshold` number — The confidence threshold (0.0 to 1.0) for classifying audio frames as silence. Frames with VAD confidence below this value are considered silent. Increase for noisy environments to reduce false speech detection.
            - `end_of_turn_confidence_threshold` number — The confidence threshold (0.0 to 1.0) to use when determining if the end of a turn has been reached. See [Turn Detection](https://www.assemblyai.com/docs/streaming/universal-streaming/turn-detection) for configuration details.
            - `language` 'en' | 'multi' — The language of your audio stream.
          - `deepgram_streaming` object — Docs: https://developers.deepgram.com/reference/streaming
            - `diarize` string — Defaults to `false`. Recognize speaker changes. Each word in the transcript will be assigned a speaker number starting at 0
            - `dictation` string — Identify and extract key entities from content in submitted audio
            - `endpointing` string — Indicates how long Deepgram will wait to detect whether a speaker has finished speaking or pauses for a significant period of time. When set to a value, the streaming endpoint immediately finalizes the transcription for the processed time range and returns the transcript with a speech_final parameter set to true. Can also be set to false to disable endpointing
            - `extra` unknown
            - `filler_words` string — Filler Words can help transcribe interruptions in your audio, like "uh" and "um"
            - `interim_results` string — Specifies whether the streaming endpoint should provide ongoing transcription updates as more audio is received. When set to true, the endpoint sends continuous updates, meaning transcription results may evolve over time
            - `keyterm` unknown
            - `keywords` unknown
            - `language` 'bg' | 'ca' | 'cs' | 'da' | 'da-DK' | 'de' | 'de-CH' | 'el' | 'en' | 'en-AU' | 'en-GB' | 'en-IN' | 'en-NZ' | 'en-US' | 'es' | 'es-419' | 'es-LATAM' | 'et' | 'fi' | 'fr' | 'fr-CA' | 'hi' | 'hi-Latn' | 'hu' | 'id' | 'it' | 'ja' | 'ko' | 'ko-KR' | 'lt' | 'lv' | 'ms' | 'multi' | 'nl' | 'nl-BE' | 'no' | 'pl' | 'pt' | 'pt-BR' | 'pt-PT' | 'ro' | 'ru' | 'sk' | 'sv' | 'sv-SE' | 'taq' | 'th' | 'th-TH' | 'tr' | 'uk' | 'vi' | 'zh' | 'zh-CN' | 'zh-HK' | 'zh-Hans' | 'zh-Hant' | 'zh-TW' — The [BCP-47 language tag](https://tools.ietf.org/html/bcp47) that hints at the primary spoken language. Depending on the Model you choose only certain languages are available
            - `mip_opt_out` string — Opts out requests from the Deepgram Model Improvement Program. Refer to our Docs for pricing impacts before setting this to true. https://dpgr.am/deepgram-mip
            - `model` 'nova-3' | 'nova-3-general' | 'nova-3-medical' | 'nova-2' | 'nova-2-general' | 'nova-2-meeting' | 'nova-2-finance' | 'nova-2-conversationalai' | 'nova-2-voicemail' | 'nova-2-video' | 'nova-2-medical' | 'nova-2-drivethru' | 'nova-2-automotive' | 'nova' | 'nova-general' | 'nova-phonecall' | 'nova-medical' | 'enhanced' | 'enhanced-general' | 'enhanced-meeting' | 'enhanced-phonecall' | 'enhanced-finance' | 'base' | 'meeting' | 'phonecall' | 'finance' | 'conversationalai' | 'voicemail' | 'video' | 'custom' — AI model to use for the transcription
            - `multichannel` string — Transcribe each audio channel independently
            - `numerals` string — Convert numbers from written format to numerical format
            - `profanity_filter` string — Profanity Filter looks for recognized profanity and converts it to the nearest recognized non-profane word or removes it from the transcript completely
            - `punctuate` string — Add punctuation and capitalization to the transcript
            - `redact` union — Redaction removes sensitive information from your transcripts
              - …
            - `replace` unknown
            - `search` unknown
            - `smart_format` string — Apply formatting to transcript output. When set to true, additional formatting will be applied to transcripts to improve readability
            - `tag` unknown
            - `utterance_end_ms` unknown
            - `vad_events` string — Indicates that speech has started. You'll begin receiving Speech Started messages upon speech starting
            - `version` string — Version of an AI model to use
          - `gladia_v2_streaming` object — Docs: https://docs.gladia.io/reference/live-audio
            - `custom_metadata` object — Custom metadata you can attach to this live transcription
            - `model` 'solaria-1' — The model used to process the audio. "solaria-1" is used by default.
            - `endpointing` number — The endpointing duration in seconds. Endpointing is the duration of silence which will cause an utterance to be considered as finished
            - `maximum_duration_without_endpointing` number — The maximum duration in seconds without endpointing. If endpointing is not detected after this duration, current utterance will be considered as finished
            - `language_config` object — Specify the language configuration
              - …
            - `pre_processing` object — Specify the pre-processing configuration
              - …
            - `realtime_processing` object — Specify the realtime processing configuration
              - …
            - `post_processing` object — Specify the post-processing configuration
              - …
            - `messages_config` object — Specify the websocket messages configuration
              - …
            - `callback` boolean — If true, messages will be sent to configured url.
            - `callback_config` object — Specify the callback configuration
              - …
          - `rev_streaming` object — Docs: https://docs.rev.ai/api/streaming/requests/
            - `obscure_expletives` boolean
            - `delete_after` string, date-span
            - `audio_options._content_type` string
            - `audio_options._layout` string
            - `audio_options._rate` integer
            - `audio_options._format` string
            - `audio_options._channels` integer
            - `transcriber` 0 | 1
            - `language` string
            - `metadata` string
            - `filter_profanity` boolean
            - `remove_disfluencies` boolean
            - `detailed_partials` boolean
            - `custom_vocabulary_id` string
            - `delete_after_seconds` integer
            - `max_segment_duration_seconds` integer
            - `max_connection_wait_seconds` integer
            - `allow_interruption` boolean
            - `enable_speaker_switch` boolean
            - `start_ts` string, date-span
            - `skip_postprocessing` boolean
            - `priority` 0 | 1
            - `user_agent` string
          - `aws_transcribe_streaming` union — You must specify either: - `language_code`(e.g `en-US`) OR - Set `language_identification` to `true` AND specify `language_options`(e.g `en-US,fr-FR,es-US,de-DE,it-IT`). Docs: https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartStreamTranscription.html
            - object
              - …
            - object
              - …
          - `speechmatics_streaming` object — You must specify `language` (e.g `en`) Docs: https://docs.speechmatics.com/rt-api-ref#transcription-config
            - `language` string, required
            - `domain` string — Request a specialized model based on 'language' but optimized for a particular field, e.g. "finance" or "medical".
            - `output_locale` string
            - `additional_vocab` object[]
              - …
            - `diarization` 'none' | 'speaker'
            - `max_delay` number
            - `max_delay_mode` 'flexible' | 'fixed'
            - `speaker_diarization_config` object
              - …
            - `audio_filtering_config` object
              - …
            - `transcript_filtering_config` object
              - …
            - `enable_partials` boolean
            - `enable_entities` boolean
            - `operating_point` 'standard' | 'enhanced'
            - `punctuation_overrides` object
              - …
            - `conversation_config` object — This mode will detect when a speaker has stopped talking. The end_of_utterance_silence_trigger is the time in seconds after which the server will assume that the speaker has finished speaking, and will emit an EndOfUtterance message. A value of 0 disables the feature.
              - …
          - `elevenlabs_streaming` object — Docs: https://elevenlabs.io/docs/api-reference/speech-to-text
            - `model_id` string — The model to use for transcription.
            - `language_code` string — ISO 639-1 two-letter language code. When not specified, the model auto-detects the language.
            - `previous_text` string — Text from a previous transcription session to provide context for the model. Sent in the first message to the WebSocket.
          - `meeting_captions` MeetingCaptions
            - `language_code` 'cs' | 'de' | 'en' | 'es' | 'fil' | 'fr' | 'he' | 'hi' | 'it' | 'ja' | 'ko' | 'nl' | 'pl' | 'pt' | 'pt-BR' | 'ro' | 'ru' | 'sv' | 'th' | 'tr' | 'uk' | 'vi' | 'zh' — * `cs` - Czech * `de` - German * `en` - English * `es` - Spanish * `fil` - Filipino * `fr` - French * `he` - Hebrew * `hi` - Hindi * `it` - Italian * `ja` - Japanese * `ko` - Korean * `nl` - Dutch * `pl` - Polish * `pt` - Portuguese * `pt-BR` - Portuguese (Brazil) * `ro` - Romanian * `ru` - Russian * `sv` - Swedish * `th` - Thai * `tr` - Turkish * `uk` - Ukrainian * `vi` - Vietnamese * `zh` - Chinese
        - `diarization` BotRecordingConfigTranscriptDiarization
          - `use_separate_streams_when_available` boolean — Use separate audio streams(a.k.a perfect diarization) when available. This feature has limted support. **[Read more in this guide](https://docs.recall.ai/docs/perfect-diarization)**
      - `realtime_endpoints` BotRecordingConfigRealtimeEndpoint[] — Add endpoints here to receive data (e.g transcript, participant events) from the recording in realtime during the meeting. Default: `[]`
        - union
          - BotRecordingConfigRealtimeEndpointBotRecordingConfigRealtimeEndpointRtmp
            - `metadata` object
            - `type` 'rtmp' | 'websocket' | 'webhook' | 'desktop_sdk_callback', required — * `rtmp` - Rtmp * `websocket` - Websocket * `webhook` - Webhook * `desktop_sdk_callback` - Desktop Sdk Callback
            - `url` string, uri, required — The URL of the realtime endpoint.
            - `events` string[], required — The events to send to the realtime endpoint.
          - BotRecordingConfigRealtimeEndpointBotRecordingConfigRealtimeEndpointWebsocket
            - `metadata` object
            - `type` 'rtmp' | 'websocket' | 'webhook' | 'desktop_sdk_callback', required — * `rtmp` - Rtmp * `websocket` - Websocket * `webhook` - Webhook * `desktop_sdk_callback` - Desktop Sdk Callback
            - `url` string, uri, required — The URL of the realtime endpoint.
            - `events` string[], required — The events to send to the realtime endpoint.
          - BotRecordingConfigRealtimeEndpointBotRecordingConfigRealtimeEndpointWebhook
            - `metadata` object
            - `type` 'rtmp' | 'websocket' | 'webhook' | 'desktop_sdk_callback', required — * `rtmp` - Rtmp * `websocket` - Websocket * `webhook` - Webhook * `desktop_sdk_callback` - Desktop Sdk Callback
            - `url` string, uri, required — The URL of the realtime endpoint.
            - `events` string[], required — The events to send to the realtime endpoint.
          - BotRecordingConfigRealtimeEndpointBotRecordingConfigRealtimeEndpointDesktopSdkCallback
            - `metadata` object
            - `type` 'rtmp' | 'websocket' | 'webhook' | 'desktop_sdk_callback', required — * `rtmp` - Rtmp * `websocket` - Websocket * `webhook` - Webhook * `desktop_sdk_callback` - Desktop Sdk Callback
            - `events` string[], required — The events to send to the realtime endpoint.
      - `retention` BotRecordingConfigRetention
        - `type` 'timed' | 'forever', required — * `timed` - Timed * `forever` - Forever
        - `hours` integer — The number of hours to retain the recording.
      - `video_mixed_layout` 'speaker_view' | 'gallery_view' | 'gallery_view_v2' | 'audio_only' — * `speaker_view` - speaker_view * `gallery_view` - gallery_view * `gallery_view_v2` - gallery_view_v2 * `audio_only` - audio_only
      - `video_mixed_mp4` BotRecordingConfigBaseArtifact
        - `metadata` object
      - `participant_events` BotRecordingConfigBaseArtifact
        - `metadata` object
      - `meeting_metadata` BotRecordingConfigBaseArtifact
        - `metadata` object
      - `video_mixed_participant_video_when_screenshare` 'hide' | 'beside' | 'overlap' — * `hide` - hide * `beside` - beside * `overlap` - overlap
      - `start_recording_on` 'call_join' | 'participant_join' | 'participant_speak' — * `call_join` - call_join * `participant_join` - participant_join * `participant_speak` - participant_speak
      - `include_bot_in_recording` BotIncludeInRecording
        - `audio` boolean — Whether to record audio from the bot.
      - `metadata` object
      - `audio_mixed_raw` BotRecordingConfigBaseArtifact
        - `metadata` object
      - `audio_mixed_mp3` BotRecordingConfigBaseArtifact
        - `metadata` object
      - `video_separate_mp4` BotRecordingConfigBaseArtifact
        - `metadata` object
      - `audio_separate_raw` BotRecordingConfigBaseArtifact
        - `metadata` object
      - `audio_separate_mp3` BotRecordingConfigBaseArtifact
        - `metadata` object
      - `video_mixed_flv` BotRecordingConfigBaseArtifact
        - `metadata` object
      - `video_separate_png` BotRecordingConfigBaseArtifact
        - `metadata` object
      - `video_separate_h264` BotRecordingConfigBaseArtifact
        - `metadata` object
    - `status_changes` BotEvent[], required
      - `code` string, required
      - `message` string, required
      - `created_at` string, date-time, required
      - `sub_code` string, required
    - `recordings` BotRecordingEmbed[], required
      - `id` string, uuid, required
      - `created_at` string, date-time, required
      - `started_at` string, date-time, nullable
      - `completed_at` string, date-time, nullable
      - `expires_at` string, date-time, nullable
      - `status` RecordingStatus, required
        - `code` 'processing' | 'paused' | 'done' | 'failed' | 'deleted', required — * `processing` - Processing * `paused` - Paused * `done` - Done * `failed` - Failed * `deleted` - Deleted
        - `sub_code` string, nullable, required
        - `updated_at` string, date-time, required
      - `media_shortcuts` RecordingShortcuts, required
        - `video_mixed` VideoMixedArtifactShortcut, required
          - `id` string, uuid, required
          - `created_at` string, date-time, required
          - `status` ArtifactStatus, required
            - `code` 'processing' | 'done' | 'failed' | 'deleted', required — * `processing` - Processing * `done` - Done * `failed` - Failed * `deleted` - Deleted
            - `sub_code` string, nullable, required
            - `updated_at` string, date-time, required
          - `metadata` object, required
          - `data` VideoMixedArtifactData, required
            - `download_url` string, uri, nullable, required
          - `format` 'mp4', required — * `mp4` - Mp4
        - `transcript` TranscriptArtifactShortcut, required
          - `id` string, uuid, required
          - `created_at` string, date-time, required
          - `status` ArtifactStatus, required
            - `code` 'processing' | 'done' | 'failed' | 'deleted', required — * `processing` - Processing * `done` - Done * `failed` - Failed * `deleted` - Deleted
            - `sub_code` string, nullable, required
            - `updated_at` string, date-time, required
          - `metadata` object, required
          - `data` TranscriptArtifactData, required
            - `download_url` string, uri, nullable, required — Download transcript for the recording. **[See response format here](https://docs.recall.ai/docs/download-schemas#json-transcript-download-url)**
            - `provider_data_download_url` string, uri, nullable, required — Download raw transcription data received from the provider for the recording. **[See response format here](https://docs.recall.ai/docs/download-schemas#json-transcript-provider-data-download-url)**
          - `diarization` TranscriptArtifactDiarization, required
            - `use_separate_streams_when_available` boolean, required
          - `provider` TranscriptArtifactProvider, required
            - `assembly_ai_async` object, nullable, required — The parameters for creating a transcript
              - …
            - `deepgram_async` object, nullable, required
              - …
            - `gladia_v2_async` object, nullable, required
              - …
            - `rev_async` object, nullable, required
              - …
            - `speechmatics_async` object, nullable, required — JSON object that contains various groups of job configuration parameters. Based on the value of `type`, a type-specific object such as `transcription_config` is required to be present to specify all configuration settings or parameters needed to process the job inputs as expected. If the results of the job are to be forwarded on completion, `notification_config` can be provided with a list of callbacks to be made; no assumptions should be made about the order in which they will occur. Customer specific job details or metadata can be supplied in `tracking`, and this information will be available where possible in the job results and in callbacks.
              - …
            - `recallai_async` object, nullable, required — Docs: https://docs.recall.ai/docs/recallai-transcription
              - …
            - `google_speech_v2_async` object, nullable, required — Docs: https://docs.cloud.google.com/speech-to-text/docs/reference/rest/v2/projects.locations.recognizers/batchRecognize
              - …
            - `aws_transcribe_async` object, nullable, required — Docs: https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartTranscriptionJob.html
            - `elevenlabs_async` object, nullable, required — Docs: https://elevenlabs.io/docs/api-reference/speech-to-text
              - …
            - `assembly_ai_async_chunked` object — Docs: https://www.assemblyai.com/docs/api-reference/transcripts/submit
              - …
            - `assembly_ai_v3_streaming` object — Docs: https://www.assemblyai.com/docs/api-reference/streaming-api/streaming-api
              - …
            - `recallai_streaming` RecallaiStreamingTranscription
              - …
            - `deepgram_streaming` object — Docs: https://developers.deepgram.com/reference/streaming
              - …
            - `gladia_v2_streaming` object — Docs: https://docs.gladia.io/api-reference/v2/live/init
              - …
            - `rev_streaming` object — Docs: https://docs.rev.ai/api/streaming/requests/
              - …
            - `aws_transcribe_streaming` union — You must specify either: - `language_code`(e.g `en-US`) OR - Set `language_identification` to `true` AND specify `language_options`(e.g `en-US,fr-FR,es-US,de-DE,it-IT`). Docs: https://docs.aws.amazon.com/transcribe/latest/APIReference/API_streaming_StartStreamTranscription.html
              - …
            - `speechmatics_streaming` object — You must specify `language` (e.g `en`) Docs: https://docs.speechmatics.com/rt-api-ref#transcription-config
              - …
            - `elevenlabs_streaming` object — Docs: https://elevenlabs.io/docs/api-reference/speech-to-text
              - …
            - `meeting_captions` object
              - …
            - `zoom_rtms` object
        - `participant_events` ParticipantEventsArtifactShortcut, required
          - `id` string, uuid, required
          - `created_at` string, date-time, required
          - `status` ArtifactStatus, required
            - `code` 'processing' | 'done' | 'failed' | 'deleted', required — * `processing` - Processing * `done` - Done * `failed` - Failed * `deleted` - Deleted
            - `sub_code` string, nullable, required
            - `updated_at` string, date-time, required
          - `metadata` object, required
          - `data` ParticipantEventsArtifactData, required
            - `participant_events_download_url` string, uri, nullable, required — Download all participant events for the recording. **[See response format here](https://docs.recall.ai/docs/download-schemas#json-participant-event-download-url)**
            - `speaker_timeline_download_url` string, uri, nullable, required — Download speaker timeline for the recording. **[See response format here](https://docs.recall.ai/docs/download-schemas#json-speaker-timeline-download-url)**
            - `participants_download_url` string, uri, nullable, required — Download all participants for the recording. **[See response format here](https://docs.recall.ai/docs/download-schemas#json-participant-download-url)**
        - `meeting_metadata` MeetingMetadataArtifactShortcut, required
          - `id` string, uuid, required
          - `created_at` string, date-time, required
          - `status` ArtifactStatus, required
            - `code` 'processing' | 'done' | 'failed' | 'deleted', required — * `processing` - Processing * `done` - Done * `failed` - Failed * `deleted` - Deleted
            - `sub_code` string, nullable, required
            - `updated_at` string, date-time, required
          - `metadata` object, required
          - `data` MeetingMetadataArtifactData, required
            - `title` string, nullable, required
            - `zoom` MeetingMetadataArtifactDataZoom, required
              - …
        - `audio_mixed` AudioMixedArtifactShortcut, required
          - `id` string, uuid, required
          - `created_at` string, date-time, required
          - `status` ArtifactStatus, required
            - `code` 'processing' | 'done' | 'failed' | 'deleted', required — * `processing` - Processing * `done` - Done * `failed` - Failed * `deleted` - Deleted
            - `sub_code` string, nullable, required
            - `updated_at` string, date-time, required
          - `metadata` object, required
          - `data` AudioMixedArtifactData, required
            - `download_url` string, uri, nullable, required
          - `format` 'mp3' | 'raw', required — * `mp3` - Mp3 * `raw` - Raw
      - `metadata` object
    - `output_media` OutputMedia
      - `camera` OutputMediaConfig
        - `kind` 'webpage', required — * `webpage` - webpage
        - `config` OutputMediaWebpageConfig, required
          - `url` string, uri, required — URL for the webpage
      - `screenshare` OutputMediaConfig
        - `kind` 'webpage', required — * `webpage` - webpage
        - `config` OutputMediaWebpageConfig, required
          - `url` string, uri, required — URL for the webpage
    - `automatic_video_output` AutomaticVideoOutput
      - `in_call_recording` VideoOutput
        - `kind` 'jpeg', required — * `jpeg` - jpeg
      - `in_call_not_recording` VideoOutput
        - `kind` 'jpeg', required — * `jpeg` - jpeg
    - `automatic_audio_output` AutomaticAudioOutput
      - `in_call_recording` AudioOutput, required
        - `data` AudioOutputData, required
          - `kind` 'mp3', required — * `mp3` - mp3
        - `replay_on_participant_join` AudioOutputReplay
          - `debounce_mode` 'leading' | 'trailing' — * `leading` - leading * `trailing` - trailing
          - `debounce_interval` integer, required — The amount of time to wait for additional participants to join before replaying the audio.
          - `disable_after` integer — The number of seconds after which the audio will no longer replay when new participants join. This parameter is useful to prevent the bot from interrupting a meeting, if a late participant joins.
    - `chat` Chat
      - `on_bot_join` ChatOnBotJoin
        - `send_to` 'host' | 'everyone' | 'everyone_except_host', required — * `host` - host * `everyone` - everyone * `everyone_except_host` - everyone_except_host
        - `message` string, required
        - `pin` boolean — Pin message after sending. Only Google Meet and Microsoft Teams are supported at this time
      - `on_participant_join` ChatOnParticipantJoin
        - `message` string, required
        - `exclude_host` boolean, required
    - `automatic_leave` AutomaticLeave
      - `waiting_room_timeout` integer — The number of seconds after which the bot will automatically leave the call, if it has not been let in from the waiting room. If you join Zoom using an OBF token, this timeout also caps how long the bot will wait for the associated user to join the meeting; if the user never joins before the timeout, the join fails with zoom_obf_user_not_in_meeting. Note that this has a max value of 600 seconds for Google Meet and 1800 for Microsoft Teams.
      - `noone_joined_timeout` integer — The number of seconds after which the bot will automatically leave the call, if it has joined the meeting but no other participant has joined.
      - `everyone_left_timeout` AutomaticLeaveEveryoneLeft
        - `timeout` integer — The number of seconds after which the bot will automatically leave the call, if there were other participants in the call who have all left.
        - `activate_after` integer, nullable — The number of seconds after which the bot will start detecting everyone left once it has started recording the call.
      - `in_call_not_recording_timeout` integer — The number of seconds after which the bot will automatically leave the call, if it has joined the call and is not recording.This includes all periods when the bot is not recording, even if the bot has recorded previously.
      - `in_call_recording_timeout` integer — The number of seconds after which the bot will automatically leave the call, if it has joined the call and started recording it. This can be used to enforce a maximum recording time limit for a bot. There is no default value for this parameter, meaning a bot will continue to record for as long as the meeting lasts.
      - `recording_permission_denied_timeout` integer — The number of seconds after which the bot will automatically leave the call, if it has joined the call but has not started recording. For e.g This can occur due to bot being denied permission to record(Zoom meetings).
      - `silence_detection` AutomaticLeaveSilenceDetection
        - `timeout` integer — The number of seconds of continuous silence after which the bot will automatically leave the call.
        - `activate_after` integer — The number of seconds after which the bot will start detecting silence once it has started recording the call. This parameter can be helpful if the meeting tends to start late, so the bot does not preemptively leave.
      - `bot_detection` AutomaticLeaveBotDetection
        - `using_participant_events` AutomaticLeaveBotDetectionUsingParticipantEvents
          - `timeout` integer — The number of seconds after which the bot will automatically leave the call if all other participants(in call) are detected as bots using this heuristic. A participant is considered a bot if they have no audio or screenshare activity for the duration of the call.
          - `activate_after` integer — The number of seconds(post recording start) after which the bot will start detecting other participants as bots using this heuristic. This parameter can be helpful if the meeting tends to start late, so the bot does not preemptively leave.
        - `using_participant_names` AutomaticLeaveBotDetectionUsingParticipantNames
          - `timeout` integer, required — The number of seconds after which the bot will automatically leave the call if all other participants(in call) are detected as bots using this heuristic. A participant is considered a bot if their name contains any of the strings specified in the `matches` parameter(case insensitive match).
          - `activate_after` integer, required — The number of seconds(post recording start) after which the bot will start detecting other participants as bots using this heuristic. This parameter can be helpful if the meeting tends to start late, so the bot does not preemptively leave.
          - `matches` string[], required — A list of strings that the bot will use to detect other bots. If a participant's name contains any of these strings(case insensitive match), they will be considered a bot. If all remaining participants in the call are detected as bots(except the bot itself), the bot will automatically leave the call.For e.g ['notetaker', 'recorder', 'assistant']
    - `variant` BotVariant
      - `zoom` 'web' | 'web_4_core' | 'web_gpu'
      - `google_meet` 'web' | 'web_4_core' | 'web_gpu' — * `web` - web * `web_4_core` - web_4_core * `web_gpu` - web_gpu
      - `microsoft_teams` 'web' | 'web_4_core' | 'web_gpu' — * `web` - web * `web_4_core` - web_4_core * `web_gpu` - web_gpu
      - `webex` 'web' | 'web_4_core' | 'web_gpu' — * `web` - web * `web_4_core` - web_4_core * `web_gpu` - web_gpu
    - `calendar_meetings` BotCalendarMeeting[], required — The calendar meetings associated with this bot. This field is **populated only for bots that are dispatched via Calendar V1 API integration**.
      - `id` string, uuid, required
      - `start_time` string, date-time, required
      - `end_time` string, date-time, required
      - `calendar_user` BotCalendarUser, required
        - `id` string, uuid, required
        - `external_id` string, required
    - `zoom` Zoom
      - `join_token_url` string, uri — A URL which Recall will make a GET request to, in order to retrieve the Zoom Join Token for Local Recording, which the Zoom bot uses to automatically record. This token can be generated through the Zoom API. Docs: https://marketplace.zoom.us/docs/api-reference/zoom-api/methods/#operation/meetingLocalRecordingJoinToken
      - `zak_url` string, uri — A URL which Recall will make GET request to, in order to retrieve the ZAK. The V1 Zoom bot uses this to join meetings that require authentication to join.This token can be generated through the Zoom API. Docs: https://marketplace.zoom.us/docs/api-reference/zoom-api/methods/#operation/userZak
      - `obf_token_url` string, uri — A URL which Recall will make a GET request to, in order to retrieve the OBF (On Behalf Of) token. The bot uses this to join on behalf of another Zoom user. This token can be generated through the Zoom API. Docs: https://developers.zoom.us/docs/api/rest/reference/user/methods/#operation/userToken
      - `user_email` string, email — This is only required for registration-required webinars. This should be the email address registered for the webinar.
    - `google_meet` GoogleMeet
      - `google_login_group_id` string, uuid, nullable — The ID of the google login group to use for this meeting.
    - `slack_team` SlackTeamIntegrationMinimal
      - `id` string, uuid, required
      - `metadata` object, required
    - `webex` Webex
      - `login_group_name` string — The name of the Webex login group to use for this meeting.
    - `breakout_room` BreakoutRoomSchema
      - `mode` 'join_main_room' | 'join_specific_room' | 'auto_accept_all_invites', required — * `join_main_room` - join_main_room * `join_specific_room` - join_specific_room * `auto_accept_all_invites` - auto_accept_all_invites
      - `room_id` string, uuid — Required when mode='join_specific_room'.
    - `metadata` object

## Other responses

- `400` — No response body
- `404` — No response body

---

[API](https://skmtc.net/recall/apis/recall-ai-api.md) · [All operations](https://skmtc.net/recall/apis/recall-ai-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/recall/recall-ai-api/versions/e1a54c5db790/schema)
