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

# Get Assistant by Phone

> Get a specific assistant by phone number.

Returns the assistant details if it belongs to your organization.
Uses the new PhoneNumber table for lookups.



## OpenAPI

````yaml GET /api/v1/assistants/by-phone/{phone_number}
openapi: 3.1.0
info:
  title: Burki
  description: A system that uses AI to answer customer Calls.
  version: 0.1.0
servers: []
security: []
paths:
  /api/v1/assistants/by-phone/{phone_number}:
    get:
      tags:
        - assistants
      summary: Get Assistant By Phone
      description: |-
        Get a specific assistant by phone number.

        Returns the assistant details if it belongs to your organization.
        Uses the new PhoneNumber table for lookups.
      operationId: get_assistant_by_phone_api_v1_assistants_by_phone__phone_number__get
      parameters:
        - name: phone_number
          in: path
          required: true
          schema:
            type: string
            title: Phone Number
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssistantResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    AssistantResponse:
      properties:
        name:
          type: string
          title: Name
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        llm_provider:
          anyOf:
            - type: string
            - type: 'null'
          title: Llm Provider
          description: 'LLM provider: openai, azure, anthropic, gemini, xai, groq, custom'
          default: openai
        llm_provider_config:
          $ref: '#/components/schemas/LLMProviderConfig'
          description: Configuration for the selected LLM provider.
        llm_settings:
          $ref: '#/components/schemas/LLMSettings'
        webhook_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Webhook Url
        sms_webhook_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Sms Webhook Url
          description: URL to receive SMS webhook events
        messaging_service_sid:
          anyOf:
            - type: string
            - type: 'null'
          title: Messaging Service Sid
          description: Twilio Messaging Service SID for SMS handling
        interruption_settings:
          $ref: '#/components/schemas/InterruptionSettings'
        tts_settings:
          $ref: '#/components/schemas/TTSSettings'
        stt_settings:
          $ref: '#/components/schemas/STTSettings'
        end_call_message:
          anyOf:
            - type: string
            - type: 'null'
          title: End Call Message
        transfer_call_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Transfer Call Message
        idle_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Idle Message
          default: Are you still there? I'm here to help if you need anything.
        max_idle_messages:
          anyOf:
            - type: integer
            - type: 'null'
          title: Max Idle Messages
        idle_timeout:
          anyOf:
            - type: integer
            - type: 'null'
          title: Idle Timeout
        max_call_length:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
          title: Max Call Length
          description: >-
            Maximum call length in seconds. Calls will be automatically ended
            when this limit is reached. None means unlimited.
        conversation_continuity_enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Conversation Continuity Enabled
          description: >-
            Enable conversation history continuity across calls from same number
            within 15 minutes
          default: true
        tools_settings:
          $ref: '#/components/schemas/ToolsSettings'
        rag_settings:
          $ref: '#/components/schemas/RAGSettings'
        llm_fallback_providers:
          $ref: '#/components/schemas/LLMFallbackSettings'
        bypass_numbers:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Bypass Numbers
          description: >-
            Phone numbers in E.164 format (e.g. +12345678900) that bypass AI and
            transfer directly to the configured transfer number
        custom_settings:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Custom Settings
        is_active:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Is Active
          default: true
        backchannel_settings:
          anyOf:
            - $ref: '#/components/schemas/BackchannelGenerationSettings'
            - type: 'null'
          description: AI backchannel generation settings for active listening cues
        recording_settings:
          anyOf:
            - $ref: '#/components/schemas/RecordingSettings'
            - type: 'null'
          description: Recording settings including enabled flag and disclosure options
        api_keys:
          anyOf:
            - additionalProperties:
                anyOf:
                  - type: string
                  - type: 'null'
              type: object
            - type: 'null'
          title: Api Keys
          description: >-
            Assistant-specific API keys (overrides organization keys). Keys:
            elevenlabs_api_key, deepgram_api_key, cartesia_api_key, etc.
        tts_limit:
          anyOf:
            - type: integer
              maximum: 1000
              minimum: 1
            - type: 'null'
          title: Tts Limit
          description: >-
            TTS slot limit for this assistant (only used if assistant has own
            TTS key)
        stt_limit:
          anyOf:
            - type: integer
              maximum: 1000
              minimum: 1
            - type: 'null'
          title: Stt Limit
          description: >-
            STT slot limit for this assistant (only used if assistant has own
            STT key)
        id:
          type: integer
          title: Id
        organization_id:
          type: integer
          title: Organization Id
        user_id:
          type: integer
          title: User Id
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
        total_calls:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Calls
          description: Total number of calls for this assistant
        avg_call_duration:
          anyOf:
            - type: integer
            - type: 'null'
          title: Avg Call Duration
          description: Average call duration in seconds
        success_rate:
          anyOf:
            - type: number
            - type: 'null'
          title: Success Rate
          description: Success rate percentage
      additionalProperties: true
      type: object
      required:
        - name
        - id
        - organization_id
        - user_id
        - created_at
        - updated_at
      title: AssistantResponse
      description: Schema for assistant response.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    LLMProviderConfig:
      properties:
        api_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Api Key
        base_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Base Url
        model:
          anyOf:
            - type: string
            - type: 'null'
          title: Model
          default: gpt-4o-mini
        custom_config:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Custom Config
      type: object
      title: LLMProviderConfig
      description: Configuration for the LLM provider.
    LLMSettings:
      properties:
        temperature:
          type: number
          title: Temperature
          default: 0.5
        max_tokens:
          type: integer
          title: Max Tokens
          default: 1000
        system_prompt:
          type: string
          title: System Prompt
          default: >-
            You are a helpful assistant that can answer questions and help with
            tasks.
        welcome_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Welcome Message
        top_p:
          type: number
          title: Top P
          default: 1
        frequency_penalty:
          type: number
          title: Frequency Penalty
          default: 0
        presence_penalty:
          type: number
          title: Presence Penalty
          default: 0
        stop_sequences:
          items:
            type: string
          type: array
          title: Stop Sequences
      type: object
      title: LLMSettings
      description: Settings for the Large Language Model.
    InterruptionSettings:
      properties:
        interruption_threshold:
          type: integer
          title: Interruption Threshold
          default: 3
        min_speaking_time:
          type: number
          title: Min Speaking Time
          default: 0.5
        interruption_cooldown:
          type: number
          title: Interruption Cooldown
          default: 2
        interruption_mode:
          anyOf:
            - type: string
            - type: 'null'
          title: Interruption Mode
        min_stt_confidence:
          type: number
          title: Min Stt Confidence
          default: 0.65
        confirmation_window_ms:
          type: integer
          title: Confirmation Window Ms
          default: 400
        tentative_confirm_words:
          type: integer
          title: Tentative Confirm Words
          default: 2
        backchannel_filter:
          type: boolean
          title: Backchannel Filter
          default: true
        tail_protection_ms:
          type: integer
          title: Tail Protection Ms
          default: 2000
      type: object
      title: InterruptionSettings
      description: Settings for call interruption behavior.
    TTSSettings:
      properties:
        provider:
          type: string
          title: Provider
          default: elevenlabs
        voice_id:
          type: string
          title: Voice Id
          default: rachel
        model_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Model Id
          default: turbo
        latency:
          type: integer
          title: Latency
          default: 1
        stability:
          type: number
          title: Stability
          default: 0.5
        similarity_boost:
          type: number
          title: Similarity Boost
          default: 0.75
        style:
          type: number
          title: Style
          default: 0
        speed:
          type: number
          title: Speed
          default: 1
        volume:
          type: number
          title: Volume
          default: 1
        use_speaker_boost:
          type: boolean
          title: Use Speaker Boost
          default: true
        provider_config:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Provider Config
        background_sound:
          $ref: '#/components/schemas/BackgroundSoundSettings'
          description: Background sound settings
      type: object
      title: TTSSettings
      description: Settings for Text-to-Speech (TTS) service.
    STTSettings:
      properties:
        provider:
          anyOf:
            - type: string
            - type: 'null'
          title: Provider
          description: >-
            STT provider: deepgram, azure, uplift, elevenlabs, speechmatics,
            soniox, telnyx
          default: deepgram
        model:
          type: string
          title: Model
          default: nova-2
        language:
          type: string
          title: Language
          default: en-US
        punctuate:
          type: boolean
          title: Punctuate
          default: true
        interim_results:
          type: boolean
          title: Interim Results
          default: true
        endpointing:
          $ref: '#/components/schemas/STTEndpointingSettings'
        utterance_end_ms:
          type: integer
          maximum: 10000
          minimum: 100
          title: Utterance End Ms
          description: Silence before ending utterance (minimum 100ms, recommended 1000ms)
          default: 1000
        smart_format:
          type: boolean
          title: Smart Format
          default: true
        keywords:
          items:
            $ref: '#/components/schemas/Keyword'
          type: array
          title: Keywords
        keyterms:
          items:
            type: string
          type: array
          title: Keyterms
        diarize:
          type: boolean
          title: Diarize
          description: Enable speaker diarization (speaker labels per word)
          default: false
        detect_entities:
          type: boolean
          title: Detect Entities
          description: >-
            Enable entity detection (NAME, ORG, PHONE_NUMBER, etc.) in final
            transcripts
          default: false
        audio_denoising:
          type: boolean
          title: Audio Denoising
          default: false
        flux_config:
          anyOf:
            - $ref: '#/components/schemas/FluxConfig'
            - type: 'null'
          description: Flux-specific turn detection settings (only for flux- models)
        elevenlabs_config:
          anyOf:
            - $ref: '#/components/schemas/ElevenLabsSTTConfig'
            - type: 'null'
          description: >-
            ElevenLabs STT (Scribe) specific settings (only for elevenlabs
            provider)
        speechmatics_config:
          anyOf:
            - $ref: '#/components/schemas/SpeechmaticsSTTConfig'
            - type: 'null'
          description: Speechmatics STT specific settings (only for speechmatics provider)
        soniox_config:
          anyOf:
            - $ref: '#/components/schemas/SonioxSTTConfig'
            - type: 'null'
          description: >-
            Soniox STT specific settings (only for soniox provider). Supports
            language hints, endpoint detection, speaker diarization, language
            identification, context boosting, and real-time translation.
        speculative_config:
          anyOf:
            - $ref: '#/components/schemas/SpeculativeConfig'
            - type: 'null'
          description: Speculative LLM settings for reduced latency on partial transcripts
        utterance_timeout_seconds:
          anyOf:
            - type: number
              maximum: 5
              minimum: 0.3
            - type: 'null'
          title: Utterance Timeout Seconds
          description: >-
            Seconds to wait after last is_final before committing utterance to
            LLM (default 1.5s). Lower values reduce latency when
            speech_final/UtteranceEnd are missing.
        incomplete_utterance_detection:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Incomplete Utterance Detection
          description: >-
            When enabled, short utterances (< 5 words) are classified by a
            lightweight LLM to detect incomplete thoughts (e.g. 'I want to...')
            and hold finalization to give the caller time to continue.
          default: false
        provider_config:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Provider Config
          description: >-
            Provider-specific configuration including api_key for
            assistant-level credentials
        prefer_flux_for_english:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Prefer Flux For English
          description: >-
            When using ElevenLabs, auto-swap to Deepgram Flux mid-call if
            English is detected on first utterance
          default: false
        english_flux_config:
          anyOf:
            - $ref: '#/components/schemas/FluxConfig'
            - type: 'null'
          description: >-
            Flux config for mid-call English swap. Defaults to
            eot_timeout_ms=6000, thresholds=0.9 if None
      type: object
      title: STTSettings
      description: Settings for Speech-to-Text (STT) service.
    ToolsSettings:
      properties:
        enabled_tools:
          items:
            type: string
          type: array
          title: Enabled Tools
          description: >-
            List of enabled tool names. This is auto-populated based on other
            settings.
        end_call:
          $ref: '#/components/schemas/EndCallTool'
        transfer_call:
          $ref: '#/components/schemas/TransferCallTool'
        dtmf_solver:
          $ref: '#/components/schemas/DtmfSolverTool'
        send_sms:
          $ref: '#/components/schemas/SendSmsTool'
        custom_tools:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Custom Tools
      type: object
      title: ToolsSettings
      description: Settings for integrated tools.
    RAGSettings:
      properties:
        enabled:
          type: boolean
          title: Enabled
          default: false
        rag_inject_before_llm:
          type: boolean
          title: Rag Inject Before Llm
          description: >-
            If True, inject RAG context into system prompt before LLM call
            (single round-trip); searchKnowledgeBase tool is omitted.
          default: false
        search_limit:
          type: integer
          title: Search Limit
          default: 3
        similarity_threshold:
          type: number
          title: Similarity Threshold
          default: 0.7
        embedding_model:
          type: string
          title: Embedding Model
          default: text-embedding-3-small
        chunking_strategy:
          type: string
          title: Chunking Strategy
          default: recursive
        chunk_size:
          type: integer
          title: Chunk Size
          default: 1000
        chunk_overlap:
          type: integer
          title: Chunk Overlap
          default: 200
        auto_process:
          type: boolean
          title: Auto Process
          default: true
        include_metadata:
          type: boolean
          title: Include Metadata
          default: true
        context_window_tokens:
          type: integer
          title: Context Window Tokens
          default: 4000
      type: object
      title: RAGSettings
      description: Settings for Retrieval-Augmented Generation (RAG).
    LLMFallbackSettings:
      properties:
        enabled:
          type: boolean
          title: Enabled
          default: false
        fallbacks:
          items:
            $ref: '#/components/schemas/LLMFallbackProvider'
          type: array
          title: Fallbacks
      type: object
      title: LLMFallbackSettings
      description: Settings for LLM fallback providers.
    BackchannelGenerationSettings:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: Enable AI backchannel generation during user speech
          default: false
        frequency:
          type: integer
          maximum: 5
          minimum: 1
          title: Frequency
          description: >-
            Backchannel frequency: 1=Rare, 2=Occasional, 3=Moderate, 4=Frequent,
            5=Aggressive
          default: 3
      type: object
      title: BackchannelGenerationSettings
      description: >-
        Settings for AI backchannel generation (active listening cues).


        When enabled, the AI produces short verbal acknowledgments like
        "uh-huh",

        "mm-hmm", "I see" while the user is speaking to signal active listening.
    RecordingSettings:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: Whether recording is enabled for this assistant
          default: true
        format:
          anyOf:
            - type: string
            - type: 'null'
          title: Format
          description: Audio format (wav, mp3)
          default: mp3
        sample_rate:
          anyOf:
            - type: integer
            - type: 'null'
          title: Sample Rate
          description: Audio sample rate in Hz
          default: 8000
        channels:
          anyOf:
            - type: integer
            - type: 'null'
          title: Channels
          description: Number of audio channels
          default: 1
        record_user_audio:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Record User Audio
          default: true
        record_assistant_audio:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Record Assistant Audio
          default: true
        record_mixed_audio:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Record Mixed Audio
          default: true
        record_user_only_track:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Record User Only Track
          description: >-
            When True, also store a user-only (caller) recording in addition to
            mixed. When None/omitted, org setting applies.
        auto_save:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Auto Save
          default: true
        recordings_dir:
          anyOf:
            - type: string
            - type: 'null'
          title: Recordings Dir
          default: recordings
        create_database_records:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Create Database Records
          default: true
        disclosure_enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Disclosure Enabled
          default: false
        disclosure_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Disclosure Message
        disclosure_mode:
          anyOf:
            - type: string
            - type: 'null'
          title: Disclosure Mode
          default: every_call
      additionalProperties: true
      type: object
      title: RecordingSettings
      description: Settings for call recording (local recording, disclosure, etc.).
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    BackgroundSoundSettings:
      properties:
        enabled:
          type: boolean
          title: Enabled
          description: Enable background sounds during calls
          default: false
        storage_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Storage Key
          description: Storage key for uploaded background sound file (preferred)
        sound_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Sound Url
          description: >-
            External URL of background sound file (fallback if storage_key not
            provided)
        volume:
          type: number
          maximum: 1
          minimum: 0
          title: Volume
          description: 'Volume level (0.0 to 1.0, recommended: 0.2-0.4)'
          default: 0.3
        loop:
          type: boolean
          title: Loop
          description: Loop the background sound continuously
          default: true
      type: object
      title: BackgroundSoundSettings
      description: Settings for background sounds during calls.
    STTEndpointingSettings:
      properties:
        silence_threshold:
          type: integer
          title: Silence Threshold
          default: 500
        min_silence_duration:
          type: integer
          title: Min Silence Duration
          default: 500
      type: object
      title: STTEndpointingSettings
      description: |-
        Endpointing settings for Speech-to-Text (STT).

        - `silence_threshold` (ms): Deepgram endpointing window — passed to the
          Deepgram WebSocket as `endpointing`.
        - `min_silence_duration` (ms): legacy utterance-timeout fallback used by
          `app/core/call_handler.py` when computing how long to wait after the
          last `is_final` before finalizing. Newer pipelines prefer
          `utterance_timeout_seconds`. Kept here so existing assistant rows
          continue to work; removed from the UI because users should configure
          utterance timeout via `utterance_timeout_seconds` instead.
    Keyword:
      properties:
        keyword:
          type: string
          title: Keyword
        intensifier:
          type: number
          title: Intensifier
          default: 1
      type: object
      required:
        - keyword
      title: Keyword
      description: A keyword to be detected in STT, with an optional intensifier.
    FluxConfig:
      properties:
        eot_timeout_ms:
          anyOf:
            - type: integer
              maximum: 10000
              minimum: 10
            - type: 'null'
          title: Eot Timeout Ms
          description: >-
            Timeout for turn detection in milliseconds (10-10000ms). Leave None
            for Deepgram default.
        eager_eot_threshold:
          anyOf:
            - type: number
              maximum: 0.9
              minimum: 0.3
            - type: 'null'
          title: Eager Eot Threshold
          description: >-
            Confidence threshold for eager turn end detection (0.3-0.9). Leave
            None for Deepgram default.
        eot_threshold:
          anyOf:
            - type: number
              maximum: 0.9
              minimum: 0.5
            - type: 'null'
          title: Eot Threshold
          description: >-
            Confidence threshold for final turn end detection (0.5-0.9). Leave
            None for Deepgram default.
        language_hints:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Language Hints
          description: >-
            Language hints for flux-general-multi model (e.g., ['en', 'es']).
            Biases transcription toward specified languages. Omit for
            auto-detect.
        tag:
          anyOf:
            - type: string
            - type: 'null'
          title: Tag
          description: Usage tracking label (e.g., 'restaurant', 'support', 'sales')
        mip_opt_out:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Mip Opt Out
          description: >-
            Opt out of Deepgram Model Improvement Program (data usage for
            training)
          default: false
      type: object
      title: FluxConfig
      description: Configuration for Deepgram Flux models (AI-powered turn detection).
    ElevenLabsSTTConfig:
      properties:
        commit_strategy:
          anyOf:
            - type: string
            - type: 'null'
          title: Commit Strategy
          description: >-
            Transcription commit strategy: 'manual' or 'vad' (voice activity
            detection). Default: 'vad'
          default: vad
        vad_threshold:
          anyOf:
            - type: number
              maximum: 0.9
              minimum: 0.1
            - type: 'null'
          title: Vad Threshold
          description: >-
            VAD sensitivity threshold (0.1-0.9). Lower = more sensitive.
            Default: 0.5
          default: 0.5
        vad_silence_threshold_secs:
          anyOf:
            - type: number
              maximum: 3
              minimum: 0.3
            - type: 'null'
          title: Vad Silence Threshold Secs
          description: >-
            Silence duration in seconds before committing transcription
            (0.3-3.0). Default: 0.8
          default: 0.8
        min_speech_duration_ms:
          anyOf:
            - type: integer
              maximum: 2000
              minimum: 50
            - type: 'null'
          title: Min Speech Duration Ms
          description: >-
            Minimum speech duration in milliseconds to consider valid (50-2000).
            Default: 100
          default: 100
        min_silence_duration_ms:
          anyOf:
            - type: integer
              maximum: 2000
              minimum: 50
            - type: 'null'
          title: Min Silence Duration Ms
          description: >-
            Minimum silence duration in milliseconds for segmentation (50-2000).
            Default: 250
          default: 250
        include_timestamps:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Include Timestamps
          description: 'Include word-level timestamps in transcription. Default: False'
          default: false
        include_language_detection:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Include Language Detection
          description: 'Include detected language in response. Default: False'
          default: false
        manual_commit_silence_secs:
          anyOf:
            - type: number
              maximum: 5
              minimum: 0.5
            - type: 'null'
          title: Manual Commit Silence Secs
          description: >-
            Silence duration in seconds before committing in manual mode
            (0.5-5.0). Default: 1.5
          default: 1.5
        manual_commit_short_silence_secs:
          anyOf:
            - type: number
              maximum: 2
              minimum: 0.3
            - type: 'null'
          title: Manual Commit Short Silence Secs
          description: >-
            Faster silence threshold for short utterances (≤3 words) in manual
            mode (0.3-2.0). Default: 0.8
          default: 0.8
      type: object
      title: ElevenLabsSTTConfig
      description: Configuration for ElevenLabs STT (Scribe) specific settings.
    SpeechmaticsSTTConfig:
      properties:
        region:
          anyOf:
            - type: string
            - type: 'null'
          title: Region
          description: 'API region: ''us'' or ''eu''. Default: ''us'''
          default: us
        max_delay:
          anyOf:
            - type: number
              maximum: 10
              minimum: 0.5
            - type: 'null'
          title: Max Delay
          description: >-
            Maximum delay for transcription in seconds (0.5-10.0). Lower =
            faster but less accurate. Default: 1.0
          default: 1
        enable_partials:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enable Partials
          description: >-
            Enable partial/interim transcripts for real-time feedback. Default:
            True
          default: true
        remove_disfluencies:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Remove Disfluencies
          description: 'Remove filler words like ''um'', ''uh'', ''ah''. Default: True'
          default: true
        enable_diarization:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enable Diarization
          description: >-
            Enable speaker diarization (identify different speakers). Default:
            False
          default: false
        speaker_diarization_max_speakers:
          anyOf:
            - type: integer
              maximum: 10
              minimum: 1
            - type: 'null'
          title: Speaker Diarization Max Speakers
          description: 'Maximum number of speakers for diarization (1-10). Default: 2'
          default: 2
        additional_vocab:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Additional Vocab
          description: >-
            List of additional vocabulary words to improve recognition (e.g.,
            product names, technical terms)
        utterance_silence_timeout:
          anyOf:
            - type: number
              maximum: 5
              minimum: 0.3
            - type: 'null'
          title: Utterance Silence Timeout
          description: >-
            Seconds of silence before emitting final utterance (0.3-5.0).
            Default: 1.0
          default: 1
      type: object
      title: SpeechmaticsSTTConfig
      description: Configuration for Speechmatics STT specific settings.
    SonioxSTTConfig:
      properties:
        language_hints:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Language Hints
          description: >-
            Language hints for multi-language support (e.g., ['en', 'es',
            'fr']). First language is treated as primary. If empty, defaults to
            assistant language.
        enable_endpoint_detection:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enable Endpoint Detection
          description: >-
            Enable endpoint detection to identify when user stops speaking.
            Emits <end> token boundaries. Default: True
          default: true
        max_endpoint_delay_ms:
          anyOf:
            - type: integer
              maximum: 3000
              minimum: 500
            - type: 'null'
          title: Max Endpoint Delay Ms
          description: >-
            Maximum delay for endpoint detection in ms (500-3000). Lower =
            faster turn detection but may cut off speech. Default: 2000
          default: 2000
        enable_speaker_diarization:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enable Speaker Diarization
          description: >-
            Enable speaker diarization to identify different speakers. Default:
            False
          default: false
        enable_language_identification:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Enable Language Identification
          description: >-
            Enable automatic language identification per token. Works with
            language_hints to detect which language is being spoken. Default:
            False
          default: false
        context_terms:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Context Terms
          description: >-
            Terms to boost recognition accuracy — simple list of strings. E.g.,
            ["BiteBuddy", "Chicken Tikka"]
        context_text:
          anyOf:
            - type: string
            - type: 'null'
          title: Context Text
          description: >-
            Context text to prime the model (e.g., a description of the
            conversation topic).
        context_general:
          anyOf:
            - items:
                additionalProperties:
                  type: string
                type: object
              type: array
            - type: 'null'
          title: Context General
          description: >-
            General context as key-value pairs. Keys: domain, topic, doctor,
            patient, organization. E.g., [{"key": "domain", "value": "restaurant
            ordering"}]
        context_translation_terms:
          anyOf:
            - items:
                additionalProperties:
                  type: string
                type: object
              type: array
            - type: 'null'
          title: Context Translation Terms
          description: >-
            Translation-specific terms with source and target. E.g., [{"source":
            "BiteBuddy", "target": "BiteBuddy"}]
        translation_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Translation Type
          description: >-
            Translation mode: 'one_way' (all speech → target) or 'two_way'
            (bidirectional between two languages).
        translation_target_language:
          anyOf:
            - type: string
            - type: 'null'
          title: Translation Target Language
          description: >-
            Target language for one_way translation (e.g., 'es'). All speech
            will be translated to this language.
        translation_language_a:
          anyOf:
            - type: string
            - type: 'null'
          title: Translation Language A
          description: First language for two_way translation (e.g., 'en').
        translation_language_b:
          anyOf:
            - type: string
            - type: 'null'
          title: Translation Language B
          description: >-
            Second language for two_way translation (e.g., 'es'). English speech
            translates to Spanish and vice versa.
        num_channels:
          anyOf:
            - type: integer
              maximum: 2
              minimum: 1
            - type: 'null'
          title: Num Channels
          description: 'Number of audio channels (1=mono, 2=stereo). Default: 1'
          default: 1
        utterance_silence_timeout:
          anyOf:
            - type: number
              maximum: 5
              minimum: 0.3
            - type: 'null'
          title: Utterance Silence Timeout
          description: >-
            Seconds of silence before emitting final utterance (0.3-5.0).
            Default: 1.0
          default: 1
      type: object
      title: SonioxSTTConfig
      description: Configuration for Soniox STT specific settings.
    SpeculativeConfig:
      properties:
        enable_speculative_llm:
          type: boolean
          title: Enable Speculative Llm
          description: >-
            Master toggle for speculative LLM on partial transcripts. Default:
            False
          default: false
        speculative_stream_to_tts:
          type: boolean
          title: Speculative Stream To Tts
          description: >-
            Aggressive mode: stream speculative LLM to TTS immediately. False =
            safe mode (buffer until confirmed). Default: True
          default: true
        speculative_debounce_ms:
          type: integer
          maximum: 1000
          minimum: 100
          title: Speculative Debounce Ms
          description: >-
            Debounce delay in ms after last partial before triggering
            speculative LLM (100-1000). Default: 300
          default: 300
        speculative_min_words:
          type: integer
          maximum: 10
          minimum: 1
          title: Speculative Min Words
          description: >-
            Minimum word count in partial transcript to trigger speculative LLM
            (1-10). Default: 3
          default: 3
        speculative_similarity_threshold:
          type: number
          maximum: 1
          minimum: 0.5
          title: Speculative Similarity Threshold
          description: >-
            Similarity threshold between partial and final text to confirm
            speculative (0.5-1.0). Default: 0.85
          default: 0.85
      type: object
      title: SpeculativeConfig
      description: >-
        Configuration for speculative LLM processing on partial transcripts.


        When enabled, the pipeline starts an LLM call on partial transcripts

        before the final/committed transcript arrives. If the final text
        matches,

        the LLM response is already in flight, saving VAD silence latency.
    EndCallTool:
      properties:
        enabled:
          type: boolean
          title: Enabled
          default: false
        scenarios:
          items:
            type: string
          type: array
          title: Scenarios
        custom_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Custom Message
      type: object
      title: EndCallTool
      description: Configuration for the 'end call' tool.
    TransferCallTool:
      properties:
        enabled:
          type: boolean
          title: Enabled
          default: false
        scenarios:
          items:
            type: string
          type: array
          title: Scenarios
        transfer_numbers:
          items:
            type: string
          type: array
          title: Transfer Numbers
        custom_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Custom Message
        transfer_type:
          type: string
          enum:
            - cold
            - warm
          title: Transfer Type
          description: >-
            cold=immediate blind transfer, warm=caller on hold while agent is
            briefed with AI summary
          default: cold
        agent_confirmation:
          type: boolean
          title: Agent Confirmation
          description: Ask agent to confirm before connecting caller (warm transfer only)
          default: false
        unavailable_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Unavailable Message
          description: >-
            Message played to caller when agent declines (warm transfer +
            agent_confirmation)
      type: object
      title: TransferCallTool
      description: Configuration for the 'transfer call' tool.
    DtmfSolverTool:
      properties:
        enabled:
          type: boolean
          title: Enabled
          default: false
        scenarios:
          items:
            type: string
          type: array
          title: Scenarios
          description: >-
            Scenarios when to send DTMF tones (e.g., 'navigating IVR', 'entering
            PIN')
      type: object
      title: DtmfSolverTool
      description: Configuration for the 'DTMF solver' tool - allows AI to send DTMF tones.
    SendSmsTool:
      properties:
        enabled:
          type: boolean
          title: Enabled
          default: false
        scenarios:
          items:
            type: string
          type: array
          title: Scenarios
          description: >-
            Scenarios when to send SMS (e.g., 'caller requests a follow-up
            text')
        default_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Default Message
          description: >-
            Pre-configured message to send. If set, the LLM uses this instead of
            asking the caller.
      type: object
      title: SendSmsTool
      description: >-
        Configuration for the 'send SMS' tool - allows AI to send SMS to the
        caller.
    LLMFallbackProvider:
      properties:
        provider:
          type: string
          title: Provider
        api_key:
          anyOf:
            - type: string
            - type: 'null'
          title: Api Key
        base_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Base Url
        model:
          anyOf:
            - type: string
            - type: 'null'
          title: Model
      type: object
      required:
        - provider
      title: LLMFallbackProvider
      description: Configuration for a single LLM fallback provider.
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````