> ## 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.

# Update Assistant

> Update an assistant.

Updates the assistant configuration if it belongs to your organization.
Only the fields provided in the request will be updated.

This endpoint allows you to modify the configuration of an existing assistant by providing its unique ID. You only need to include the fields you wish to update in the request body; any omitted fields will remain unchanged.

### Path Parameters

* `assistant_id` (string, **required**): The unique identifier of the assistant you want to update.

### Request Body

The request body is a JSON object containing the fields to update. The structure and available parameters are identical to those used when creating an assistant. Refer to [Create Assistant](/api-reference/assistants/create) for the full schema and [Assistant configuration](/assistant-configuration) for how dashboard settings map to runtime behavior.

### Examples

**Update basic settings:**

```json Request theme={null}
{
  "name": "Senior Customer Support Specialist",
  "llm_settings": {
    "temperature": 0.5,
    "top_p": 0.9
  }
}
```

**Enable warm transfer:**

```json Request theme={null}
{
  "transfer_call_message": "Let me brief a specialist and connect you.",
  "tools_settings": {
    "transfer_call": {
      "enabled": true,
      "scenarios": [
        "caller asks for a human",
        "billing dispute requires account team"
      ],
      "transfer_numbers": ["+18005551212"],
      "transfer_type": "warm",
      "agent_confirmation": true,
      "unavailable_message": "I could not reach an agent right now. I can take a message or schedule a callback."
    }
  }
}
```

**Enable speculative LLM for lower latency:**

```json Request theme={null}
{
  "stt_settings": {
    "provider": "deepgram",
    "model": "nova-3",
    "language": "en-US",
    "interim_results": true,
    "speculative_config": {
      "enable_speculative_llm": true,
      "speculative_stream_to_tts": false,
      "speculative_debounce_ms": 300,
      "speculative_min_words": 3,
      "speculative_similarity_threshold": 0.85
    }
  }
}
```

**Switch from Twilio to Telnyx:**

```json Request theme={null}
{
  "telnyx_config": {
    "api_key": "KEYxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "connection_id": "1234567890"
  },
  "twilio_config": {
    "account_sid": null,
    "auth_token": null
  }
}
```

**Add Telnyx as backup to Twilio:**

```json Request theme={null}
{
  "telnyx_config": {
    "api_key": "KEYxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", 
    "connection_id": "1234567890"
  }
}
```

### Response

A successful update will return the complete, updated assistant object.

```json Response theme={null}
{
  "id": "asst_a1b2c3d4e5f67890",
  "user_id": "user_12345",
  "organization_id": "org_67890",
  "name": "Senior Customer Support Specialist",
  "description": "Handles inbound customer queries and provides support.",
  "is_active": true,
  "llm_settings": {
    "temperature": 0.5,
    "max_tokens": 1000,
    "top_p": 0.9,
    "system_prompt": "You are a senior customer support specialist.",
    "welcome_message": "Hello, how can I help today?"
  },
  "llm_provider": "openai",
  "llm_provider_config": {
    "model": "gpt-5",
    "api_key": "********"
  },
  "tts_settings": {
    "provider": "openai",
    "model_id": "tts-1",
    "voice_id": "alloy"
  },
  "stt_settings": {
    "provider": "deepgram",
    "language": "en-US",
    "model": "nova-3",
    "interim_results": true
  },
  "interruption_settings": {
    "interruption_mode": "balanced",
    "interruption_threshold": 3,
    "min_speaking_time": 0.8,
    "interruption_cooldown": 2.0
  },
  "tools_settings": {
    "end_call": {
      "enabled": true,
      "scenarios": ["The user says goodbye.", "The issue is fully resolved."]
    },
    "transfer_call": {
      "enabled": true,
      "transfer_type": "warm",
      "transfer_numbers": ["+18005551212"]
    }
  },
  "created_at": "2023-10-26T10:00:00Z",
  "updated_at": "2023-10-26T10:15:00Z"
}
```


## OpenAPI

````yaml PUT /api/v1/assistants/{assistant_id}
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/{assistant_id}:
    put:
      tags:
        - assistants
      summary: Update Assistant
      description: |-
        Update an assistant.

        Updates the assistant configuration if it belongs to your organization.
        Only the fields provided in the request will be updated.
      operationId: update_assistant_api_v1_assistants__assistant_id__put
      parameters:
        - name: assistant_id
          in: path
          required: true
          schema:
            type: integer
            title: Assistant Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssistantUpdate'
      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:
    AssistantUpdate:
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
        llm_provider:
          anyOf:
            - type: string
            - type: 'null'
          title: Llm Provider
        llm_provider_config:
          anyOf:
            - $ref: '#/components/schemas/LLMProviderConfig'
            - type: 'null'
        llm_settings:
          anyOf:
            - $ref: '#/components/schemas/LLMSettings'
            - type: 'null'
        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:
          anyOf:
            - $ref: '#/components/schemas/InterruptionSettings'
            - type: 'null'
        tts_settings:
          anyOf:
            - $ref: '#/components/schemas/TTSSettings'
            - type: 'null'
        stt_settings:
          anyOf:
            - $ref: '#/components/schemas/STTSettings'
            - type: 'null'
        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
        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
            - type: 'null'
          title: Max Call Length
        conversation_continuity_enabled:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Conversation Continuity Enabled
        tools_settings:
          anyOf:
            - $ref: '#/components/schemas/ToolsSettings'
            - type: 'null'
        rag_settings:
          anyOf:
            - $ref: '#/components/schemas/RAGSettings'
            - type: 'null'
        llm_fallback_providers:
          anyOf:
            - $ref: '#/components/schemas/LLMFallbackSettings'
            - type: 'null'
        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
        backchannel_settings:
          anyOf:
            - $ref: '#/components/schemas/BackchannelGenerationSettings'
            - type: 'null'
        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)
        change_description:
          anyOf:
            - type: string
              maxLength: 500
            - type: 'null'
          title: Change Description
          description: >-
            Optional description of what changed and why (stored in settings
            history).
      additionalProperties: true
      type: object
      title: AssistantUpdate
      description: Schema for updating an assistant.
    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

````