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

# Update a number's AI configuration

> Changes any setting on the number's Answer page. Send only what you want to change: inside a section, fields you leave out keep their current value. Lists (`transfers.rules`, `qualification.questions`, `sms_referrals`, `forwarding.sequential_targets`, `ivr.menus`) are replaced as a whole, so fetch the config, edit the list, and send it back. Changes apply from the next call or text on both T1 (Twilio + VAPI) and T2 (Telnyx + LiveKit) numbers, exactly as a save in the dashboard does. Returns the full updated configuration.



## OpenAPI

````yaml /openapi.json patch /v1/phone-numbers/{id}/config
openapi: 3.1.0
info:
  title: LumisReach v1 API
  version: 1.0.0
  description: >-
    Programmatic access to the LumisReach voice platform — calls, numbers,
    caller trust, and brands.
  contact:
    name: LumisReach
    email: founders@lumisreach.com
servers:
  - url: https://api.lumisreach.com/api
security:
  - bearerAuth: []
tags:
  - name: Phone Numbers
  - name: Caller IDs
  - name: Enterprise Registration
  - name: Branded Calling
  - name: Calls
  - name: SMS
  - name: WebRTC
  - name: Reputation
  - name: Usage
  - name: Account
  - name: Conversation History
  - name: Documents
  - name: Quick Agent Actions
  - name: Sub-entities
