CreateBotRequest

Mixin class providing meeting URL validation for serializers.

  • bot_name
    Type: string
    min length:  
    1
    required

    The name of the bot to create, e.g. 'My Bot'

  • meeting_url
    Type: string
    min length:  
    1
    required

    The URL of the meeting to join, e.g. https://zoom.us/j/123?pwd=456

  • automatic_leave_settings
    Type: object
    • authorized_user_not_in_meeting_timeout_seconds
      Type: integer

      Number of seconds to wait before leaving if the authorized user is not in the meeting. Only relevant if this is a Zoom bot using the on behalf of token.

    • bot_keywords
      Type: array string[] | null

      List of keywords to identify bot participants. A participant is considered a bot if any word in their name matches a keyword. Words are found by splitting on spaces, hyphens, and underscores, and the comparison is case-insensitive. Bot participants are excluded when determining if the bot is the only participant in the meeting.

    • enable_closed_captions_timeout_seconds
      Type: integer

      Number of seconds to wait before leaving if bot could not enable closed captions (infinity by default). Only relevant if the bot is transcribing via closed captions. Currently only supports leaving immediately.

    • max_uptime_seconds
      Type: integer

      Maximum number of seconds that the bot should be running before automatically leaving (infinity)

    • only_participant_in_meeting_timeout_seconds
      Type: integer

      Number of seconds to wait before leaving if bot becomes the only participant in the meeting because everyone else left.

    • silence_activate_after_seconds
      Type: integer

      Number of seconds to wait before activating the silence timeout

    • silence_timeout_seconds
      Type: integer

      Number of seconds of continuous silence after which the bot should leave

    • wait_for_host_to_start_meeting_timeout_seconds
      Type: integer

      Number of seconds to wait for the host to start the meeting

    • waiting_room_timeout_seconds
      Type: integer

      Number of seconds to wait before leaving if the bot is in the waiting room

  • bot_chat_message
    Type: object · BotChatMessageRequestRequest

    The chat message the bot sends after it joins the meeting

    • message
      Type: string
      min length:  
      1
      required

      The message text to send. Does not support emojis currently. For Microsoft Teams, you can use basic HTML tags to format the message including

      ,
      , , , and .

    • to
      Type: string · ToEnumenum
      • everyone - everyone
      • specific_user - specific_user
      • everyone_but_host - everyone_but_host
      values
      • everyone
      • specific_user
      • everyone_but_host
    • to_user_uuid
      Type: string | null
      max length:  
      255

      The UUID of the user to send the message to. Required if 'to' is 'specific_user'.

  • bot_image
    Type: object · BotImageRequest

    The image for the bot

    • data
      Type: string
      min length:  
      1
      required

      Base64 encoded image data. Simple example of a red pixel encoded in PNG format: iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg==

    • type
      enum
      const:  
      image/png
      required
      • image/png - image/png
      values
      • image/png
  • calendar_event_id
    Type: string
    min length:  
    1

    The ID of the calendar event the bot should join.

  • callback_settings
    Type: object

    Callback urls for the bot to call when it needs to fetch certain data.

    • zoom_tokens_url
      Type: string

      URL of an endpoint on your server that returns Zoom authentication tokens the bot will use when it joins the meeting. Our server will make a POST request to this URL with information about the bot and expects a JSON response with the format: {"zak_token": "<zak_token>", "join_token": "<join_token>", "app_privilege_token": "<app_privilege_token>", "onbehalf_token": "<onbehalf_token>"}. Not every token needs to be provided, i.e. you can reply with {"zak_token": "<zak_token>"}.

  • debug_settings
    Type: object

    The debug settings for the bot, e.g. {'create_debug_recording': True}.

    • create_debug_recording
      Type: boolean

      Whether to generate a recording of the attempt to join the meeting. Used for debugging.

  • deduplication_key
    Type: string
    min length:  
    1

    Optional key for deduplicating bots. If a bot with this key already exists in a non-terminal state, the new bot will not be created and an error will be returned.

  • external_media_storage_settings
    Type: object

    Settings that allow Attendee to upload the recording to an external storage bucket controlled by you. This relieves you from needing to download the recording from Attendee and then upload it to your own storage. To use this feature you must add credentials to your project that provide access to the external storage.

    • bucket_name
      Type: string
      required

      The name of the external storage bucket to use for media files.

    • recording_file_name
      Type: string

      Optional custom name for the recording file

  • google_meet_settings
    Type: object

    The Google Meet-specific settings for the bot.

    • login_mode
      Type: stringenum

      The mode to use for the Google Meet bot login. 'always' means the bot will always login, 'only_if_required' means the bot will only login if the meeting requires authentication.

      values
      • always
      • only_if_required
    • use_login
      Type: boolean

      Whether to use Google Meet bot login credentials to sign in before joining the meeting. Requires Google Meet bot login credentials to be set for the project.

  • join_at
    Type: stringFormat: date-time

    The time the bot should join the meeting. ISO 8601 format, e.g. 2025-06-13T12:00:00Z

  • metadata
    Type: object

    JSON object containing metadata to associate with the bot

  • recording_settings
    Type: object

    The settings for the bot's recording.

    • format
      Type: string

      The format of the recording to save. The supported formats are 'mp4', 'mp3' and 'none'. Defaults to 'mp4'.

    • record_chat_messages_when_paused
      Type: boolean

      Whether to record chat messages even when the recording is paused. Defaults to false.

    • reserve_additional_storage
      Type: boolean

      Whether to reserve extra space to store the recording. Only needed when the bot will record video for longer than 6 hours. Defaults to false.

    • resolution
      Type: stringenum

      The resolution to use for the recording. The supported resolutions are '1080p' and '720p'. Defaults to '1080p'.

      values
      • 1080p
      • 720p
    • view
      Type: string

      The view to use for the recording. The supported views are 'speaker_view', 'gallery_view' and 'speaker_view_no_sidebar'.

  • rtmp_settings
    Type: object

    RTMP server to stream to, e.g. {'destination_url': 'rtmp://global-live.mux.com:5222/app', 'stream_key': 'xxxx'}.

    • destination_url
      Type: string
      required

      The URL of the RTMP server to send the stream to

    • stream_key
      Type: string
      required

      The stream key to use for the RTMP server

  • teams_settings
    Type: object

    The Microsoft Teams-specific settings for the bot.

    • login_mode
      Type: stringenum

      The mode to use for the Teams bot login. 'always' means the bot will always login, 'only_if_required' means the bot will only login if the meeting requires authentication.

      values
      • always
      • only_if_required
    • use_login
      Type: boolean

      Whether to use Teams bot login credentials to sign in before joining the meeting. Requires Teams bot login credentials to be set for the project.

  • transcription_settings
    Type: object

    The transcription settings for the bot, e.g. {'deepgram': {'language': 'en'}}

    • assembly_ai
      Type: object
    • custom_async
      Type: object

      Custom self-hosted transcription service with async processing. Additional properties will be sent as form data in the request. Only supported if self-hosting Attendee.

    • deepgram
      Type: object
    • elevenlabs
      Type: object
    • gladia
      Type: object
    • kyutai
      Type: object
    • meeting_closed_captions
      Type: object
    • openai
      Type: object
    • sarvam
      Type: object
  • voice_agent_settings
    Type: object

    Settings for the voice agent that the bot should load.

    • reserve_resources
      Type: boolean

      If you want to start a voice agent or stream a webpage mid-meeting, but not at the start of the meeting, set this to true. This will reserve resources for the voice agent. You cannot start a voice agent mid-meeting if this is not set to true.

    • screenshare_url
      Type: string

      Behaves the same as url, but the video will be displayed through screenshare instead of the bot's webcam. Currently, you cannot provide both url and screenshare_url.

    • url
      Type: string

      URL of a website containing a voice agent that gets the user's responses from the microphone. The bot will load this website and stream its video and audio to the meeting. The audio from the meeting will be sent to website via the microphone. See https://docs.attendee.dev/guides/voiceagents for further details. The video will be displayed through the bot's webcam. To display the video through screenshare, use the screenshare_url parameter instead.

  • webhooks
    Type: array object[]

    List of webhook subscriptions to create for this bot. Each item should have 'url' and 'triggers' fields.

    • triggers
      Type: array string[] unique!enum
      required

      List of webhook trigger types

      values
      • bot.state_change
      • transcript.update
      • chat_messages.update
      • participant_events.join_leave
      • calendar.events_update
      • calendar.state_change
    • url
      Type: string
      required

      The webhook URL (must be HTTPS)

  • websocket_settings
    Type: object

    The websocket settings for the bot, e.g. {'audio': {'url': 'wss://example.com/audio', 'sample_rate': 16000}}

    • audio
      Type: object
    • per_participant_audio
      Type: object
  • zoom_settings
    Type: object

    The Zoom-specific settings for the bot.

    • meeting_settings
      Type: object

      Settings for various aspects of the Zoom Meeting. To use these settings, the bot must have host privileges.

    • sdk
      Type: stringenum

      The Zoom SDK to use for the bot. Use 'web' when you need closed caption based transcription.

      values
      • web
      • native