> ## Documentation Index
> Fetch the complete documentation index at: https://tools.lunchpaillabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Start bot

> Start an AI bot that will join an existing video meeting room. The bot will transcribe the conversation and can process insights when the meeting ends.



## OpenAPI

````yaml /pailflow/api-reference/openapi.json post /api/bot/join
openapi: 3.0.1
info:
  title: PailFlow API
  description: API for adding AI bots to video meetings
  version: 0.1.0
servers: []
security:
  - bearerAuth: []
paths:
  /api/bot/join:
    post:
      summary: Start bot
      description: >-
        Start an AI bot that will join an existing video meeting room. The bot
        will transcribe the conversation and can process insights when the
        meeting ends.
      operationId: joinBot
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - room_url
                - bot_config
              properties:
                room_url:
                  type: string
                  description: >-
                    Full video meeting room URL (e.g.,
                    https://your-domain.daily.co/room-name)
                  example: https://your-domain.daily.co/your-room
                token:
                  type: string
                  description: Optional meeting token for private rooms
                  nullable: true
                provider:
                  type: string
                  description: >-
                    Provider (default: 'daily' for future multi-provider
                    support)
                  default: daily
                  example: daily
                bot_config:
                  type: object
                  required:
                    - bot_prompt
                  properties:
                    bot_prompt:
                      type: string
                      description: The prompt that defines the bot's behavior
                      example: You are a helpful AI assistant.
                    name:
                      type: string
                      description: 'Bot name (default: PailBot)'
                      default: PailBot
                      example: MeetingBot
                    video_mode:
                      type: string
                      description: >-
                        Video mode: 'static' or 'animated' (optional, default:
                        'animated')
                      enum:
                        - static
                        - animated
                      default: animated
                      example: animated
                    static_image:
                      type: string
                      description: >-
                        Image filename for static mode (required when
                        video_mode='static', optional otherwise)
                      nullable: true
                      example: robot01.png
                    bot_greeting:
                      type: string
                      description: >-
                        Optional custom greeting message appended to the default
                        introduction. If not provided, only the default
                        introduction is used.
                      nullable: true
                      example: >-
                        Greet them and let them know you're here to conduct an
                        interview.
                    stop_phrase:
                      type: string
                      nullable: true
                      description: >-
                        Triggers a force-leave within ~5 seconds when the
                        assistant says it (assistant-only; case-insensitive).
                        For reliable detection, use phrases without punctuation
                        like 'have a nice day' or 'goodbye friend'. Phrases with
                        apostrophes may not detect consistently.
                    voice:
                      type: string
                      description: >-
                        Voice for the bot's speech output. Supported voices:
                        alloy, ash, ballad, coral, echo, fable, onyx, nova,
                        sage, shimmer, verse
                      default: echo
                      example: echo
                    background_image_url:
                      type: string
                      description: >-
                        URL to a custom background image for static mode. When
                        set, forces static mode regardless of video_mode.
                        Supports PNG and JPG/JPEG formats. Transparent PNGs are
                        automatically converted to RGB with a white background.
                        Recommended: 16:9 aspect ratio (1280x720 pixels).
                        Maximum file size: 5 MB. Must be an absolute HTTPS URL.
                      nullable: true
                      example: https://example.com/background.png
                process_insights:
                  type: boolean
                  description: >-
                    Whether to extract insights after bot finishes (default:
                    true)
                  default: true
                  example: true
                email:
                  type: string
                  description: Email to send results to (optional)
                  nullable: true
                analysis_prompt:
                  type: string
                  description: Custom prompt for AI analysis (optional)
                  nullable: true
                summary_format_prompt:
                  type: string
                  description: Custom prompt for summary formatting (optional)
                  nullable: true
                webhook_callback_url:
                  type: string
                  description: Webhook URL to send results to (optional)
                  nullable: true
            example:
              provider: daily
              room_url: https://your-domain.daily.co/your-room
              bot_config:
                bot_prompt: You are a helpful AI assistant.
                name: MeetingBot
                video_mode: static
                background_image_url: https://example.com/background.png
                bot_greeting: >-
                  Greet them and let them know you're here to conduct an
                  interview.
                stop_phrase: have a nice day
                voice: echo
              process_insights: true
              email: user@example.com
      responses:
        '200':
          description: Bot started successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: started
                  bot_id:
                    type: string
                    format: uuid
                    example: 258b06fc-6bc9-4261-9f29-bc8a4474af0a
                  room_url:
                    type: string
                    example: https://your-domain.daily.co/your-room
              example:
                status: started
                bot_id: 258b06fc-6bc9-4261-9f29-bc8a4474af0a
                room_url: https://your-domain.daily.co/your-room
        '401':
          description: Authentication error or user not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: authentication_error
                detail: API key authentication failed.
                message: Please verify your API key or contact support.
        '402':
          description: Insufficient credits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                error: insufficient_credits
                detail: Your account has insufficient credits to perform this action.
                balance: 0
                message: Please add credits to your account to continue.
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error type
        detail:
          type: string
          description: Error detail message
        message:
          type: string
          description: User-friendly error message
        balance:
          type: number
          description: Current account balance (for insufficient_credits errors)
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Your API key from pailflow.com

````