paths:
  /v1/phone-numbers/{id}/config:
    patch:
      tags:
        - Phone Numbers
      summary: Update a number's AI configuration
      description: >-
        Changes any setting on the number's Answer page. Send only what you want
        to change: inside a section, fields you leave out keep their current
        value. Lists (`transfers.rules`, `qualification.questions`,
        `sms_referrals`, `forwarding.sequential_targets`, `ivr.menus`) are
        replaced as a whole, so fetch the config, edit the list, and send it
        back. Changes apply from the next call or text on both T1 (Twilio +
        VAPI) and T2 (Telnyx + LiveKit) numbers, exactly as a save in the
        dashboard does. Returns the full updated configuration.
      operationId: v1_phone_numbers_id_config_patch
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            UUID — when present, deduplicates repeat submissions. See
            /api-reference/idempotency.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $schema: http://json-schema.org/draft-07/schema#
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                  maxLength: 100
                is_active:
                  description: false stops the number from answering calls
                  type: boolean
                business_name:
                  type: string
                  maxLength: 200
                business_description:
                  type: string
                  maxLength: 2000
                timezone:
                  description: IANA zone; drives booking hours and office hours
                call_settings:
                  type: object
                  properties:
                    max_call_duration_seconds:
                      anyOf:
                        - type: integer
                          minimum: 30
                          maximum: 1800
                        - type: 'null'
                      description: >-
                        Hang up inbound calls after this long. null = no limit
                        (3-hour system cap).
                    recording_enabled:
                      type: boolean
                    transcription_enabled:
                      type: boolean
                    summary_enabled:
                      type: boolean
                    recording_retention_days:
                      anyOf:
                        - type: number
                          const: 90
                        - type: number
                          const: 365
                        - type: number
                          const: -1
                      description: 90, 365, or -1 for unlimited
                    hd_voice_enabled:
                      type: boolean
                      description: Wideband audio. T2 (Telnyx) numbers only.
                  additionalProperties: false
                voice:
                  type: object
                  properties:
                    voice_id:
                      type: string
                      minLength: 1
                    voice_model_tier:
                      type: string
                      enum:
                        - standard
                        - mini
                    llm_model:
                      type: string
                      enum:
                        - gpt-5.4-mini
                        - gpt-5-mini
                        - gemini-3.5-flash-lite
                        - gemini-3.8-flash
                    language:
                      type: string
                      minLength: 2
                      maxLength: 10
                      description: ISO 639-1 code, or 'multi' to match the caller
                    speed:
                      type: number
                      minimum: 0.6
                      maximum: 1.5
                      description: Speaking speed. T1 only.
                    greeting_message:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: First thing the agent says on an inbound call
                    farewell_message:
                      anyOf:
                        - type: string
                        - type: 'null'
                    prompt:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: >-
                        Custom instructions for the call agent (the system
                        prompt you write)
                    background_sound:
                      type: string
                      enum:
                        - 'off'
                        - office
                    outbound_greeting_message:
                      anyOf:
                        - type: string
                        - type: 'null'
                    outbound_prompt:
                      anyOf:
                        - type: string
                        - type: 'null'
                  additionalProperties: false
                sms:
                  type: object
                  properties:
                    auto_reply_enabled:
                      type: boolean
                      description: Whether the AI answers texts to this number
                    reply_delay_seconds:
                      type: integer
                      minimum: 0
                      maximum: 300
                    skip_conditions:
                      type: array
                      items:
                        type: string
                      description: Situations where the AI skips replying to a message
                    prompt:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: Custom instructions for the SMS agent
                    language:
                      type: string
                      minLength: 2
                      maxLength: 10
                    llm_model:
                      type: string
                      enum:
                        - gpt-5.4-mini
                        - gpt-5-mini
                        - gemini-3.5-flash-lite
                        - gemini-3.8-flash
                    stop_on_stop_word:
                      type: boolean
                    stop_words:
                      maxItems: 50
                      type: array
                      items:
                        type: string
                        minLength: 1
                        maxLength: 64
                    stop_after_replies:
                      type: boolean
                      description: >-
                        Stop auto-replying to a contact after
                        max_replies_per_contact
                    max_replies_per_contact:
                      type: integer
                      minimum: 1
                      maximum: 100
                      description: Default 50
                  additionalProperties: false
                knowledge:
                  type: object
                  properties:
                    knowledge_enabled:
                      type: boolean
                    web_search_enabled:
                      type: boolean
                    knowledge_base_ids:
                      type: array
                      items:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      description: Knowledge documents the agent can reference
                    faq_ids:
                      type: array
                      items:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                  additionalProperties: false
                qualification:
                  type: object
                  properties:
                    enabled:
                      type: boolean
                    contact_info_collection:
                      type: array
                      items:
                        type: string
                        enum:
                          - name
                          - business_name
                          - phone
                          - email
                          - address
                          - date_of_birth
                    questions:
                      maxItems: 50
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            description: >-
                              Omit to create a new question; existing questions
                              not listed are removed
                            type: string
                          question_text:
                            type: string
                            minLength: 1
                          type:
                            default: OPEN_ENDED
                            type: string
                            enum:
                              - OPEN_ENDED
                              - YES_NO
                              - MULTIPLE_CHOICE
                              - SCALE
                          required:
                            default: false
                            type: boolean
                          is_qualifying:
                            default: true
                            type: boolean
                          options:
                            description: MULTIPLE_CHOICE options
                            type: array
                            items:
                              type: string
                          qualifying_answers:
                            type: array
                            items:
                              type: string
                          scale_min:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          scale_max:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          qualifying_min_score:
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                        required:
                          - question_text
                          - type
                          - required
                          - is_qualifying
                        additionalProperties: false
                  additionalProperties: false
                booking:
                  type: object
                  properties:
                    enabled:
                      type: boolean
                    event_type_ids:
                      type: array
                      items:
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      description: Event types the agent can book
                    confirmation_message:
                      anyOf:
                        - type: string
                        - type: 'null'
                    minimum_notice_minutes:
                      anyOf:
                        - type: integer
                          minimum: 0
                          maximum: 9007199254740991
                        - type: 'null'
                    available_hours:
                      anyOf:
                        - minItems: 1
                          type: array
                          items:
                            type: object
                            properties:
                              start:
                                type: string
                                pattern: ^\d{2}:\d{2}$
                              end:
                                type: string
                                pattern: ^\d{2}:\d{2}$
                            required:
                              - start
                              - end
                            additionalProperties: false
                        - type: 'null'
                      description: >-
                        Bookable windows per day, in the number's timezone. Two
                        windows = a lunch break.
                    available_days:
                      anyOf:
                        - minItems: 1
                          type: array
                          items:
                            type: integer
                            minimum: 0
                            maximum: 6
                        - type: 'null'
                      description: 0 = Sunday … 6 = Saturday
                  additionalProperties: false
                transfers:
                  type: object
                  properties:
                    primary_transfer_number:
                      anyOf:
                        - type: string
                          maxLength: 20
                        - type: 'null'
                    rules:
                      maxItems: 50
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          condition:
                            type: string
                            enum:
                              - human_requested
                              - after_hours
                              - qualification_failed
                              - qualification_passed
                              - urgent_request
                              - custom
                          custom_condition:
                            anyOf:
                              - type: string
                              - type: 'null'
                          action:
                            type: string
                            enum:
                              - transfer
                              - voicemail
                              - schedule_callback
                              - hang_up
                              - notify_and_end
                              - round_robin
                              - webhook
                          target_number:
                            anyOf:
                              - type: string
                              - type: 'null'
                          round_robin_numbers:
                            type: array
                            items:
                              type: string
                          webhook_url:
                            type: string
                            format: uri
                          webhook_lead_source:
                            type: string
                          notify_message:
                            type: string
                          priority:
                            default: 0
                            type: integer
                            minimum: -9007199254740991
                            maximum: 9007199254740991
                          enabled:
                            default: true
                            type: boolean
                        required:
                          - condition
                          - action
                          - priority
                          - enabled
                        additionalProperties: false
                    office_hours_only:
                      type: boolean
                      description: Only transfer live calls inside the office-hours window
                    office_hours_start:
                      type: string
                      pattern: ^\d{2}:\d{2}$
                    office_hours_end:
                      type: string
                      pattern: ^\d{2}:\d{2}$
                    office_hours_timezone:
                      anyOf:
                        - {}
                        - type: 'null'
                    outside_office_hours_message:
                      anyOf:
                        - type: string
                          maxLength: 500
                        - type: 'null'
                  additionalProperties: false
                sms_referrals:
                  maxItems: 50
                  type: array
                  items:
                    type: object
                    properties:
                      id:
                        type: string
                      condition:
                        type: string
                        enum:
                          - human_requested
                          - after_hours
                          - qualification_failed
                          - qualification_passed
                          - urgent_request
                          - custom
                      custom_condition:
                        anyOf:
                          - type: string
                          - type: 'null'
                      target_number:
                        description: The number the texter is told to text instead
                        anyOf:
                          - type: string
                          - type: 'null'
                      priority:
                        default: 0
                        type: integer
                        minimum: -9007199254740991
                        maximum: 9007199254740991
                      enabled:
                        default: true
                        type: boolean
                    required:
                      - condition
                      - priority
                      - enabled
                    additionalProperties: false
                forwarding:
                  type: object
                  properties:
                    phone_config_mode:
                      type: string
                      enum:
                        - lumisreach_number
                        - existing_number
                    phone_service_type:
                      anyOf:
                        - type: string
                          enum:
                            - cellphone
                            - voip
                            - landline
                        - type: 'null'
                    call_handling_mode:
                      type: string
                      enum:
                        - ai_handles_all
                        - call_me_first
                      description: >-
                        call_me_first rings your phone(s) first and lets the AI
                        take over if nobody answers
                    forwarding_mode:
                      anyOf:
                        - type: string
                          enum:
                            - single_target
                            - sequential_chain
                        - type: 'null'
                    forwarding_number:
                      anyOf:
                        - type: string
                          maxLength: 20
                        - type: 'null'
                    ring_duration_seconds:
                      anyOf:
                        - type: integer
                          minimum: 5
                          maximum: 60
                        - type: 'null'
                    sequential_targets:
                      maxItems: 5
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                          phone_number:
                            type: string
                          label:
                            type: string
                            maxLength: 50
                          timeout_seconds:
                            type: integer
                            minimum: 5
                            maximum: 60
                          active:
                            default: true
                            type: boolean
                        required:
                          - phone_number
                          - timeout_seconds
                          - active
                        additionalProperties: false
                    chain_transition_message:
                      anyOf:
                        - type: string
                          maxLength: 200
                        - type: 'null'
                    record_human_calls:
                      type: boolean
                    office_hours_enabled:
                      type: boolean
                    office_hours_start:
                      anyOf:
                        - type: string
                          pattern: ^\d{2}:\d{2}$
                        - type: 'null'
                    office_hours_end:
                      anyOf:
                        - type: string
                          pattern: ^\d{2}:\d{2}$
                        - type: 'null'
                    carrier_forwarding_type:
                      anyOf:
                        - type: string
                          enum:
                            - forward_all
                            - forward_missed
                            - forward_busy
                            - forward_no_answer
                        - type: 'null'
                    selected_carrier:
                      anyOf:
                        - type: string
                          maxLength: 20
                        - type: 'null'
                    setup_completed:
                      type: boolean
                  additionalProperties: false
                ivr:
                  type: object
                  properties:
                    enabled:
                      type: boolean
                      description: >-
                        When on, the keypad menu answers calls INSTEAD of the AI
                        agent
                    greeting:
                      anyOf:
                        - type: string
                          maxLength: 500
                        - type: 'null'
                    menus:
                      minItems: 1
                      maxItems: 10
                      type: array
                      items:
                        type: object
                        properties:
                          id:
                            type: string
                            minLength: 1
                            description: >-
                              Referenced by submenu actions. menus[0] is the
                              main menu.
                          name:
                            type: string
                            minLength: 1
                            maxLength: 100
                          prompt:
                            description: Blank = generated from the option labels
                            anyOf:
                              - type: string
                                maxLength: 1000
                              - type: 'null'
                          options:
                            maxItems: 12
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                key:
                                  type: string
                                  enum:
                                    - '0'
                                    - '1'
                                    - '2'
                                    - '3'
                                    - '4'
                                    - '5'
                                    - '6'
                                    - '7'
                                    - '8'
                                    - '9'
                                    - '*'
                                    - '#'
                                label:
                                  type: string
                                  maxLength: 100
                                action:
                                  oneOf:
                                    - type: object
                                      properties:
                                        type:
                                          type: string
                                          const: transfer
                                        phone_number:
                                          type: string
                                          pattern: ^\+[1-9]\d{6,14}$
                                        fallback_phone_number:
                                          anyOf:
                                            - type: string
                                              pattern: ^\+[1-9]\d{6,14}$
                                            - type: 'null'
                                      required:
                                        - type
                                        - phone_number
                                      additionalProperties: false
                                    - type: object
                                      properties:
                                        type:
                                          type: string
                                          const: submenu
                                        menu_id:
                                          type: string
                                          minLength: 1
                                      required:
                                        - type
                                        - menu_id
                                      additionalProperties: false
                                    - type: object
                                      properties:
                                        type:
                                          type: string
                                          const: repeat
                                      required:
                                        - type
                                      additionalProperties: false
                                    - type: object
                                      properties:
                                        type:
                                          type: string
                                          const: previous
                                      required:
                                        - type
                                      additionalProperties: false
                                    - type: object
                                      properties:
                                        type:
                                          type: string
                                          const: hangup
                                        message:
                                          anyOf:
                                            - type: string
                                              maxLength: 500
                                            - type: 'null'
                                      required:
                                        - type
                                      additionalProperties: false
                              required:
                                - key
                                - label
                                - action
                              additionalProperties: false
                        required:
                          - id
                          - name
                          - options
                        additionalProperties: false
                    invalid_input_message:
                      anyOf:
                        - type: string
                          maxLength: 500
                        - type: 'null'
                    no_input_message:
                      anyOf:
                        - type: string
                          maxLength: 500
                        - type: 'null'
                    transfer_message:
                      anyOf:
                        - type: string
                          maxLength: 500
                        - type: 'null'
                    transfer_caller_id:
                      type: string
                      enum:
                        - business
                        - caller
                    voice_id:
                      anyOf:
                        - type: string
                          maxLength: 100
                        - type: 'null'
                    speed:
                      anyOf:
                        - type: number
                          minimum: 0.8
                          maximum: 1.2
                        - type: 'null'
                    timeout_seconds:
                      type: integer
                      minimum: 3
                      maximum: 15
                    max_attempts:
                      type: integer
                      minimum: 1
                      maximum: 5
                    fallback:
                      oneOf:
                        - type: object
                          properties:
                            type:
                              type: string
                              const: transfer
                            phone_number:
                              type: string
                              pattern: ^\+[1-9]\d{6,14}$
                          required:
                            - type
                            - phone_number
                          additionalProperties: false
                        - type: object
                          properties:
                            type:
                              type: string
                              const: hangup
                            message:
                              anyOf:
                                - type: string
                                  maxLength: 500
                                - type: 'null'
                          required:
                            - type
                          additionalProperties: false
                  additionalProperties: false
              additionalProperties: false
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $schema: http://json-schema.org/draft-07/schema#
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: number
                      phone_number:
                        type: string
                      provider:
                        type: string
                      stack:
                        type: string
                        enum:
                          - t1
                          - t2
                        description: t1 = Twilio + VAPI, t2 = Telnyx + LiveKit
                      agent_id:
                        anyOf:
                          - type: string
                          - type: 'null'
                      name:
                        anyOf:
                          - type: string
                          - type: 'null'
                      is_active:
                        type: boolean
                      business_name:
                        anyOf:
                          - type: string
                          - type: 'null'
                      business_description:
                        anyOf:
                          - type: string
                          - type: 'null'
                      timezone:
                        anyOf:
                          - type: string
                          - type: 'null'
                      call_settings:
                        type: object
                        properties:
                          max_call_duration_seconds:
                            anyOf:
                              - type: integer
                                minimum: 30
                                maximum: 1800
                              - type: 'null'
                            description: >-
                              Hang up inbound calls after this long. null = no
                              limit (3-hour system cap).
                          recording_enabled:
                            type: boolean
                          transcription_enabled:
                            type: boolean
                          summary_enabled:
                            type: boolean
                          recording_retention_days:
                            anyOf:
                              - type: number
                                const: 90
                              - type: number
                                const: 365
                              - type: number
                                const: -1
                            description: 90, 365, or -1 for unlimited
                          hd_voice_enabled:
                            type: boolean
                            description: Wideband audio. T2 (Telnyx) numbers only.
                        required:
                          - max_call_duration_seconds
                          - recording_enabled
                          - transcription_enabled
                          - summary_enabled
                          - recording_retention_days
                          - hd_voice_enabled
                        additionalProperties: false
                      voice:
                        type: object
                        properties:
                          voice_id:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              A voice_id from GET /v1/phone-numbers/{id}/voices.
                              null = the stack default.
                          voice_model_tier:
                            anyOf:
                              - type: string
                                enum:
                                  - standard
                                  - mini
                              - type: 'null'
                            description: T2 only
                          llm_model:
                            anyOf:
                              - type: string
                                enum:
                                  - gpt-5.4-mini
                                  - gpt-5-mini
                                  - gemini-3.5-flash-lite
                                  - gemini-3.8-flash
                              - type: 'null'
                            description: >-
                              LLM for text-to-speech voices. null = stack
                              default.
                          language:
                            type: string
                            minLength: 2
                            maxLength: 10
                            description: ISO 639-1 code, or 'multi' to match the caller
                          speed:
                            type: number
                            minimum: 0.6
                            maximum: 1.5
                            description: Speaking speed. T1 only.
                          greeting_message:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: First thing the agent says on an inbound call
                          farewell_message:
                            anyOf:
                              - type: string
                              - type: 'null'
                          prompt:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: >-
                              Custom instructions for the call agent (the system
                              prompt you write)
                          background_sound:
                            type: string
                            enum:
                              - 'off'
                              - office
                          outbound_greeting_message:
                            anyOf:
                              - type: string
                              - type: 'null'
                          outbound_prompt:
                            anyOf:
                              - type: string
                              - type: 'null'
                          inherits_workspace_default:
                            type: boolean
                        required:
                          - voice_id
                          - voice_model_tier
                          - llm_model
                          - language
                          - speed
                          - greeting_message
                          - farewell_message
                          - prompt
                          - background_sound
                          - outbound_greeting_message
                          - outbound_prompt
                          - inherits_workspace_default
                        additionalProperties: false
                      sms:
                        type: object
                        properties:
                          auto_reply_enabled:
                            type: boolean
                            description: Whether the AI answers texts to this number
                          reply_delay_seconds:
                            type: integer
                            minimum: 0
                            maximum: 300
                          skip_conditions:
                            type: array
                            items:
                              type: string
                            description: >-
                              Situations where the AI skips replying to a
                              message
                          prompt:
                            anyOf:
                              - type: string
                              - type: 'null'
                            description: Custom instructions for the SMS agent
                          language:
                            type: string
                            minLength: 2
                            maxLength: 10
                          llm_model:
                            anyOf:
                              - type: string
                                enum:
                                  - gpt-5.4-mini
                                  - gpt-5-mini
                                  - gemini-3.5-flash-lite
                                  - gemini-3.8-flash
                              - type: 'null'
                          stop_on_stop_word:
                            type: boolean
                          stop_words:
                            maxItems: 50
                            type: array
                            items:
                              type: string
                              minLength: 1
                              maxLength: 64
                          stop_after_replies:
                            type: boolean
                            description: >-
                              Stop auto-replying to a contact after
                              max_replies_per_contact
                          max_replies_per_contact:
                            type: integer
                            minimum: 1
                            maximum: 100
                            description: Default 50
                          inherits_workspace_default:
                            type: boolean
                        required:
                          - auto_reply_enabled
                          - reply_delay_seconds
                          - skip_conditions
                          - prompt
                          - language
                          - llm_model
                          - stop_on_stop_word
                          - stop_words
                          - stop_after_replies
                          - max_replies_per_contact
                          - inherits_workspace_default
                        additionalProperties: false
                      knowledge:
                        type: object
                        properties:
                          knowledge_enabled:
                            type: boolean
                          web_search_enabled:
                            type: boolean
                          knowledge_base_ids:
                            type: array
                            items:
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                            description: Knowledge documents the agent can reference
                          faq_ids:
                            type: array
                            items:
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                        required:
                          - knowledge_enabled
                          - web_search_enabled
                          - knowledge_base_ids
                          - faq_ids
                        additionalProperties: false
                      qualification:
                        type: object
                        properties:
                          enabled:
                            type: boolean
                          contact_info_collection:
                            type: array
                            items:
                              type: string
                              enum:
                                - name
                                - business_name
                                - phone
                                - email
                                - address
                                - date_of_birth
                          questions:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                question_text:
                                  type: string
                                  minLength: 1
                                type:
                                  default: OPEN_ENDED
                                  type: string
                                  enum:
                                    - OPEN_ENDED
                                    - YES_NO
                                    - MULTIPLE_CHOICE
                                    - SCALE
                                required:
                                  default: false
                                  type: boolean
                                is_qualifying:
                                  default: true
                                  type: boolean
                                options:
                                  description: MULTIPLE_CHOICE options
                                  type: array
                                  items:
                                    type: string
                                qualifying_answers:
                                  type: array
                                  items:
                                    type: string
                                scale_min:
                                  type: integer
                                  minimum: -9007199254740991
                                  maximum: 9007199254740991
                                scale_max:
                                  type: integer
                                  minimum: -9007199254740991
                                  maximum: 9007199254740991
                                qualifying_min_score:
                                  type: integer
                                  minimum: -9007199254740991
                                  maximum: 9007199254740991
                              required:
                                - id
                                - question_text
                                - type
                                - required
                                - is_qualifying
                              additionalProperties: false
                        required:
                          - enabled
                          - contact_info_collection
                          - questions
                        additionalProperties: false
                      booking:
                        type: object
                        properties:
                          enabled:
                            type: boolean
                          event_type_ids:
                            type: array
                            items:
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                            description: Event types the agent can book
                          confirmation_message:
                            anyOf:
                              - type: string
                              - type: 'null'
                          minimum_notice_minutes:
                            anyOf:
                              - type: integer
                                minimum: 0
                                maximum: 9007199254740991
                              - type: 'null'
                          available_hours:
                            anyOf:
                              - minItems: 1
                                type: array
                                items:
                                  type: object
                                  properties:
                                    start:
                                      type: string
                                      pattern: ^\d{2}:\d{2}$
                                    end:
                                      type: string
                                      pattern: ^\d{2}:\d{2}$
                                  required:
                                    - start
                                    - end
                                  additionalProperties: false
                              - type: 'null'
                            description: >-
                              Bookable windows per day, in the number's
                              timezone. Two windows = a lunch break.
                          available_days:
                            anyOf:
                              - minItems: 1
                                type: array
                                items:
                                  type: integer
                                  minimum: 0
                                  maximum: 6
                              - type: 'null'
                            description: 0 = Sunday … 6 = Saturday
                        required:
                          - enabled
                          - event_type_ids
                          - confirmation_message
                          - minimum_notice_minutes
                          - available_hours
                          - available_days
                        additionalProperties: false
                      transfers:
                        type: object
                        properties:
                          primary_transfer_number:
                            anyOf:
                              - type: string
                                maxLength: 20
                              - type: 'null'
                          rules:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                condition:
                                  type: string
                                  enum:
                                    - human_requested
                                    - after_hours
                                    - qualification_failed
                                    - qualification_passed
                                    - urgent_request
                                    - custom
                                custom_condition:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                                action:
                                  type: string
                                  enum:
                                    - transfer
                                    - voicemail
                                    - schedule_callback
                                    - hang_up
                                    - notify_and_end
                                    - round_robin
                                    - webhook
                                target_number:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                                round_robin_numbers:
                                  type: array
                                  items:
                                    type: string
                                webhook_url:
                                  type: string
                                  format: uri
                                webhook_lead_source:
                                  type: string
                                notify_message:
                                  type: string
                                priority:
                                  default: 0
                                  type: integer
                                  minimum: -9007199254740991
                                  maximum: 9007199254740991
                                enabled:
                                  default: true
                                  type: boolean
                              required:
                                - id
                                - condition
                                - action
                                - priority
                                - enabled
                              additionalProperties: false
                          office_hours_only:
                            type: boolean
                            description: >-
                              Only transfer live calls inside the office-hours
                              window
                          office_hours_start:
                            type: string
                            pattern: ^\d{2}:\d{2}$
                          office_hours_end:
                            type: string
                            pattern: ^\d{2}:\d{2}$
                          office_hours_timezone:
                            anyOf:
                              - {}
                              - type: 'null'
                          outside_office_hours_message:
                            anyOf:
                              - type: string
                                maxLength: 500
                              - type: 'null'
                        required:
                          - primary_transfer_number
                          - rules
                          - office_hours_only
                          - office_hours_start
                          - office_hours_end
                          - office_hours_timezone
                          - outside_office_hours_message
                        additionalProperties: false
                      sms_referrals:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                            condition:
                              type: string
                              enum:
                                - human_requested
                                - after_hours
                                - qualification_failed
                                - qualification_passed
                                - urgent_request
                                - custom
                            custom_condition:
                              anyOf:
                                - type: string
                                - type: 'null'
                            target_number:
                              description: The number the texter is told to text instead
                              anyOf:
                                - type: string
                                - type: 'null'
                            priority:
                              default: 0
                              type: integer
                              minimum: -9007199254740991
                              maximum: 9007199254740991
                            enabled:
                              default: true
                              type: boolean
                          required:
                            - id
                            - condition
                            - priority
                            - enabled
                          additionalProperties: false
                      forwarding:
                        type: object
                        properties:
                          phone_config_mode:
                            type: string
                            enum:
                              - lumisreach_number
                              - existing_number
                          phone_service_type:
                            anyOf:
                              - type: string
                                enum:
                                  - cellphone
                                  - voip
                                  - landline
                              - type: 'null'
                          call_handling_mode:
                            type: string
                            enum:
                              - ai_handles_all
                              - call_me_first
                            description: >-
                              call_me_first rings your phone(s) first and lets
                              the AI take over if nobody answers
                          forwarding_mode:
                            anyOf:
                              - type: string
                                enum:
                                  - single_target
                                  - sequential_chain
                              - type: 'null'
                          forwarding_number:
                            anyOf:
                              - type: string
                                maxLength: 20
                              - type: 'null'
                          ring_duration_seconds:
                            anyOf:
                              - type: integer
                                minimum: 5
                                maximum: 60
                              - type: 'null'
                          sequential_targets:
                            type: array
                            items:
                              type: object
                              properties:
                                id:
                                  type: string
                                phone_number:
                                  type: string
                                label:
                                  type: string
                                  maxLength: 50
                                timeout_seconds:
                                  type: integer
                                  minimum: 5
                                  maximum: 60
                                active:
                                  default: true
                                  type: boolean
                              required:
                                - id
                                - phone_number
                                - timeout_seconds
                                - active
                              additionalProperties: false
                          chain_transition_message:
                            anyOf:
                              - type: string
                                maxLength: 200
                              - type: 'null'
                          record_human_calls:
                            type: boolean
                          office_hours_enabled:
                            type: boolean
                          office_hours_start:
                            anyOf:
                              - type: string
                                pattern: ^\d{2}:\d{2}$
                              - type: 'null'
                          office_hours_end:
                            anyOf:
                              - type: string
                                pattern: ^\d{2}:\d{2}$
                              - type: 'null'
                          carrier_forwarding_type:
                            anyOf:
                              - type: string
                                enum:
                                  - forward_all
                                  - forward_missed
                                  - forward_busy
                                  - forward_no_answer
                              - type: 'null'
                          selected_carrier:
                            anyOf:
                              - type: string
                                maxLength: 20
                              - type: 'null'
                          setup_completed:
                            type: boolean
                        required:
                          - phone_config_mode
                          - phone_service_type
                          - call_handling_mode
                          - forwarding_mode
                          - forwarding_number
                          - ring_duration_seconds
                          - sequential_targets
                          - chain_transition_message
                          - record_human_calls
                          - office_hours_enabled
                          - office_hours_start
                          - office_hours_end
                          - carrier_forwarding_type
                          - selected_carrier
                          - setup_completed
                        additionalProperties: false
                      ivr:
                        anyOf:
                          - type: object
                            properties:
                              enabled:
                                type: boolean
                                description: >-
                                  When on, the keypad menu answers calls INSTEAD
                                  of the AI agent
                              greeting:
                                anyOf:
                                  - type: string
                                    maxLength: 500
                                  - type: 'null'
                              menus:
                                minItems: 1
                                maxItems: 10
                                type: array
                                items:
                                  type: object
                                  properties:
                                    id:
                                      type: string
                                      minLength: 1
                                      description: >-
                                        Referenced by submenu actions. menus[0]
                                        is the main menu.
                                    name:
                                      type: string
                                      minLength: 1
                                      maxLength: 100
                                    prompt:
                                      description: Blank = generated from the option labels
                                      anyOf:
                                        - type: string
                                          maxLength: 1000
                                        - type: 'null'
                                    options:
                                      maxItems: 12
                                      type: array
                                      items:
                                        type: object
                                        properties:
                                          id:
                                            type: string
                                          key:
                                            type: string
                                            enum:
                                              - '0'
                                              - '1'
                                              - '2'
                                              - '3'
                                              - '4'
                                              - '5'
                                              - '6'
                                              - '7'
                                              - '8'
                                              - '9'
                                              - '*'
                                              - '#'
                                          label:
                                            type: string
                                            maxLength: 100
                                          action:
                                            oneOf:
                                              - type: object
                                                properties:
                                                  type:
                                                    type: string
                                                    const: transfer
                                                  phone_number:
                                                    type: string
                                                    pattern: ^\+[1-9]\d{6,14}$
                                                  fallback_phone_number:
                                                    anyOf:
                                                      - type: string
                                                        pattern: ^\+[1-9]\d{6,14}$
                                                      - type: 'null'
                                                required:
                                                  - type
                                                  - phone_number
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  type:
                                                    type: string
                                                    const: submenu
                                                  menu_id:
                                                    type: string
                                                    minLength: 1
                                                required:
                                                  - type
                                                  - menu_id
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  type:
                                                    type: string
                                                    const: repeat
                                                required:
                                                  - type
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  type:
                                                    type: string
                                                    const: previous
                                                required:
                                                  - type
                                                additionalProperties: false
                                              - type: object
                                                properties:
                                                  type:
                                                    type: string
                                                    const: hangup
                                                  message:
                                                    anyOf:
                                                      - type: string
                                                        maxLength: 500
                                                      - type: 'null'
                                                required:
                                                  - type
                                                additionalProperties: false
                                        required:
                                          - key
                                          - label
                                          - action
                                        additionalProperties: false
                                  required:
                                    - id
                                    - name
                                    - options
                                  additionalProperties: false
                              invalid_input_message:
                                anyOf:
                                  - type: string
                                    maxLength: 500
                                  - type: 'null'
                              no_input_message:
                                anyOf:
                                  - type: string
                                    maxLength: 500
                                  - type: 'null'
                              transfer_message:
                                anyOf:
                                  - type: string
                                    maxLength: 500
                                  - type: 'null'
                              transfer_caller_id:
                                type: string
                                enum:
                                  - business
                                  - caller
                              voice_id:
                                anyOf:
                                  - type: string
                                    maxLength: 100
                                  - type: 'null'
                              speed:
                                anyOf:
                                  - type: number
                                    minimum: 0.8
                                    maximum: 1.2
                                  - type: 'null'
                              timeout_seconds:
                                type: integer
                                minimum: 3
                                maximum: 15
                              max_attempts:
                                type: integer
                                minimum: 1
                                maximum: 5
                              fallback:
                                oneOf:
                                  - type: object
                                    properties:
                                      type:
                                        type: string
                                        const: transfer
                                      phone_number:
                                        type: string
                                        pattern: ^\+[1-9]\d{6,14}$
                                    required:
                                      - type
                                      - phone_number
                                    additionalProperties: false
                                  - type: object
                                    properties:
                                      type:
                                        type: string
                                        const: hangup
                                      message:
                                        anyOf:
                                          - type: string
                                            maxLength: 500
                                          - type: 'null'
                                    required:
                                      - type
                                    additionalProperties: false
                            required:
                              - enabled
                              - greeting
                              - menus
                              - invalid_input_message
                              - no_input_message
                              - transfer_message
                              - transfer_caller_id
                              - voice_id
                              - speed
                              - timeout_seconds
                              - max_attempts
                              - fallback
                            additionalProperties: false
                          - type: 'null'
                        description: null until a phone menu has been set up
                      updated_at:
                        type: string
                    required:
                      - id
                      - phone_number
                      - provider
                      - stack
                      - agent_id
                      - name
                      - is_active
                      - business_name
                      - business_description
                      - timezone
                      - call_settings
                      - voice
                      - sms
                      - knowledge
                      - qualification
                      - booking
                      - transfers
                      - sms_referrals
                      - forwarding
                      - ivr
                      - updated_at
                    additionalProperties: false
                required:
                  - data
                additionalProperties: false
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '409':
          description: Conflict (incl. idempotency conflicts)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
components:
  schemas:
    ErrorEnvelope:
      type: object
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
            message:
              type: string
            fields:
              type: object
              additionalProperties:
                type: string
            doc_url:
              type: string
              format: uri
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````