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

# Run one stateless text-chat completion turn.

> Statelessness: the client carries an opaque encrypted `state` blob between turns.
The server decodes the state, drives the agent's orchestration loop (OpenAI ChatCompletions +
tool calls — built-in, agent-defined webhook, or MCP), and returns the new messages plus a
fresh encrypted state. The conversation transcript is owned by the client.



## OpenAPI

````yaml https://blackbox.dasha.ai/swagger/v1/swagger.json post /api/v1/text-chat/completion
openapi: 3.0.4
info:
  title: Dasha BlackBox Agent API
  description: API for managing AI agents and calls
  contact:
    name: DashaAI Team
    email: support@dasha.ai
  version: v1
servers:
  - url: https://blackbox.dasha.ai
    description: Dasha BlackBox Agent API
security:
  - {}
  - {}
tags:
  - name: ActivityLogs
  - name: Agents
  - name: CallResults
  - name: Calls
  - name: Chats
  - name: CustomerData
  - name: Mcp
  - name: Media
  - name: Misc
  - name: PronunciationDictionaries
  - name: Providers
  - name: SipAliases
  - name: SipCredentials
  - name: SipPhoneNumbers
  - name: TextChat
  - name: TwilioProvider
  - name: Voice
  - name: WebhookTest
  - name: WebIntegrations
  - name: WebSocket
    description: WebSocket endpoints for real-time communication
paths:
  /api/v1/text-chat/completion:
    post:
      tags:
        - TextChat
      summary: Run one stateless text-chat completion turn.
      description: >-
        Statelessness: the client carries an opaque encrypted `state` blob
        between turns.

        The server decodes the state, drives the agent's orchestration loop
        (OpenAI ChatCompletions +

        tool calls — built-in, agent-defined webhook, or MCP), and returns the
        new messages plus a

        fresh encrypted state. The conversation transcript is owned by the
        client.
      requestBody:
        description: >-
          Completion request with the agent reference, conversation, and prior
          state.
        content:
          application/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/TextChatCompletionRequest'
              description: >-
                Stateless text-chat completion request. Carries the full
                conversation history (client-owned)

                plus the encrypted server-issued
                DashaAI.BlackBox.AgentAPI.TextChat.Dtos.TextChatCompletionRequest.State
                from the previous turn.
          text/json:
            schema:
              allOf:
                - $ref: '#/components/schemas/TextChatCompletionRequest'
              description: >-
                Stateless text-chat completion request. Carries the full
                conversation history (client-owned)

                plus the encrypted server-issued
                DashaAI.BlackBox.AgentAPI.TextChat.Dtos.TextChatCompletionRequest.State
                from the previous turn.
          application/*+json:
            schema:
              allOf:
                - $ref: '#/components/schemas/TextChatCompletionRequest'
              description: >-
                Stateless text-chat completion request. Carries the full
                conversation history (client-owned)

                plus the encrypted server-issued
                DashaAI.BlackBox.AgentAPI.TextChat.Dtos.TextChatCompletionRequest.State
                from the previous turn.
      responses:
        '200':
          description: Completion succeeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TextChatCompletionResponse'
        '400':
          description: >-
            Request validation failed (bad state, malformed agent reference,
            etc.).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TextChatErrorDto'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '404':
          description: Agent referenced by id was not found for the organization.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TextChatErrorDto'
        '502':
          description: The upstream LLM provider or a tool returned an error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TextChatErrorDto'
components:
  schemas:
    TextChatCompletionRequest:
      required:
        - agent
        - messages
      type: object
      properties:
        agent:
          allOf:
            - $ref: '#/components/schemas/AgentRefDto'
          description: Agent to drive the completion — by id or by inline config.
        messages:
          type: array
          items:
            $ref: '#/components/schemas/ChatMessageDto'
          description: >-
            Complete conversation history including the new user message at the
            end.

            Tool calls are bundled in the previous assistant turn(s).
        state:
          type: string
          description: >-
            Opaque encrypted state from the previous turn. Null/omitted on the
            first turn.
          nullable: true
        additional_data:
          type: object
          additionalProperties: {}
          description: >-
            Free-form variable bag merged into agent prompt template variables
            (e.g. `{{customerName}}`).

            Matches the project-wide `AdditionalData` convention.
          nullable: true
        finish:
          type: boolean
          description: >-
            Client/user signal to end the conversation. When true, this turn
            still produces an

            assistant reply (if any) and then runs the same finish pipeline as
            the agent's

            `finishTheConversation` built-in: post-call analysis + completion
            webhook +

            persistence + audit events.
          nullable: true
      additionalProperties: false
      description: >-
        Stateless text-chat completion request. Carries the full conversation
        history (client-owned)

        plus the encrypted server-issued
        DashaAI.BlackBox.AgentAPI.TextChat.Dtos.TextChatCompletionRequest.State
        from the previous turn.
    TextChatCompletionResponse:
      type: object
      properties:
        messages:
          type: array
          items:
            $ref: '#/components/schemas/ChatMessageDto'
          description: >-
            New messages produced during this turn. Ordered: any assistant
            tool-turns first (each bundling

            its tool calls with their executed responses), followed by the final
            plain-text assistant reply.
          nullable: true
        state:
          type: string
          description: Opaque encrypted state to carry forward to the next turn.
          nullable: true
        is_final:
          type: boolean
          description: >-
            True when the agent has signalled end-of-conversation (e.g.
            finishTheConversation).
        chat_id:
          type: string
          description: >-
            Server-issued correlation id. Stable across turns. Surfaced for
            logging.
          nullable: true
        call_id:
          type: string
          description: >-
            Internal Blackbox call id for this conversation. Stable across
            turns. Referenced in

            completion webhooks, the persisted call result, and audit events.
          nullable: true
      additionalProperties: false
      description: Result of a single stateless text-chat completion turn.
    TextChatErrorDto:
      type: object
      properties:
        code:
          type: string
          description: >-
            Stable machine-readable error code. See
            DashaAI.BlackBox.AgentAPI.TextChat.Dtos.TextChatErrorCodes.
          nullable: true
        message:
          type: string
          description: Human-readable error message. Safe to surface to API consumers.
          nullable: true
        details:
          type: object
          additionalProperties: {}
          description: >-
            Optional structured details bag for debugging. Never contains
            secrets.
          nullable: true
      additionalProperties: false
      description: Typed error envelope returned on failure of a text-chat completion call.
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    AgentRefDto:
      type: object
      properties:
        id:
          type: string
          description: >-
            Reference id of an existing agent owned by the calling organization.
            Set this OR
            DashaAI.BlackBox.AgentAPI.TextChat.Dtos.AgentRefDto.Config, not
            both.
          nullable: true
        config:
          allOf:
            - $ref: '#/components/schemas/AgentConfigDto'
          description: >-
            Complete configuration defining how the agent behaves during
            conversations. Includes voice synthesis settings, language model
            configuration, speech recognition, outbound calling capabilities,
            event notifications, advanced features, external service
            connections, and available tools. This is the core configuration
            that controls all aspects of agent behavior and capabilities.
          nullable: true
      additionalProperties: false
      description: >-
        Reference to the agent driving a text-chat completion — either an id of
        an existing agent

        or a full DashaAI.BlackBox.DataAccess.DTOs.Agent.AgentConfigDto snapshot
        supplied inline (useful for testing).

        Exactly one of DashaAI.BlackBox.AgentAPI.TextChat.Dtos.AgentRefDto.Id
        and DashaAI.BlackBox.AgentAPI.TextChat.Dtos.AgentRefDto.Config must be
        set.
    ChatMessageDto:
      type: object
      properties:
        role:
          type: string
          description: One of "user", "assistant", "system".
          nullable: true
        content:
          type: string
          description: >-
            Plain-text message content. Null when the assistant message only
            contains tool calls.
          nullable: true
        tool_calls:
          type: array
          items:
            $ref: '#/components/schemas/ChatToolCallDto'
          description: >-
            Tool calls produced by the assistant this turn, bundled with their
            responses.
          nullable: true
        time:
          type: string
          description: >-
            Real wall-clock time of the message. The server stamps the messages
            it produces and

            echoes back any client-supplied value; it is used verbatim for the
            call transcript /

            post-call analysis instead of a synthesized clock. One timestamp per
            chat message is

            enough — chat messages are point-in-time events, unlike voice
            utterances. Optional.
          format: date-time
          nullable: true
      additionalProperties: false
      description: >-
        Wire-format text-chat message. Supports user / assistant / system roles.

        Tool invocations are bundled — a single assistant message carries the
        tool call(s)

        alongside their executed response(s) via
        DashaAI.BlackBox.AgentAPI.TextChat.Dtos.ChatMessageDto.ToolCalls.
    AgentConfigDto:
      required:
        - llmConfig
        - primaryLanguage
        - ttsConfig
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        primaryLanguage:
          minLength: 1
          type: string
          description: >-
            Primary language for the agent's conversations. Uses language codes
            like "en-US", "es-ES", "fr-FR". This determines the default language
            for speech synthesis and recognition.
        ttsConfig:
          allOf:
            - $ref: '#/components/schemas/TtsConfig'
          description: >-
            Text-to-speech configuration controlling how the agent's voice
            sounds. Includes voice provider selection, voice ID, speed,
            stability, and pronunciation dictionary settings. Defines the
            agent's vocal characteristics during conversations.
        llmConfig:
          allOf:
            - $ref: '#/components/schemas/LlmConfig'
          description: >-
            Language model configuration defining the agent's intelligence and
            conversation behavior. Includes model selection, system prompts,
            temperature, token limits, and conversation flow settings. Controls
            how the agent understands and responds to user input.
        sttConfig:
          allOf:
            - $ref: '#/components/schemas/SttConfig'
          description: >-
            Speech-to-text configuration for converting user speech to text.
            Includes provider selection and recognition settings. Controls how
            the agent understands spoken input from users.
          default:
            version: v1
            vendor: Auto
            vendorSpecificOptions: {}
          nullable: true
        outboundSipConfig:
          oneOf:
            - $ref: '#/components/schemas/OutboundSipConfig'
            - $ref: '#/components/schemas/OutboundSipConfigV2'
          description: >-
            SIP configuration for making outbound calls. Includes phone number
            selection and trunk credentials. Required when the agent needs to
            initiate calls to phone numbers.
          default: null
          nullable: true
        resultWebhook:
          allOf:
            - $ref: '#/components/schemas/WebHook'
          description: >-
            Webhook URL to receive call results when conversations complete. The
            system will send a POST request with conversation outcome,
            transcript, and metadata to this URL.
          default: null
          nullable: true
        features:
          allOf:
            - $ref: '#/components/schemas/AgentFeatures'
          description: >-
            Advanced features for the agent including RAG (knowledge base
            retrieval), call transfers (warm or cold), ambient background
            sounds, interruption handling, and recording options. Enables
            specialized agent capabilities beyond basic conversation.
          default:
            version: v1
            postCallAnalysis: []
            talkFirst:
              version: v1
              delay: 1
              isEnabled: false
              interruptible: true
            maxDuration:
              version: v1
              maxDurationSeconds: 3600
              maxDurationInTransferSeconds: 7200
              isEnabled: true
            ivrDetection:
              version: v1
              isEnabled: true
              enabledForChat: false
              enabledForInbound: false
              enabledForOutbound: true
              enabledForWebCall: false
              ivrNavigation: false
            ambientNoise:
              version: v1
              isEnabled: false
              ambientNoiseLevel: 0.1
            languageSwitching:
              version: v1
              isEnabled: true
            fillers:
              version: v1
              isEnabled: true
              strategy:
                type: static
                texts:
                  - um
            backchannel:
              version: v1
              isEnabled: false
            turnTaking:
              version: v1
              vad: asap_v1
            silenceManagement:
              version: v1
              isEnabled: true
              maxReminderAttempts: 2
              reminderSilenceThresholdSeconds: 5
              endWhenReminderLimitExceeded: true
            preConversationMedia:
              version: v1
              isEnabled: false
              enabledForInbound: false
              enabledForOutbound: false
              enabledForWebCall: false
            noiseSuppression:
              version: v1
              isEnabled: false
              type: none
              noiseSuppressionLevel: 75
              recordWriteStrategy: raw
          nullable: true
        mcpConnections:
          type: array
          items:
            $ref: '#/components/schemas/McpConnection'
          description: >-
            Model Context Protocol connections for integrating external
            services. Allows the agent to connect to MCP servers via SSE or HTTP
            to access external tools and data sources.
          default: []
          nullable: true
        startWebhook:
          allOf:
            - $ref: '#/components/schemas/StartWebhook'
          description: >-
            Webhook URL called when a call starts, before the conversation
            begins. Allows you to inject dynamic data or configuration at call
            initiation time.
          default: null
          nullable: true
        tools:
          type: array
          items:
            $ref: '#/components/schemas/LlmTool'
          description: >-
            Custom tools available to the agent during conversations. Each tool
            defines a function the agent can call with parameters and expected
            output. The agent will use these tools when needed to accomplish
            tasks beyond conversation.
          default: []
          nullable: true
        builtInTools:
          type: array
          items:
            $ref: '#/components/schemas/BuiltInToolConfig'
          description: >-
            Built-in tools configuration with additional instructions for when
            and how to use them. Currently includes "finishTheConversation" tool
            with custom instructions that guide the agent on when to end calls
            gracefully. These are pre-defined system tools with configurable
            usage instructions.
          default: []
          nullable: true
      additionalProperties: false
      description: >-
        Complete configuration defining how the agent behaves during
        conversations. Includes voice synthesis settings, language model
        configuration, speech recognition, outbound calling capabilities, event
        notifications, advanced features, external service connections, and
        available tools. This is the core configuration that controls all
        aspects of agent behavior and capabilities.
    ChatToolCallDto:
      type: object
      properties:
        id:
          type: string
          description: >-
            Tool call identifier propagated through the OpenAI round-trip.
            Required.
          nullable: true
        name:
          type: string
          description: >-
            Tool name as registered with the agent (built-in, agent-defined
            function, or MCP).
          nullable: true
        arguments:
          description: >-
            Tool arguments emitted by the LLM, as a JSON object. May be omitted
            for tools with no parameters.
        response:
          description: >-
            Tool response. Set after the server executes the tool. Null while
            the request is still in flight

            (only happens internally — wire-format messages from the client
            always include the response).
          nullable: true
      additionalProperties: false
      description: >-
        Combined tool call: the LLM-generated request and the executed response
        in a single object.

        Wire-format choice — internally the orchestrator translates to OpenAI's
        split assistant/tool format.
    TtsConfig:
      required:
        - vendor
        - voiceId
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        voiceId:
          minLength: 1
          type: string
          description: >-
            Voice identifier from the selected vendor. Specifies which voice the
            agent uses for speech synthesis. Each vendor has different voice IDs
            representing distinct voice characteristics like gender, accent, and
            speaking style.
        vendor:
          minLength: 1
          type: string
          description: >-
            Text-to-speech vendor providing the voice synthesis service.
            Identifies which TTS provider to use such as ElevenLabs, Cartesia,
            Dasha, Inworld, Lmnt, or Google. Different vendors offer different
            voice qualities, latency characteristics, and pricing.
        model:
          type: string
          description: >-
            TTS model identifier for vendors that support multiple model
            versions. Allows selecting specific synthesis models or quality
            tiers when available from the vendor.
          default: null
          nullable: true
        speed:
          type: number
          description: >-
            Speech speed multiplier controlling how fast the agent speaks.
            Values above 1.0 increase speaking rate, values below 1.0 decrease
            it. Affects the overall pace of conversation and can be adjusted to
            match user preferences or content requirements.
          format: double
          default: 1
          nullable: true
        speedAdjustment:
          allOf:
            - $ref: '#/components/schemas/SpeedAdjustmentSettings'
          description: >-
            Speed adjustment settings controlling whether users can request the
            agent to speak faster or slower during conversations. Allows dynamic
            speed changes based on user feedback.
          default:
            version: v1
            strategy: OnRequest
          nullable: true
        vendorSpecificOptions:
          type: object
          additionalProperties: {}
          description: >-
            Vendor-specific TTS options that are unique to particular speech
            synthesis providers. Allows passing custom parameters for advanced
            voice configuration that isn't covered by standard settings.
          nullable: true
        responsiveness:
          maximum: 1
          minimum: 0
          type: number
          description: >-
            Response timing control determining how quickly the agent begins
            speaking after the user finishes. Range is 0 to 1, where higher
            values make the agent respond faster and lower values add more
            deliberate pauses. Affects the conversational rhythm and turn-taking
            behavior.
          format: double
          default: null
          nullable: true
        pronunciationDictionary:
          allOf:
            - $ref: '#/components/schemas/PronunciationDictionaryReference'
          description: >-
            Reference to a pronunciation dictionary for customizing how specific
            words or phrases are pronounced. Allows correcting
            mispronunciations, defining custom pronunciations for brand names,
            or adjusting phonetic rendering for domain-specific terminology.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Text-to-speech configuration defining how the agent's voice sounds and
        behaves. Specifies the voice provider, voice selection, speaking speed,
        response timing, and pronunciation customization. Controls the agent's
        vocal characteristics and speaking patterns during conversations.
    LlmConfig:
      required:
        - model
        - prompt
        - vendor
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        model:
          minLength: 1
          type: string
          description: >-
            Language model identifier. Specifies which model to use from the
            configured vendor.
        vendor:
          minLength: 1
          type: string
          description: Model vendor or provider identifier.
        prompt:
          minLength: 1
          type: string
          description: >-
            System prompt that defines the agent's personality, role, and
            behavior instructions. This prompt guides how the agent responds and
            interacts during conversations. Can reference variables from
            AdditionalData using {{variableName}} syntax.
        apiKey:
          type: string
          description: >-
            API key for authenticating with the language model provider. Used to
            authorize requests to the vendor's API.
          default: null
          nullable: true
        endpoint:
          type: string
          description: >-
            Custom API endpoint URL for the language model. Use when connecting
            to self-hosted models or alternative API gateways instead of the
            default vendor endpoint.
          default: null
          nullable: true
        options:
          allOf:
            - $ref: '#/components/schemas/LlmOptions'
          description: >-
            Advanced language model parameters including temperature, max
            tokens, top P, frequency/presence penalties, stop sequences,
            trailing prompt, reasoning mode, and retry settings. Controls the
            model's creativity, response length, and behavior characteristics.
          default: null
          nullable: true
        vendorSpecificOptions:
          type: object
          additionalProperties: {}
          description: >-
            Vendor-specific options and parameters that are unique to particular
            LLM providers. Allows passing custom configuration that isn't
            covered by standard options.
          nullable: true
        toolScopes:
          type: array
          items:
            type: string
          description: >-
            Tool scope restrictions for limiting which tools the language model
            can access. When specified, the model can only use tools matching
            these scope identifiers. If not specified, all configured tools are
            available.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Language model configuration defining the agent's intelligence and
        conversation behavior. Specifies which model to use, the system prompt,
        API credentials, and advanced options that control how the agent
        understands and responds to user input.
    SttConfig:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        vendor:
          allOf:
            - $ref: '#/components/schemas/SttVendor'
          description: >-
            Speech recognition vendor to use for transcribing user speech. Can
            be a specific provider like Deepgram or Microsoft, or Auto to let
            the system choose the best option automatically.
          default: Auto
        vendorSpecificOptions:
          type: object
          additionalProperties: {}
          description: >-
            Vendor-specific STT options that are unique to particular speech
            recognition providers. Allows passing custom parameters for advanced
            recognition configuration such as profanity filtering, punctuation,
            or language-specific settings.
          nullable: true
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/SttKeyword'
          description: >-
            List of keywords or phrases that the speech recognition should
            prioritize or recognize more accurately. Helps improve transcription
            accuracy for domain-specific terminology, product names, or
            technical jargon that may not be in standard dictionaries. Each
            keyword can have an optional weight to control recognition priority.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Speech-to-text configuration defining how the agent transcribes user
        speech into text. Specifies the speech recognition vendor, custom
        keywords for improved accuracy, and vendor-specific options. Controls
        the accuracy and behavior of speech recognition during conversations.
    OutboundSipConfig:
      required:
        - authUser
        - server
      type: object
      properties:
        type:
          enum:
            - v1
          type: string
          description: >-
            Configuration version type. Always "v1" for inline credentials
            configuration.
          default: v1
          nullable: true
          readOnly: true
        server:
          minLength: 1
          type: string
          description: >-
            SIP server hostname or IP address with optional port as defined in
            RFC 3261. Format is hostname:port (e.g., "sip.example.com:5060").
        authUser:
          minLength: 1
          type: string
          description: >-
            Authentication user identifier as defined in RFC 3261. Different
            providers may call this "username", "account", "user ID", or other
            names depending on the SIP provider.
        domain:
          type: string
          description: >-
            SIP domain for authentication realm as defined in RFC 3261. Used in
            SIP authentication challenges.
          default: null
          nullable: true
        password:
          type: string
          description: >-
            Password for SIP authentication as defined in RFC 3261. Used for
            authenticating outbound calls.
          default: null
          nullable: true
        fromUser:
          type: string
          description: >-
            From header user portion for outbound calls. Determines what user
            identifier appears in the SIP From header when making calls.
          default: null
          nullable: true
        transport:
          allOf:
            - $ref: '#/components/schemas/TransportProtocol'
          description: >-
            Transport protocol for SIP communication. Supported values are UDP
            (default), TCP, or TLS for encrypted connections.
          default: udp
          nullable: true
        cpsLimit:
          type: integer
          description: >-
            Calls per second limit for rate limiting outbound calls. Prevents
            exceeding provider rate limits.
          format: int32
          default: null
          nullable: true
        cpsKey:
          type: string
          description: >-
            Calls per second rate limiting key. Used to group multiple
            configurations under the same rate limit when specified.
          default: null
          nullable: true
        displayName:
          type: string
          description: >-
            Display name for caller ID. Appears in the From header display name
            when making outbound calls.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Outbound SIP configuration V1 with inline credentials. Contains complete
        SIP trunk settings including server address, authentication credentials,
        and transport settings as defined in RFC 3261.
    OutboundSipConfigV2:
      required:
        - phoneNumbers
        - type
      type: object
      properties:
        type:
          minLength: 1
          enum:
            - v2
          type: string
          description: >-
            Configuration version type. Always "v2" for phone number reference
            configuration.
          readOnly: true
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/OutboundSipPhoneNumber'
          description: >-
            List of phone number references for outbound calling. Currently
            supports only one phone number in the list. Each reference points to
            a configured SIP phone number that contains the trunk credentials
            and settings.
      additionalProperties: false
      description: >-
        Outbound SIP configuration V2 that references phone numbers instead of
        containing inline credentials. References phone numbers configured via
        the SIP phone numbers API, which contain the actual trunk credentials
        and settings. This configuration is resolved to V1 format at runtime by
        looking up the phone number details.
    WebHook:
      required:
        - url
      type: object
      properties:
        url:
          type: string
          description: >-
            Webhook endpoint URL to send HTTP requests to. The system will POST
            data to this URL when the webhook is triggered.
          format: uri
        headers:
          type: object
          additionalProperties:
            type: string
          description: >-
            Custom HTTP headers to include with webhook requests. Useful for
            authentication, API keys, or passing additional metadata to the
            receiving endpoint.
          nullable: true
        customSettings:
          allOf:
            - $ref: '#/components/schemas/CustomWebhookSettings'
          description: >-
            Custom webhook request settings including HTTP method, query
            parameters, and body format configuration. Allows full control over
            how the webhook request is constructed and sent.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Webhook configuration for HTTP callbacks. Defines the URL endpoint to
        call, custom HTTP headers, and request customization settings for
        sending event data or tool invocations to external systems.
    AgentFeatures:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Feature configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        transfer:
          oneOf:
            - $ref: '#/components/schemas/ColdTransfer'
            - $ref: '#/components/schemas/HttpTransfer'
            - $ref: '#/components/schemas/WarmTransfer'
          description: >-
            Call transfer configuration. Supports warm transfer (agent stays on
            call), cold transfer (agent hangs up), or HTTP transfer (external
            API handles transfer). Enables the agent to transfer calls to other
            numbers or systems.
          default: null
          nullable: true
        postCallAnalysis:
          type: array
          items:
            $ref: '#/components/schemas/PostCallAnalysis'
          description: >-
            Post-call analysis configurations for extracting insights after
            conversations complete. Multiple analysis tasks can be configured to
            process transcripts and generate structured data.
          default: []
          nullable: true
        talkFirst:
          allOf:
            - $ref: '#/components/schemas/TalkFirst'
          description: >-
            Controls whether the agent speaks first when the call connects. When
            enabled, the agent greets the user immediately rather than waiting
            for the user to speak first.
          default:
            version: v1
            delay: 1
            isEnabled: false
            interruptible: true
          nullable: true
        maxDuration:
          allOf:
            - $ref: '#/components/schemas/MaxDuration'
          description: >-
            Maximum duration limit for conversations. The call will be
            automatically ended if it exceeds the configured time limit.
          default:
            version: v1
            maxDurationSeconds: 3600
            maxDurationInTransferSeconds: 7200
            isEnabled: true
          nullable: true
        ivrDetection:
          allOf:
            - $ref: '#/components/schemas/IvrDetection'
          description: >-
            IVR (Interactive Voice Response) detection for identifying automated
            phone systems. Helps the agent recognize and respond appropriately
            to menu prompts and automated messages.
          default:
            version: v1
            isEnabled: true
            enabledForChat: false
            enabledForInbound: false
            enabledForOutbound: true
            enabledForWebCall: false
            ivrNavigation: false
          nullable: true
        ambientNoise:
          allOf:
            - $ref: '#/components/schemas/AmbientNoise'
          description: >-
            Ambient background noise configuration. Adds realistic background
            sounds like cafe ambiance or office noise to make the agent sound
            more natural and human-like.
          default:
            version: v1
            isEnabled: false
            ambientNoiseLevel: 0.1
          nullable: true
        rag:
          allOf:
            - $ref: '#/components/schemas/RAGFeature'
          description: >-
            RAG (Retrieval-Augmented Generation) feature for knowledge base
            integration. Enables the agent to search and retrieve information
            from connected knowledge bases during conversations.
          default: null
          nullable: true
        languageSwitching:
          allOf:
            - $ref: '#/components/schemas/LanguageSwitchingFeature'
          description: >-
            Language switching capability allowing the agent to switch between
            multiple languages during the call. Enables the agent to communicate
            in different languages within the same conversation.
          default:
            version: v1
            isEnabled: true
          nullable: true
        fillers:
          allOf:
            - $ref: '#/components/schemas/FillerConfig'
          description: >-
            Filler words and phrases configuration. Controls natural speech
            patterns like "um", "uh", "let me see" to make the agent sound more
            conversational and human-like.
          default:
            version: v1
            isEnabled: true
            strategy:
              type: static
              texts:
                - um
          nullable: true
        backchannel:
          allOf:
            - $ref: '#/components/schemas/Backchannel'
          description: >-
            Backchannel responses configuration. Controls brief acknowledgments
            like "mm-hmm", "I see", "right" that the agent uses while listening
            to show active engagement.
          default:
            version: v1
            isEnabled: false
          nullable: true
        turnTaking:
          allOf:
            - $ref: '#/components/schemas/TurnTaking'
          description: >-
            Turn taking configuration for the main customer call. Controls which
            DashaScript VAD mode is passed to the initial connect operation.
          default:
            version: v1
            vad: asap_v1
          nullable: true
        silenceManagement:
          allOf:
            - $ref: '#/components/schemas/SilenceManagement'
          description: >-
            Silence management configuration. Controls how the agent handles
            pauses and silence during conversations including timeout behavior
            and prompting strategies.
          default:
            version: v1
            isEnabled: true
            maxReminderAttempts: 2
            reminderSilenceThresholdSeconds: 5
            endWhenReminderLimitExceeded: true
          nullable: true
        preConversationMedia:
          allOf:
            - $ref: '#/components/schemas/PreConversationMedia'
          description: >-
            Pre-conversation media playback. Plays an audio file immediately
            when the call connects,

            before the conversation begins. The media plays once and is
            non-interruptible.

            Can be enabled independently for inbound, outbound, and web calls.
          default:
            version: v1
            isEnabled: false
            enabledForInbound: false
            enabledForOutbound: false
            enabledForWebCall: false
          nullable: true
        noiseSuppression:
          allOf:
            - $ref: '#/components/schemas/NoiseSuppression'
          description: >-
            Noise suppression configuration for filtering background noise from
            call audio.

            Supports "none" (disabled) or "krisp" (Krisp engine, additional fee
            applies).

            Also controls the noise suppression level and recording write
            strategy.
          default:
            version: v1
            isEnabled: false
            type: none
            noiseSuppressionLevel: 75
            recordWriteStrategy: raw
          nullable: true
      additionalProperties: false
      description: >-
        Advanced features configuration for the agent. Controls specialized
        capabilities including call transfers, knowledge base retrieval, ambient
        sounds, conversation management, language switching, and post-call
        analysis.
    McpConnection:
      required:
        - name
        - serverUrl
      type: object
      properties:
        name:
          minLength: 1
          type: string
          description: >-
            Display name for this MCP connection. Used to identify the
            connection in logs and configuration.
        serverUrl:
          type: string
          description: >-
            MCP server URL to connect to. The URL format depends on the
            transport protocol (SSE uses HTTP/HTTPS endpoints, StreamableHTTP
            uses HTTP endpoints).
          format: uri
        authentication:
          oneOf:
            - $ref: '#/components/schemas/ApiKeyAuthentication'
            - $ref: '#/components/schemas/BearerAuthentication'
            - $ref: '#/components/schemas/NoAuthentication'
          description: >-
            Authentication configuration for the MCP server. Supported types
            include none, API key, bearer token, and custom authentication
            schemes.
          default: null
          nullable: true
        customHeaders:
          type: object
          additionalProperties:
            type: string
          description: >-
            Custom HTTP headers to include with each request to the MCP server.
            Useful for passing additional metadata or configuration to the
            server.
          nullable: true
        isEnabled:
          type: boolean
          description: >-
            Whether this MCP connection is enabled. When disabled, the agent
            will not connect to this MCP server or use its tools.
          default: true
          nullable: true
        description:
          type: string
          description: >-
            Optional description explaining the purpose of this MCP connection
            or what services it provides.
          default: null
          nullable: true
        transport:
          allOf:
            - $ref: '#/components/schemas/McpConnectionTransport'
          description: >-
            Transport protocol for MCP communication. Supported values are SSE
            (Server-Sent Events for persistent connections) and StreamableHTTP
            (for request-response patterns).
          default: SSE
          nullable: true
        blackListTools:
          type: array
          items:
            type: string
          description: >-
            List of tool names to exclude from this MCP connection. Tools in
            this list will not be available to the agent even if the MCP server
            provides them. Useful for restricting access to specific tools.
          default: null
          nullable: true
        whiteListTools:
          type: array
          items:
            type: string
          description: >-
            List of tool names to allow from this MCP connection. When
            specified, only tools in this list will be available to the agent.
            If not specified, all tools from the server are available (subject
            to BlackListTools).
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Model Context Protocol connection configuration for integrating external
        services with the agent. Defines how to connect to an MCP server
        including server URL, authentication, transport protocol, custom
        headers, and tool filtering.
    StartWebhook:
      required:
        - webhook
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        webhook:
          allOf:
            - $ref: '#/components/schemas/WebHook'
          description: >-
            Webhook configuration defining the endpoint, headers, and request
            settings for start-of-conversation notifications. The system sends
            conversation initiation data to this webhook and waits for a
            response.
        fallbackResponse:
          oneOf:
            - $ref: '#/components/schemas/StartWebHookResponseAccept'
            - $ref: '#/components/schemas/StartWebHookResponseReject'
          description: >-
            Fallback response to use when the webhook call fails or times out.
            Determines whether to accept or reject the conversation if the
            webhook endpoint is unavailable or returns an error. Can be
            configured to accept the call with default settings or reject it.
          default:
            accept: false
            reasonMessage: Webhook for started webhook failed
          nullable: true
        isEnabledForInbound:
          type: boolean
          description: >-
            Enables the start webhook for inbound phone calls. When enabled, the
            webhook is triggered when someone calls one of your configured phone
            numbers, allowing you to accept or reject incoming calls based on
            external logic.
          default: false
          nullable: true
        isEnabledForOutbound:
          type: boolean
          description: >-
            Enables the start webhook for outbound phone calls. When enabled,
            the webhook is triggered before making an outbound call, allowing
            you to modify call parameters or cancel the call based on external
            conditions.
          default: false
          nullable: true
        isEnabledForWidget:
          type: boolean
          description: >-
            Enables the start webhook for widget-based conversations. When
            enabled, the webhook is triggered when a user initiates a
            conversation through your web widget, allowing you to accept or
            reject widget interactions.
          default: false
          nullable: true
        timeout:
          type: number
          description: >-
            Maximum time in seconds to wait for the webhook response. If the
            webhook doesn't respond within this time, the fallback response is
            used. Controls how long the system waits before proceeding with or
            rejecting the conversation.
          format: double
          default: 10
          nullable: true
      additionalProperties: false
      description: >-
        Webhook triggered at the start of a conversation or call. Sends a
        notification to external systems when a new interaction begins, allowing
        them to accept or reject the call, modify conversation parameters, or
        perform initialization logic. Supports inbound calls, outbound calls,
        and widget-based conversations.
    LlmTool:
      required:
        - description
        - name
        - schema
        - webhook
      type: object
      properties:
        name:
          minLength: 1
          type: string
          description: >-
            Tool name identifier. Used by the language model to reference this
            tool when deciding which function to call.
        schema:
          type: object
          additionalProperties: {}
          description: >-
            JSON Schema defining the tool's input parameters. Describes what
            arguments the tool accepts, their types, and which parameters are
            required. The language model uses this schema to generate valid
            function calls.
        webhook:
          allOf:
            - $ref: '#/components/schemas/WebHook'
          description: >-
            Webhook endpoint to call when the tool is invoked. The system sends
            a POST request with the tool parameters to this URL and returns the
            response to the language model.
        description:
          minLength: 1
          type: string
          description: >-
            Tool description explaining what the tool does and when to use it.
            The language model uses this description to decide whether this tool
            is appropriate for the current conversation context.
        fallBackResult:
          description: >-
            Fallback result to return if the webhook call fails. When specified,
            the agent continues the conversation using this result instead of
            reporting an error to the user.
          default: null
          nullable: true
        timeoutSeconds:
          type: integer
          description: >-
            Maximum time in seconds to wait for the webhook response. If the
            webhook doesn't respond within this time, the call is considered
            failed and the fallback result is used if available.
          format: int32
          default: null
          nullable: true
        retryCount:
          type: integer
          description: >-
            Number of retry attempts if the webhook call fails. Helps handle
            transient network errors or temporary service unavailability.
          format: int32
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Custom tool definition for language model function calling. Describes a
        function that the agent can invoke during conversations to perform
        actions or retrieve information through webhook calls.
    BuiltInToolConfig:
      required:
        - name
      type: object
      properties:
        name:
          minLength: 1
          type: string
          description: >-
            Built-in tool name. Currently supported tool is
            "finishTheConversation" for ending calls gracefully.
        additionalInstructions:
          type: string
          description: >-
            Additional instructions for when and how to use this tool. Guides
            the agent on the appropriate circumstances to invoke the tool during
            conversations.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Configuration for a built-in tool with custom usage instructions.
        Built-in tools are pre-defined system tools that don't require custom
        implementation, and this configuration allows you to specify when and
        how the agent should use them.
    SpeedAdjustmentSettings:
      required:
        - strategy
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        strategy:
          allOf:
            - $ref: '#/components/schemas/SpeedAdjustment'
          description: >-
            Speed adjustment strategy determining when and how the agent can
            change its speaking rate. Controls whether speed adjustments are
            disabled entirely or enabled on user request.
      additionalProperties: false
      description: >-
        Speech speed adjustment configuration controlling whether the agent can
        change its speaking rate during conversations. Determines if users can
        request the agent to speak faster or slower to match their comprehension
        preferences.
    PronunciationDictionaryReference:
      required:
        - hash
        - id
      type: object
      properties:
        id:
          minLength: 1
          type: string
          description: >-
            Unique identifier of the pronunciation dictionary to use. References
            a dictionary that has been created and uploaded to the system
            containing custom phonetic rules and pronunciation mappings.
        hash:
          minLength: 1
          type: string
          description: >-
            Content hash of the pronunciation dictionary for version tracking
            and cache invalidation. Ensures the correct version of the
            dictionary is applied and allows detecting when dictionary content
            has been updated.
      additionalProperties: false
      description: >-
        Reference to a pronunciation dictionary for customizing text-to-speech
        phonetic rendering. Links to a dictionary that defines custom
        pronunciations for specific words, brand names, technical terms, or
        proper nouns. Helps correct TTS mispronunciations and ensure consistent
        pronunciation of domain-specific vocabulary. The hash enables version
        tracking to detect when dictionary content changes.
    LlmOptions:
      type: object
      properties:
        temperature:
          type: number
          description: >-
            Temperature controls randomness in responses. Higher values (e.g.,
            0.8-1.0) make output more creative and varied, while lower values
            (e.g., 0.1-0.3) make it more focused and deterministic. Range is
            typically 0.0 to 2.0.
          format: double
          default: null
          nullable: true
        maxTokens:
          type: integer
          description: >-
            Maximum number of tokens the model can generate in a response.
            Limits the length of the agent's replies to control costs and
            response times.
          format: int32
          default: null
          nullable: true
        topP:
          type: number
          description: >-
            Top P (nucleus sampling) controls diversity by considering only the
            most probable tokens whose cumulative probability reaches this
            threshold. Range is 0.0 to 1.0, where lower values make responses
            more focused.
          format: double
          default: null
          nullable: true
        frequencyPenalty:
          type: number
          description: >-
            Frequency penalty reduces repetition of tokens based on how often
            they've appeared in the response. Higher values (e.g., 0.5-1.0)
            discourage repetition more strongly. Range is typically -2.0 to 2.0.
          format: double
          default: null
          nullable: true
        presencePenalty:
          type: number
          description: >-
            Presence penalty reduces repetition by penalizing tokens that have
            already appeared, regardless of frequency. Encourages the model to
            discuss new topics. Range is typically -2.0 to 2.0.
          format: double
          default: null
          nullable: true
        stop:
          type: array
          items:
            type: string
          description: >-
            Stop sequences that cause the model to stop generating tokens. When
            the model encounters any of these strings, it will immediately stop
            generating further output.
          default: null
          nullable: true
        trailingPrompt:
          type: string
          description: >-
            Trailing prompt appended to the conversation context before the
            model generates a response. Useful for providing last-minute
            instructions or context.
          default: null
          nullable: true
        reasoningMode:
          type: string
          description: >-
            Reasoning mode for models that support structured thinking. Controls
            how the model approaches problem-solving and response generation.
          default: null
          nullable: true
        maxRetries:
          type: integer
          description: >-
            Maximum number of retry attempts when API calls fail. Helps handle
            transient errors and rate limiting.
          format: int32
          default: null
          nullable: true
        reasoningEffort:
          type: string
          description: >-
            Reasoning effort level for models that support configurable thinking
            depth. Controls how much computational effort the model applies to
            reasoning through complex problems.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Advanced language model parameters controlling response generation
        behavior. These options fine-tune how the model produces text including
        creativity, randomness, repetition avoidance, and token limits.
    SttVendor:
      enum:
        - Deepgram
        - Microsoft
        - Auto
      type: string
      description: >-
        Speech-to-text vendor providing the speech recognition service.
        Identifies which STT provider to use for transcribing user speech into
        text. Different vendors offer varying accuracy, language support, and
        latency characteristics.
    SttKeyword:
      required:
        - keyword
      type: object
      properties:
        keyword:
          minLength: 1
          type: string
          description: >-
            Word or phrase to prioritize during speech recognition. The STT
            engine gives preference to recognizing this keyword when
            transcribing user speech, improving accuracy for domain-specific
            vocabulary.
        weight:
          type: number
          description: >-
            Optional weight controlling how strongly the keyword should be
            prioritized. Higher weights increase the likelihood of the keyword
            being recognized over similar-sounding alternatives. When not
            specified, a default prioritization is applied.
          format: double
          nullable: true
      additionalProperties: false
      description: >-
        Speech recognition keyword hint for improving transcription accuracy of
        specific words or phrases. Tells the STT engine to prioritize
        recognition of domain-specific terminology, product names, technical
        jargon, or proper nouns that may not be in standard dictionaries. Helps
        reduce misrecognition of important context-specific vocabulary.
    TransportProtocol:
      enum:
        - udp
        - tcp
        - tls
      type: string
      description: >-
        Transport protocol for SIP communication. Defines how SIP messages are
        transmitted over the network.
    OutboundSipPhoneNumber:
      required:
        - phoneNumberId
      type: object
      properties:
        phoneNumberId:
          type: string
          description: >-
            Unique identifier of the SIP phone number configuration to use for
            outbound calls. References a phone number configured via the SIP
            phone numbers API.
          format: uuid
      additionalProperties: false
      description: >-
        Reference to a configured SIP phone number. Contains the phone number ID
        that points to the full phone number configuration including trunk
        credentials.
    CustomWebhookSettings:
      required:
        - httpMethod
      type: object
      properties:
        httpMethod:
          allOf:
            - $ref: '#/components/schemas/HttpMethod'
          description: >-
            HTTP method to use for the webhook request. Determines whether the
            request uses GET, POST, PUT, PATCH, or DELETE. POST is the most
            common choice for webhook notifications.
        queryParams:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
          description: >-
            Query string parameters to append to the webhook URL. Each parameter
            can have multiple values. These parameters are URL-encoded and added
            to the request URL as key=value pairs separated by ampersands.
          nullable: true
        bodyFormat:
          oneOf:
            - $ref: '#/components/schemas/BodyTextFormat'
            - $ref: '#/components/schemas/BodyJSONFormat'
            - $ref: '#/components/schemas/BodyFormFormat'
          description: >-
            Format configuration for the request body. Specifies how the webhook
            payload is encoded and what Content-Type header is sent. Supports
            JSON, plain text, and form-encoded formats for compatibility with
            different endpoint requirements.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Custom request settings for webhook HTTP calls. Allows full control over
        how webhook requests are constructed including the HTTP method, URL
        query parameters, and request body formatting. These settings enable
        integration with REST APIs and services that require specific request
        formats.
    ColdTransfer:
      allOf:
        - $ref: '#/components/schemas/TransferFeatureBase'
        - required:
            - endpointDestination
            - type
          type: object
          properties:
            type:
              enum:
                - cold
              type: string
              description: >-
                Call transfer type determining how the call is handed off to a
                human operator or different destination. Different transfer
                types control the handoff mechanism, agent involvement during
                transfer, and whether decisions are made dynamically via HTTP
                requests.
              readOnly: true
            endpointDestination:
              minLength: 1
              type: string
              description: >-
                Transfer destination phone number or SIP address. Supports E.164
                phone numbers like "+1234567890" or SIP URIs like
                "sip:1234567890@example.com". The call is redirected to this
                endpoint using SIP REFER when the transfer is initiated.
            transferRoutes:
              type: array
              items:
                $ref: '#/components/schemas/TransferRoute'
              description: >-
                Optional named transfer routes allowing the language model to
                choose between multiple destinations. Each route has a name,
                description, and list of endpoints. The model can select the
                appropriate route based on conversation context, enabling
                intelligent routing to different departments or specialists.
              default: null
              nullable: true
            holdMedia:
              allOf:
                - $ref: '#/components/schemas/HoldMediaConfig'
              description: >-
                Optional hold media configuration for playing audio during the
                transfer. When enabled, plays the specified media file on loop
                while the call is being transferred instead of using the agent's
                voice. Provides professional hold music or messages while the
                transfer completes.
              default: null
              nullable: true
          additionalProperties: false
      description: >-
        Cold transfer configuration using SIP REFER for immediate call handoff.
        The AI agent disconnects as soon as the transfer completes, connecting
        the user directly to the destination operator without remaining on the
        call. Uses the SIP REFER method according to RFC 3515 to instruct the
        SIP infrastructure to redirect the call. Suitable for simple handoffs
        where the agent doesn't need to provide context to the operator or
        remain involved in the conversation.
    HttpTransfer:
      allOf:
        - $ref: '#/components/schemas/TransferFeatureBase'
        - required:
            - type
            - webhook
          type: object
          properties:
            type:
              enum:
                - http
              type: string
              description: >-
                Call transfer type determining how the call is handed off to a
                human operator or different destination. Different transfer
                types control the handoff mechanism, agent involvement during
                transfer, and whether decisions are made dynamically via HTTP
                requests.
              readOnly: true
            webhook:
              allOf:
                - $ref: '#/components/schemas/WebHook'
              description: >-
                Webhook endpoint to call for transfer routing decisions. The
                system sends a POST request with conversation context and waits
                for a response specifying the transfer destination and type. The
                webhook should return a transfer decision in the response body
                indicating whether to perform a cold or warm transfer and to
                which endpoint.
            fallback:
              oneOf:
                - $ref: '#/components/schemas/ColdTransfer'
                - $ref: '#/components/schemas/WarmTransfer'
              description: >-
                Fallback transfer configuration to use if the webhook request
                fails, times out, or returns an error. Ensures calls can still
                be transferred even when the routing system is unavailable. Can
                specify either a cold or warm transfer as the fallback behavior.
              default: null
              nullable: true
          additionalProperties: false
      description: >-
        HTTP-based dynamic transfer configuration using webhook requests to
        determine routing. Sends a webhook POST request with the conversation
        context, allowing external systems to make intelligent routing decisions
        based on caller information, conversation content, or business logic.
        The webhook response specifies which transfer destination to use and
        whether to perform a cold or warm transfer. Enables advanced routing
        scenarios like skill-based routing, availability checking, or CRM
        integration for transfer decisions.
    WarmTransfer:
      allOf:
        - $ref: '#/components/schemas/TransferFeatureBase'
        - required:
            - endpointDestination
            - type
          type: object
          properties:
            type:
              enum:
                - warm
              type: string
              description: >-
                Call transfer type determining how the call is handed off to a
                human operator or different destination. Different transfer
                types control the handoff mechanism, agent involvement during
                transfer, and whether decisions are made dynamically via HTTP
                requests.
              readOnly: true
            sip:
              allOf:
                - $ref: '#/components/schemas/OptionalOutboundSipConfig'
              description: >-
                Optional SIP configuration override for placing the call to the
                operator. When specified, uses these SIP credentials instead of
                the agent's default outbound SIP settings for this specific
                transfer call.
              default: null
              nullable: true
            endpointDestination:
              minLength: 1
              type: string
              description: >-
                Operator destination phone number or SIP address. Supports E.164
                phone numbers like "+1234567890" or SIP URIs like
                "sip:operator@example.com". The agent calls this endpoint first
                before bridging with the user.
            interactionWithOperator:
              oneOf:
                - $ref: '#/components/schemas/SmartV1Behavior'
                - $ref: '#/components/schemas/StaticBehavior'
              description: >-
                Behavior controlling what the agent says to the operator when
                they answer. Can use static predefined phrases or smart
                AI-generated context based on the conversation. Allows providing
                the operator with relevant information about the caller's needs
                before connecting them.
              default: null
              nullable: true
            sayPhraseToCustomer:
              type: string
              description: >-
                Phrase to speak to the customer before bridging the call with
                the operator. Informs the user that they're being connected to a
                human agent. Can include reassurance or set expectations about
                the handoff.
              default: null
              nullable: true
            continueAfterOperatorDisconnected:
              type: boolean
              description: >-
                Controls whether the AI agent resumes the conversation if the
                operator disconnects or hangs up. When true, the agent continues
                talking to the user after the operator leaves. When false, the
                call ends when the operator disconnects.
              default: false
              nullable: true
            continueRecordingInTransfer:
              type: boolean
              default: true
              nullable: true
            transferRoutes:
              type: array
              items:
                $ref: '#/components/schemas/TransferRoute'
              default: null
              nullable: true
            operatorName:
              type: string
              default: null
              nullable: true
            continueRecognitionInTransfer:
              type: boolean
              default: false
              nullable: true
            callerIdMode:
              allOf:
                - $ref: '#/components/schemas/CallerIdMode'
              description: >-
                Determines which phone number is displayed to the transfer
                destination (human agent) during warm transfer.

                AgentPhoneNumber (default): Uses the AI agent's configured
                outbound SIP fromUser as the caller ID.

                UserPhoneNumber: Uses the user's phone number (job.endpoint) as
                the caller ID.

                When null, defaults to AgentPhoneNumber behavior.
              default: agentPhoneNumber
              nullable: true
            threewayMessaging:
              oneOf:
                - $ref: '#/components/schemas/ThreewaySmartV1Behavior'
                - $ref: '#/components/schemas/ThreewayStaticBehavior'
              description: >-
                Optional threeway messaging configuration.

                When configured, delivers a unified phrase to BOTH user and
                operator

                simultaneously before the bridge channel is executed.
              default: null
              nullable: true
            holdMedia:
              allOf:
                - $ref: '#/components/schemas/HoldMediaConfig'
              description: >-
                Optional hold media configuration for warm transfers.

                When enabled, plays media via media:// protocol instead of using
                the respond node

                to communicate with users during transfer.
              default: null
              nullable: true
          additionalProperties: false
      description: >-
        Warm transfer configuration for agent-assisted call handoff. The AI
        agent first calls the destination operator, can speak with them to
        provide context or a conversation summary, and then connects the user.
        Supports configurable behaviors for what the agent says to the operator
        and customer, three-way calling where the agent remains connected, and
        continuation of the conversation if the operator disconnects. Provides a
        more personalized handoff experience than cold transfers.
    PostCallAnalysis:
      required:
        - labels
        - name
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        name:
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z\-_][a-zA-Z0-9\-_]*$
          type: string
          description: >-
            Name identifier for this analysis configuration. Must start with a
            letter, hyphen, or underscore and contain only letters, numbers,
            hyphens, and underscores. Used to identify this analysis in the
            results.
        labels:
          type: array
          items:
            $ref: '#/components/schemas/PostCallAnalysisLabel'
          description: >-
            List of data fields to extract from the conversation transcript.
            Each label defines a piece of information to identify and extract,
            such as customer sentiment, appointment times, order numbers, or
            custom business outcomes. The language model analyzes the
            conversation and populates these labels based on the transcript
            content.
        isEnabled:
          type: boolean
          description: >-
            Enables or disables this post-call analysis. When enabled, the
            system performs the configured analysis after each call completes
            and includes results in the completion webhook payload.
          default: true
          nullable: true
      additionalProperties: false
      description: >-
        Post-call analysis configuration for automatically extracting structured
        data from conversation transcripts after calls complete. Defines labels
        and fields to extract using language model analysis of the conversation.
        Enables automated classification, sentiment analysis, information
        extraction, and business outcome tracking from completed calls. Results
        are included in the completed webhook payload for integration with CRM
        systems, analytics platforms, or business intelligence tools.
    TalkFirst:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        phrase:
          type: string
          description: >-
            Greeting phrase the agent should speak immediately when the call
            connects. This is spoken before the normal conversation flow begins,
            allowing the agent to introduce itself or provide an opening
            statement on outbound calls.
          default: null
          nullable: true
        delay:
          type: number
          description: >-
            Delay in seconds before speaking the greeting phrase. Allows time
            for the call connection to stabilize or for the user to say hello
            first if desired. The agent waits this duration after call
            connection before speaking the configured phrase.
          format: double
          default: 1
          nullable: true
        isEnabled:
          type: boolean
          description: >-
            Enables or disables the talk first feature. When enabled, the agent
            speaks the configured greeting phrase after the specified delay when
            the call connects.
          default: false
          nullable: true
        interruptible:
          type: boolean
          description: >-
            Controls whether the user can interrupt the greeting phrase. When
            true, the agent stops speaking the greeting if the user starts
            talking. When false, the agent completes the entire greeting phrase
            before listening for user input.
          default: true
          nullable: true
      additionalProperties: false
      description: >-
        Talk first feature for having the agent speak an initial greeting
        immediately when the call connects, before waiting for user input.
        Useful for outbound calls or situations where the agent should introduce
        itself proactively. The greeting can be delayed and configured to be
        interruptible by user speech.
    MaxDuration:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        maxDurationSeconds:
          type: integer
          description: >-
            Maximum duration in seconds for normal conversations before the call
            is automatically ended. Prevents calls from running indefinitely and
            helps control costs and resource usage.
          format: int32
          default: 3600
          nullable: true
        maxDurationInTransferSeconds:
          type: integer
          description: >-
            Maximum duration in seconds for conversations that have been
            transferred. Allows longer durations for transferred calls since
            they may involve more complex interactions or human operators. The
            call is automatically ended when this limit is exceeded during a
            transfer.
          format: int32
          default: 7200
          nullable: true
        isEnabled:
          type: boolean
          description: >-
            Enables or disables maximum duration enforcement. When enabled,
            calls are automatically terminated when they exceed the configured
            duration limits.
          default: true
          nullable: true
      additionalProperties: false
      description: >-
        Maximum duration limits for conversations to prevent excessively long
        calls. Automatically ends conversations that exceed the configured time
        limits, with separate thresholds for normal conversations and
        transferred calls. Useful for cost control, resource management, and
        preventing stuck calls.
    IvrDetection:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        isEnabled:
          type: boolean
          description: >-
            Master enable flag for IVR and answering machine detection. When
            enabled, the system attempts to detect whether calls are answered by
            humans or machines and behaves according to the configured settings.
          default: true
          nullable: true
        enabledForChat:
          type: boolean
          description: >-
            Enables answering machine detection for chat conversations. When
            enabled, the system attempts to detect automated chat responses or
            bot interactions.
          default: false
          nullable: true
        enabledForInbound:
          type: boolean
          description: >-
            Enables answering machine detection for inbound phone calls. When
            enabled, the system detects if the caller is a human or an automated
            system calling your phone numbers.
          default: false
          nullable: true
        enabledForOutbound:
          type: boolean
          description: >-
            Enables answering machine detection for outbound phone calls. When
            enabled, the system detects whether a human or voicemail/IVR system
            answered the call, allowing the agent to leave messages or navigate
            menus as configured.
          default: true
          nullable: true
        enabledForWebCall:
          type: boolean
          description: >-
            Enables answering machine detection for web-based voice calls. When
            enabled, the system detects automated responses in web call
            scenarios.
          default: false
          nullable: true
        ivrNavigation:
          type: boolean
          description: >-
            Enables IVR menu navigation using DTMF tone sending. When enabled,
            the agent attempts to navigate through automated phone menus by
            sending touch-tone digits before giving up on the call. Useful for
            reaching human operators through phone trees on outbound calls.
          default: false
          nullable: true
        experimental:
          type: object
          additionalProperties: {}
          description: Experimental features
          default: null
          nullable: true
        behavior:
          oneOf:
            - $ref: '#/components/schemas/SmartV1IvrDetectionBehavior'
            - $ref: '#/components/schemas/StaticIvrDetectionBehavior'
          description: >-
            Behavior configuration controlling what the agent says or does when
            an answering machine or IVR is detected. Static behaviors use
            predefined phrases, while smart behaviors use the language model to
            generate contextual responses based on the conversation.
          default: null
          nullable: true
        staticPhraseForIVR:
          type: string
          description: >-
            Deprecated static phrase for answering machine messages. Use the
            Behavior property instead for more flexible message configuration.
            This field supports variable interpolation using {{variableName}}
            syntax.
          default: null
          nullable: true
          deprecated: true
      additionalProperties: false
      description: >-
        IVR and answering machine detection configuration controlling how the
        agent behaves when calls are answered by automated systems or voicemail.
        Detects whether a human or machine answered the call and can leave
        messages on answering machines, navigate through IVR menus using DTMF
        tones, or end calls that reach voicemail. Helps optimize outbound
        calling campaigns by handling automated responses appropriately.
    AmbientNoise:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        isEnabled:
          type: boolean
          description: >-
            Enables or disables ambient noise playback. When enabled, the
            configured background sound or noise level is mixed with the agent's
            voice output.
          default: false
          nullable: true
        ambientNoiseLevel:
          type: number
          description: >-
            Volume level for the ambient noise relative to the agent's voice.
            Controls how loud the background noise is compared to the agent's
            speech. Lower values create subtle background ambience, higher
            values make the background more prominent.
          format: double
          default: 0.1
          nullable: true
        backgroundSound:
          type: string
          description: >-
            Identifier for the background sound to play. Specifies which ambient
            sound effect or noise pattern to use, such as office sounds, cafe
            ambience, or generic background noise.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Ambient noise configuration for adding background sounds to the agent's
        audio output. Enhances naturalness by simulating realistic call
        environments with subtle background noise or specific sound effects. Can
        make the agent sound more human-like by avoiding completely silent
        backgrounds.
    RAGFeature:
      required:
        - kbLinks
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        isEnabled:
          type: boolean
          description: >-
            Enables or disables RAG functionality. When enabled, the agent can
            search linked knowledge bases during conversations to retrieve
            relevant information for answering user questions with accurate,
            contextual responses.
          default: false
          nullable: true
        kbLinks:
          type: array
          items:
            $ref: '#/components/schemas/KBLink'
          description: >-
            List of knowledge base references that the agent can search. Each
            link identifies a knowledge base containing documents, FAQs, or
            reference materials. The agent can query these knowledge bases
            during conversations to augment its responses with retrieved
            information.
      additionalProperties: false
      description: >-
        Retrieval-Augmented Generation (RAG) feature configuration for
        connecting the agent to knowledge bases. Enables the agent to search and
        retrieve information from document repositories during conversations to
        answer questions with up-to-date, domain-specific knowledge. Links to
        one or more knowledge bases that have been created and populated with
        documents, articles, or reference materials.
    LanguageSwitchingFeature:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        isEnabled:
          type: boolean
          description: >-
            Enables or disables the language switching capability. When enabled,
            the agent can switch languages mid-conversation in response to user
            requests to speak in a different language.
          default: true
          nullable: true
      additionalProperties: false
      description: >-
        Language switching feature allowing the agent to switch between multiple
        languages during the call based on user requests. When enabled, the
        agent can change the conversation language when the user explicitly asks
        to speak in a different language, enabling multilingual conversations
        within a single call.
    FillerConfig:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        isEnabled:
          type: boolean
          description: >-
            Enables or disables filler word insertion. When enabled, the agent
            occasionally uses the configured filler phrases during conversations
            to sound more natural and less robotic.
          default: true
          nullable: true
        strategy:
          oneOf:
            - $ref: '#/components/schemas/FillerStaticStrategy'
          description: >-
            Strategy for selecting and inserting filler words. Static strategies
            use a predefined list of filler phrases. The strategy controls which
            fillers to use and how often they appear in the agent's speech.
          default:
            type: static
            texts:
              - um
          nullable: true
      additionalProperties: false
      description: >-
        Filler words configuration for making the agent's speech sound more
        natural and human-like. Fillers are verbal pauses like "um", "uh", "let
        me see", or "well" that the agent inserts while thinking or processing.
        These small hesitations make conversations feel more natural by
        mimicking human speech patterns instead of perfectly fluent robotic
        responses.
    Backchannel:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        isEnabled:
          type: boolean
          description: >-
            Enables or disables backchannel acknowledgments. When enabled, the
            agent produces listening cues while the user speaks to indicate
            attention and understanding.
          default: false
          nullable: true
        behavior:
          oneOf:
            - $ref: '#/components/schemas/SmartV1BackchannelBehavior'
            - $ref: '#/components/schemas/StaticAdvancedBackchannelBehavior'
            - $ref: '#/components/schemas/StaticBackchannelBehavior'
          description: >-
            Behavior configuration controlling when and how the agent produces
            backchannels. Static behaviors use configurable timing properties to
            determine when to insert acknowledgments. Smart behaviors use
            intelligent detection to produce backchannels at natural
            conversation points.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Backchannel feature configuration for having the agent produce
        acknowledgment sounds while the user is speaking. Backchannels are
        verbal cues like "uh-huh", "mm-hmm", or "I see" that signal active
        listening and engagement. Makes conversations feel more natural and
        interactive by mimicking human listening behavior.
    TurnTaking:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        vad:
          allOf:
            - $ref: '#/components/schemas/TurnTakingVad'
          description: >-
            Voice activity detection mode passed to the main call connect
            options.
          default: asap_v1
      additionalProperties: false
      description: Turn taking configuration for the main customer call.
    SilenceManagement:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        isEnabled:
          type: boolean
          description: >-
            Enables or disables silence management. When enabled, the agent
            sends reminders when the user is silent and can automatically end
            conversations after inactivity thresholds are exceeded. When
            disabled, the agent waits indefinitely for user input without
            prompting or terminating.
          default: true
          nullable: true
        maxReminderAttempts:
          type: integer
          description: >-
            Maximum number of reminder attempts to make when the user is silent.
            After this limit is reached, behavior is controlled by
            EndWhenReminderLimitExceeded to determine whether to end the call or
            stop reminding.
          format: int32
          default: 2
          nullable: true
        reminderSilenceThresholdSeconds:
          type: number
          description: >-
            Silence duration in seconds after which a reminder is triggered. The
            agent waits this long for user input before prompting the user to
            ensure they are still engaged in the conversation.
          format: double
          default: 5
          nullable: true
        endWhenReminderLimitExceeded:
          type: boolean
          description: >-
            Controls whether to end the conversation when maximum reminder
            attempts have been exceeded. When true, the call terminates after
            all reminders are exhausted. When false, the agent stops sending
            reminders but keeps the conversation open, waiting indefinitely for
            user input.
          default: true
          nullable: true
        endAfterSilenceThresholdSeconds:
          type: number
          description: >-
            Absolute silence duration in seconds after which the conversation is
            automatically ended, regardless of reminder attempts. Provides a
            hard timeout for user inactivity. When not specified, only
            reminder-based termination applies.
          format: double
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Silence management configuration controlling agent behavior when the
        user becomes silent during a conversation. Defines reminder attempts and
        conversation termination thresholds based on user inactivity. Prevents
        conversations from hanging indefinitely by prompting silent users or
        ending the call after extended silence.
    PreConversationMedia:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        isEnabled:
          type: boolean
          description: Enables or disables pre-conversation media playback.
          default: false
          nullable: true
        mediaFilename:
          type: string
          description: >-
            Filename of the uploaded media file to play before the conversation
            starts.

            Must reference a media file that has been uploaded to the system.
          default: null
          nullable: true
        enabledForInbound:
          type: boolean
          description: Enables pre-conversation media for inbound phone calls.
          default: false
          nullable: true
        enabledForOutbound:
          type: boolean
          description: Enables pre-conversation media for outbound phone calls.
          default: false
          nullable: true
        enabledForWebCall:
          type: boolean
          description: Enables pre-conversation media for web-based voice calls.
          default: false
          nullable: true
      additionalProperties: false
      description: >-
        Pre-conversation media playback configuration. When enabled, plays an
        audio file immediately

        when the call connects, before the conversation begins. The media plays
        once and is non-interruptible.

        Can be enabled independently for inbound, outbound, and web calls.
    NoiseSuppression:
      type: object
      properties:
        version:
          enum:
            - v1
          type: string
          description: Configuration schema version. Currently always "v1".
          default: v1
          nullable: true
          readOnly: true
        isEnabled:
          type: boolean
          description: >-
            Enables or disables noise suppression. When disabled, no noise
            suppression is applied regardless of other settings.
          default: false
          nullable: true
        type:
          allOf:
            - $ref: '#/components/schemas/NoiseSuppressionType'
          description: The noise suppression engine to use.
          default: none
          nullable: true
        noiseSuppressionLevel:
          type: integer
          description: >-
            The noise suppression level, from 0 (minimum) to 100 (maximum).
            Default is 75.

            Controls how aggressively background noise is filtered.
          format: int32
          default: 75
          nullable: true
        recordWriteStrategy:
          allOf:
            - $ref: '#/components/schemas/RecordWriteStrategy'
          description: |-
            Controls what audio is stored in the call recording.
            Default is "raw".
          default: raw
          nullable: true
      additionalProperties: false
      description: >-
        Noise suppression configuration for filtering background noise from call
        audio.

        Supports different noise suppression engines and controls recording
        strategy.
    ApiKeyAuthentication:
      allOf:
        - $ref: '#/components/schemas/McpAuthenticationBase'
        - required:
            - apiKey
            - type
          type: object
          properties:
            type:
              minLength: 1
              enum:
                - apiKey
              type: string
              description: Authentication type. Always "apiKey" for API key authentication.
              readOnly: true
            apiKey:
              minLength: 1
              type: string
              description: >-
                API key value to send with requests. This is the secret key
                provided by the MCP server.
            headerName:
              type: string
              description: >-
                HTTP header name for the API key. Common values include
                "X-API-Key", "Authorization", or custom header names required by
                the MCP server.
              nullable: true
          additionalProperties: false
      description: >-
        API key authentication for MCP server connections. Sends the API key in
        a custom HTTP header with each request to the MCP server.
    BearerAuthentication:
      allOf:
        - $ref: '#/components/schemas/McpAuthenticationBase'
        - required:
            - token
            - type
          type: object
          properties:
            type:
              minLength: 1
              enum:
                - bearer
              type: string
              description: >-
                Authentication type. Always "bearer" for bearer token
                authentication.
              readOnly: true
            token:
              minLength: 1
              type: string
              description: >-
                Bearer token value without the "Bearer " prefix. The system
                automatically adds the prefix when sending requests. This is the
                OAuth or JWT token provided by the MCP server or authorization
                service.
          additionalProperties: false
      description: >-
        Bearer token authentication for MCP server connections. The system
        automatically adds the "Bearer " prefix and sends the token in the
        Authorization header as "Bearer {token}" with each request to the MCP
        server.
    NoAuthentication:
      allOf:
        - $ref: '#/components/schemas/McpAuthenticationBase'
        - required:
            - type
          type: object
          properties:
            type:
              minLength: 1
              enum:
                - none
              type: string
              description: Authentication type. Always "none" for no authentication.
              readOnly: true
          additionalProperties: false
      description: >-
        No authentication for MCP server connections. Use when the MCP server
        does not require authentication or authentication is handled through
        other means like network access controls.
    McpConnectionTransport:
      enum:
        - SSE
        - StreamableHTTP
      type: string
      description: >-
        Transport protocol used for Model Context Protocol (MCP) server
        communication. Determines how messages are exchanged between the agent
        and the MCP server.
    StartWebHookResponseAccept:
      type: object
      properties:
        accept:
          enum:
            - true
          type: boolean
          description: >-
            Accept indicator. Always true for this response type, indicating the
            call should proceed.
          default: true
          readOnly: true
        overrideAgentConfig:
          type: object
          description: >-
            Optional modified agent configuration to use for this call instead
            of the original. Allows customizing the agent's behavior, language
            model settings, prompts, voice, tools, or any other configuration
            based on external logic or data. The entire configuration is
            replaced, not merged, so include all settings you want to apply.
          default: null
          nullable: true
        additionalData:
          type: object
          additionalProperties: {}
          description: >-
            Additional data variables to use for this call. These values can be
            referenced in prompts using {{variableName}} syntax and override or
            supplement the agent's default AdditionalData. Useful for
            personalizing the conversation based on external context or user
            information.
          nullable: true
        overrideOutboundConfig:
          allOf:
            - $ref: '#/components/schemas/OutboundConfigOverride'
          description: >-
            Optional override for outbound SIP configuration. Allows changing
            the SIP credentials, server, or transport settings for this specific
            outbound call without modifying the agent's default SIP
            configuration.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Response to accept a call and proceed with the conversation. Returned
        from the start webhook or used as a fallback when the start webhook
        fails. Allows optionally overriding the agent configuration, additional
        data variables, or outbound SIP settings for this specific call.
    StartWebHookResponseReject:
      required:
        - reasonMessage
      type: object
      properties:
        accept:
          enum:
            - false
          type: boolean
          description: >-
            Accept indicator. Always false for this response type, indicating
            the call should be rejected.
          default: false
          readOnly: true
        reasonMessage:
          minLength: 1
          type: string
          description: >-
            Explanation of why the call is being rejected. This message is used
            for logging and debugging purposes to understand why external logic
            determined the call should not proceed.
      additionalProperties: false
      description: >-
        Response to reject a call and prevent the conversation from starting.
        Returned from the start webhook or used as a fallback when the start
        webhook fails. Causes the call to be declined with a reason message
        explaining why it was rejected.
    SpeedAdjustment:
      enum:
        - Disabled
        - OnRequest
      type: string
      description: >-
        Speech speed adjustment mode controlling whether the agent can change
        its speaking rate during conversations. Determines if users can request
        the agent to speak faster or slower to match their comprehension
        preferences.
    HttpMethod:
      enum:
        - GET
        - POST
        - PUT
        - PATCH
        - DELETE
      type: string
      description: >-
        HTTP method to use for webhook requests. Determines how the webhook data
        is sent to the target endpoint. POST is the most common choice for
        sending event data, while GET, PUT, PATCH, and DELETE can be used for
        REST API integrations that require specific HTTP verbs.
    BodyTextFormat:
      allOf:
        - $ref: '#/components/schemas/BodyFormat'
        - required:
            - template
            - type
          type: object
          properties:
            type:
              enum:
                - Text
              type: string
              description: Format type identifier. Always returns Text for this format.
              readOnly: true
            template:
              minLength: 1
              type: string
              description: >-
                Text template defining the structure of the request body. Can
                include placeholders that are replaced with actual webhook
                payload values. The template is sent with Content-Type
                text/plain.
          additionalProperties: false
      description: >-
        Plain text body format using a template string. Allows embedding webhook
        payload values into a custom text template. Useful for integrating with
        systems that expect plain text payloads or custom string formats.
    BodyJSONFormat:
      allOf:
        - $ref: '#/components/schemas/BodyFormat'
        - required:
            - type
          type: object
          properties:
            type:
              enum:
                - Json
              type: string
              description: Format type identifier. Always returns Json for this format.
              readOnly: true
            template:
              type: array
              items:
                $ref: '#/components/schemas/BodyFormatValue'
              description: >-
                List of field mappings defining which values to extract from the
                webhook payload and where to place them in the output JSON
                object. Each mapping specifies a JSON path in the payload and
                where to put the value in the result.
              nullable: true
          additionalProperties: false
      description: >-
        JSON body format using field mappings from the webhook payload.
        Constructs a JSON object by extracting values from the payload using
        JSON path expressions. Sends the result with Content-Type
        application/json. The most common format for modern API integrations.
    BodyFormFormat:
      allOf:
        - $ref: '#/components/schemas/BodyFormat'
        - required:
            - type
          type: object
          properties:
            type:
              enum:
                - Form
              type: string
              description: Format type identifier. Always returns Form for this format.
              readOnly: true
            template:
              type: array
              items:
                $ref: '#/components/schemas/BodyFormatValue'
              description: >-
                List of field mappings defining which values to extract from the
                webhook payload and how to encode them as form fields. Each
                mapping specifies a JSON path in the payload and the
                corresponding form field name.
              nullable: true
          additionalProperties: false
      description: >-
        Form-encoded body format using field mappings from the webhook payload.
        Constructs URL-encoded form data by extracting values from the payload
        using JSON path expressions. Sends the result with Content-Type
        application/x-www-form-urlencoded. Used for integrating with systems
        that expect traditional HTML form submissions.
    TransferFeatureBase:
      required:
        - description
        - type
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/TransferType'
          description: >-
            Transfer type discriminator indicating which transfer mechanism is
            used.
          readOnly: true
        version:
          type: string
          description: Configuration schema version. Currently always "v1".
          nullable: true
          readOnly: true
        description:
          minLength: 1
          type: string
          description: >-
            Description of when and why this transfer should be used. Guides the
            language model in deciding when to invoke this transfer option
            during conversations. Should explain the circumstances or user
            requests that trigger this transfer.
        failoverBehavior:
          allOf:
            - $ref: '#/components/schemas/FailoverBehavior'
          description: >-
            Behavior when the transfer fails due to the destination being
            unavailable, busy, or unreachable. Controls whether the conversation
            continues with the AI agent or ends, and what message to communicate
            to the user about the failure.
          nullable: true
        isEnabled:
          type: boolean
          description: >-
            Enables or disables this transfer option. When disabled, the
            language model cannot select this transfer even if the description
            matches the conversation context.
          nullable: true
      additionalProperties: false
      description: >-
        Base class for call transfer configurations. Defines common properties
        for all transfer types including description, failover behavior when
        transfers fail, and enable/disable control. Concrete implementations
        include cold transfers for immediate handoff, warm transfers with agent
        introduction, and HTTP transfers for dynamic routing decisions.
    TransferRoute:
      required:
        - description
        - endpointDestinations
        - name
      type: object
      properties:
        name:
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z\-_][a-zA-Z0-9\-_]*$
          type: string
          description: >-
            Route name identifier. Must start with a letter, hyphen, or
            underscore and contain only letters, numbers, hyphens, and
            underscores. Used by the language model to reference this route when
            making transfer decisions.
        endpointDestinations:
          minItems: 1
          type: array
          items:
            $ref: '#/components/schemas/EndpointDescription'
          description: >-
            List of destination endpoints for this route. Can include multiple
            endpoints for failover or load balancing. The system attempts to
            transfer to these endpoints in order until one succeeds.
        description:
          maxLength: 500
          minLength: 1
          type: string
          description: >-
            Description of when this route should be used. Guides the language
            model in selecting the appropriate route based on conversation
            context, user requests, or caller needs. Should explain what type of
            assistance or department this route connects to.
      additionalProperties: false
      description: >-
        Named transfer routing option for intelligent destination selection.
        Defines a named route with one or more endpoint destinations that the
        language model can choose based on conversation context. Enables dynamic
        routing to different departments, specialists, or services by allowing
        the model to select the most appropriate route based on the user's needs
        described in the route description.
    HoldMediaConfig:
      type: object
      properties:
        isEnabled:
          type: boolean
          description: >-
            Enables or disables hold media playback during transfers. When
            enabled, the specified media file plays on loop until the transfer
            completes. When disabled or not specified, the agent uses its voice
            to communicate with users during transfer.
          default: false
          nullable: true
        mediaFilename:
          type: string
          description: >-
            Filename of the uploaded media file to play as hold music. Should be
            the filename of a media file that has been uploaded to the system.
            The file plays on loop during the transfer process.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Hold media configuration for playing audio files during call transfers.
        When enabled, plays the specified media file on loop while the transfer
        is in progress instead of using the agent's voice. Provides professional
        hold music or informational messages while users wait for the transfer
        to complete. The media file must be uploaded to the system before being
        referenced here.
    OptionalOutboundSipConfig:
      type: object
      properties:
        domain:
          type: string
          description: >-
            SIP domain for authentication realm as defined in RFC 3261. Used in
            SIP authentication challenges.
          default: null
          nullable: true
        password:
          type: string
          description: >-
            Password for SIP authentication as defined in RFC 3261. Used for
            authenticating outbound calls.
          default: null
          nullable: true
        fromUser:
          type: string
          description: >-
            From header user portion for outbound calls. Determines what user
            identifier appears in the SIP From header when making calls.
          default: null
          nullable: true
        transport:
          allOf:
            - $ref: '#/components/schemas/TransportProtocol'
          description: >-
            Transport protocol for SIP communication. Supported values are UDP
            (default), TCP, or TLS for encrypted connections.
          default: udp
          nullable: true
        cpsLimit:
          type: integer
          description: >-
            Calls per second limit for rate limiting outbound calls. Prevents
            exceeding provider rate limits.
          format: int32
          default: null
          nullable: true
        cpsKey:
          type: string
          description: >-
            Calls per second rate limiting key. Used to group multiple
            configurations under the same rate limit when specified.
          default: null
          nullable: true
        displayName:
          type: string
          description: >-
            Display name for caller ID. Appears in the From header display name
            when making outbound calls.
          default: null
          nullable: true
        type:
          enum:
            - v1
          type: string
          description: >-
            Configuration version type. Always "v1" for inline credentials
            configuration.
          default: v1
          nullable: true
          readOnly: true
        server:
          type: string
          description: >-
            SIP server hostname or IP address with optional port as defined in
            RFC 3261. Optional in this variant.
          nullable: true
        authUser:
          type: string
          description: >-
            Authentication user identifier as defined in RFC 3261. Optional in
            this variant.
          nullable: true
      additionalProperties: false
      description: >-
        Optional variant of outbound SIP configuration V1 where Server and
        AuthUser are not required. Used in contexts where SIP configuration may
        be partially specified or inherited from defaults.
    SmartV1Behavior:
      allOf:
        - $ref: '#/components/schemas/WarmTransferBehaviorBase'
        - required:
            - type
          type: object
          properties:
            type:
              enum:
                - smartV1
              type: string
              description: >-
                Warm transfer behavior type discriminator determining how the
                agent interacts with operators before bridging calls. Static
                behavior uses predefined rules with explicit wait conditions
                like DTMF tones, audio frequencies, or voice detection to
                determine when the operator is ready. SmartV1 behavior uses AI
                to intelligently detect operator readiness and adapt
                conversation flow dynamically. Unspecified serves as fallback
                for forward compatibility with future behavior types.
              readOnly: true
            additionalInstructions:
              type: string
              description: >-
                Optional instructions to customize how the AI agent interacts
                with the operator before bridging the call. Provides
                context-specific guidance for different scenarios, such as
                explaining the caller's situation, verifying operator
                availability, or following specific handoff protocols. Helps
                ensure smooth operator interactions while maintaining
                flexibility for different business processes.
              default: null
              nullable: true
          additionalProperties: false
      description: >-
        AI-driven warm transfer behavior that intelligently detects when the
        human operator is ready and adapts the conversation flow dynamically.
        Uses language model intelligence to determine optimal timing for
        bridging the call based on the operator's voice responses and context,
        rather than relying on predefined wait conditions. Optional additional
        instructions can customize how the AI interacts with the operator before
        completing the transfer, allowing context-specific guidance for
        different operator scenarios or business processes.
    StaticBehavior:
      allOf:
        - $ref: '#/components/schemas/WarmTransferBehaviorBase'
        - required:
            - type
          type: object
          properties:
            type:
              enum:
                - static
              type: string
              description: >-
                Warm transfer behavior type discriminator determining how the
                agent interacts with operators before bridging calls. Static
                behavior uses predefined rules with explicit wait conditions
                like DTMF tones, audio frequencies, or voice detection to
                determine when the operator is ready. SmartV1 behavior uses AI
                to intelligently detect operator readiness and adapt
                conversation flow dynamically. Unspecified serves as fallback
                for forward compatibility with future behavior types.
              readOnly: true
            waitFirstAnswerFromOperator:
              type: boolean
              description: >-
                Wait for voice detection from the operator before bridging the
                call. When enabled, the system waits for the operator to start
                speaking before connecting the caller, ensuring the operator is
                actively engaged and ready. When disabled, the call bridges
                immediately once other configured wait conditions are met or the
                timeout expires.
              default: false
              nullable: true
            waitToneFromOperator:
              type: array
              items:
                type: number
                format: double
              description: >-
                Audio frequency tones to wait for from the operator before
                bridging, specified in Hertz. Used to detect specific audio
                signals from the operator's phone system or IVR, such as 400Hz
                for readiness signals. The system listens for any of the
                specified frequencies and bridges the call when detected. Useful
                for integrating with legacy phone systems or custom operator
                signaling protocols.
              default: null
              nullable: true
            waitDTMFFromOperator:
              type: array
              items:
                type: string
              description: >-
                DTMF key press tones to wait for from the operator before
                bridging the call. Accepts digit keys 0-9 and special keys like
                pound or star. The system waits for the operator to press any of
                the specified keys as an acknowledgment signal before connecting
                the caller. Common in call center environments where operators
                confirm readiness by pressing a specific key.
              default: null
              nullable: true
            waitChecksTimeoutInS:
              type: number
              description: >-
                Maximum time in seconds to wait for operator readiness signals
                before timing out. If the operator does not provide the expected
                voice, DTMF, or frequency tone signals within this timeout, the
                wait conditions are bypassed and the call proceeds according to
                failover configuration. Prevents indefinite waiting when
                operators are unavailable or unresponsive.
              format: double
              default: 4
              nullable: true
            sayPhraseToOperator:
              allOf:
                - $ref: '#/components/schemas/SayPhraseToOperator'
              description: >-
                Phrase configuration for introducing the caller to the operator
                before bridging. Allows the AI agent to provide context about
                the caller's needs, reason for transfer, or conversation summary
                to help the operator assist effectively. Can be configured to
                speak before or after the operator acknowledges, depending on
                call center workflow preferences.
              default: null
              nullable: true
          additionalProperties: false
      description: >-
        Static warm transfer behavior with explicit wait conditions before
        bridging the caller to the operator. Allows precise control over
        transfer timing by waiting for specific operator readiness signals
        including voice detection, DTMF key presses, or audio frequency tones.
        Supports configurable timeout for wait conditions and optional phrase to
        introduce the caller to the operator before bridging. Useful for
        structured call center environments with standardized operator protocols
        or IVR systems requiring specific acknowledgment signals.
    CallerIdMode:
      enum:
        - userPhoneNumber
        - agentPhoneNumber
      type: string
      description: >-
        Caller ID display mode for warm transfers. Determines which phone number
        appears on the operator's caller ID when the AI agent calls them during
        a warm transfer. Controls whether the operator sees the original user's
        number or the agent's number, affecting how operators identify and
        prioritize incoming transfer calls.
    ThreewaySmartV1Behavior:
      allOf:
        - $ref: '#/components/schemas/ThreewayMessagingBehaviorBase'
        - required:
            - type
          type: object
          properties:
            type:
              enum:
                - smartV1
              type: string
              description: >-
                Threeway messaging behavior type discriminator determining how
                announcement phrases are delivered to both caller and operator
                simultaneously during warm transfer bridging. Static behavior
                uses predefined phrases spoken unchanged to both parties for
                consistent messaging. SmartV1 behavior uses AI to generate
                contextual announcement phrases based on conversation history
                and optional instructions, adapting to each transfer scenario.
                Unspecified serves as fallback for forward compatibility with
                future behavior types. The phrase is delivered to both the
                parent conversation channel and warm transfer child channel
                simultaneously right before connecting the caller to the
                operator.
              readOnly: true
            additionalInstructions:
              type: string
              description: >-
                Optional instructions to customize how the AI generates the
                announcement phrase spoken to both parties simultaneously.
                Guides the language model in crafting appropriate handoff
                messaging, such as maintaining professional tone, including
                issue summaries, providing reassurance, or mentioning specialist
                involvement. When not specified, the phrase is generated based
                solely on conversation context without additional constraints.
              default: null
              nullable: true
          additionalProperties: false
      description: >-
        AI-driven threeway messaging behavior that uses language model
        intelligence to generate contextual announcement phrases spoken to both
        caller and operator simultaneously during warm transfer bridging. The
        phrase is dynamically generated based on conversation transcript history
        and call context, adapting the handoff announcement to each unique
        transfer scenario. Optional additional instructions can guide the phrase
        generation to maintain specific tone, include issue summaries, emphasize
        reassurance, or mention specialist involvement. When additional
        instructions are not provided, the phrase is generated solely from
        conversation context. The unified announcement is delivered to both
        channels simultaneously right before bridging the call, ensuring
        consistent messaging for both parties during the transition.
    ThreewayStaticBehavior:
      allOf:
        - $ref: '#/components/schemas/ThreewayMessagingBehaviorBase'
        - required:
            - type
          type: object
          properties:
            type:
              enum:
                - static
              type: string
              description: >-
                Threeway messaging behavior type discriminator determining how
                announcement phrases are delivered to both caller and operator
                simultaneously during warm transfer bridging. Static behavior
                uses predefined phrases spoken unchanged to both parties for
                consistent messaging. SmartV1 behavior uses AI to generate
                contextual announcement phrases based on conversation history
                and optional instructions, adapting to each transfer scenario.
                Unspecified serves as fallback for forward compatibility with
                future behavior types. The phrase is delivered to both the
                parent conversation channel and warm transfer child channel
                simultaneously right before connecting the caller to the
                operator.
              readOnly: true
            phrase:
              type: string
              description: >-
                Phrase spoken to both caller and operator simultaneously right
                before bridging the call. Should be clear and concise as both
                parties will hear it at the same moment during the transfer
                transition. Common examples include connection announcements
                like "Connecting you now", hold notifications like "Please hold
                while I connect you", or representative introduction messages
                like "You are now being connected to a representative".
              default: null
              nullable: true
          additionalProperties: false
      description: >-
        Static threeway messaging behavior with a predefined phrase spoken to
        both caller and operator simultaneously during warm transfer bridging.
        The configured phrase is delivered unchanged to both parties, providing
        consistent and predictable messaging during all transfers. Useful for
        maintaining standardized handoff messaging like connection announcements
        or hold notifications that both the caller and operator need to hear at
        the transition moment.
    PostCallAnalysisLabel:
      required:
        - description
        - name
        - type
      type: object
      properties:
        name:
          maxLength: 100
          minLength: 1
          pattern: ^[a-zA-Z\-_][a-zA-Z0-9\-_]*$
          type: string
          description: >-
            Field name identifier. Must start with a letter, hyphen, or
            underscore and contain only letters, numbers, hyphens, and
            underscores. This name is used as the key in the analysis results.
        description:
          maxLength: 500
          minLength: 1
          type: string
          description: >-
            Description of what information to extract and how to interpret it.
            Guides the language model in identifying and extracting the relevant
            data from the conversation. Should clearly explain what to look for
            and how to categorize or format the extracted information.
        type:
          allOf:
            - $ref: '#/components/schemas/PostCallAnalysisLabelType'
          description: >-
            Data type for the extracted value. Determines the structure and
            format of the extracted information and constrains what the language
            model can return.
        values:
          type: array
          items:
            type: string
          description: >-
            Allowed values for enum type labels. When Type is Enum, the
            extracted value must be one of these predefined options. The
            language model selects the most appropriate value from this list
            based on the conversation content.
          nullable: true
        required:
          type: boolean
          description: >-
            Indicates whether this field must be populated. When true, the
            analysis will always attempt to extract a value for this field. When
            false, the field may be left empty if the relevant information is
            not found in the conversation.
          nullable: true
      additionalProperties: false
      description: >-
        Data field definition for post-call analysis extraction. Specifies a
        piece of information to identify and extract from conversation
        transcripts such as customer sentiment, appointment details, or business
        outcomes. The language model analyzes the completed conversation and
        attempts to populate this field based on the description and type
        constraints.
    SmartV1IvrDetectionBehavior:
      allOf:
        - $ref: '#/components/schemas/IvrDetectionBehaviorBase'
        - required:
            - type
          type: object
          properties:
            type:
              enum:
                - smartV1
              type: string
              description: >-
                Behavior type identifier. Always returns SmartV1 for this
                AI-generated approach.
              readOnly: true
            additionalInstructions:
              type: string
              description: >-
                Optional instructions to guide the language model in generating
                voicemail messages. Provides context about what information to
                include, tone to use, or specific details to mention. Supports
                variable interpolation using {{variableName}} syntax for dynamic
                instructions based on call data.
              default: null
              nullable: true
          additionalProperties: false
      description: >-
        Smart version 1 IVR detection behavior using language model generation
        for contextual voicemail messages. When an answering machine is
        detected, the agent uses AI to generate an appropriate message based on
        the conversation purpose and any additional instructions. Creates more
        natural and context-aware voicemail messages than static phrases.
    StaticIvrDetectionBehavior:
      allOf:
        - $ref: '#/components/schemas/IvrDetectionBehaviorBase'
        - required:
            - type
          type: object
          properties:
            type:
              enum:
                - static
              type: string
              description: >-
                Behavior type identifier. Always returns Static for this
                approach.
              readOnly: true
            staticPhrase:
              type: string
              description: >-
                Voicemail message to speak when an answering machine is
                detected. The agent says this exact phrase after detection.
                Supports variable interpolation using {{variableName}} syntax to
                include dynamic data like caller names, phone numbers, or
                appointment details in the message.
              default: null
              nullable: true
          additionalProperties: false
      description: >-
        Static IVR detection behavior using a predefined voicemail message. When
        an answering machine is detected, the agent says the exact configured
        phrase and ends the call. Supports variable interpolation using
        {{variableName}} syntax for personalizing messages with call-specific
        data.
    KBLink:
      required:
        - id
      type: object
      properties:
        id:
          maxLength: 255
          minLength: 1
          type: string
          description: >-
            Unique identifier of the knowledge base to link. References a
            knowledge base that has been created and contains indexed documents,
            articles, or reference materials that the agent can search.
      additionalProperties: false
      description: >-
        Knowledge base link reference for RAG (Retrieval-Augmented Generation)
        feature. Points to a knowledge base that the agent can search during
        conversations to retrieve relevant information for answering questions.
        The knowledge base must be created and populated with documents before
        being linked to the agent.
    FillerStaticStrategy:
      allOf:
        - $ref: '#/components/schemas/FillerStrategy'
        - required:
            - type
          type: object
          properties:
            type:
              enum:
                - static
              type: string
              description: >-
                Strategy type identifier. Always returns Static for this filler
                approach.
              readOnly: true
            texts:
              type: array
              items:
                type: string
              description: >-
                List of filler phrases the agent can use. The agent randomly
                selects from these options when inserting verbal pauses. Common
                examples include "um", "uh", "let me see", "well", "you know",
                "hmm", or "let me think". Customize this list to control the
                agent's hesitation patterns and speaking style.
              default:
                - um
              nullable: true
          additionalProperties: false
      description: >-
        Static filler word strategy using a predefined list of verbal pauses and
        hesitation sounds. The agent randomly selects from the configured
        phrases when inserting fillers during conversations. Allows customizing
        which specific filler words the agent uses to match desired speaking
        style and naturalness level.
    SmartV1BackchannelBehavior:
      allOf:
        - $ref: '#/components/schemas/BackchannelBehaviorBase'
        - required:
            - type
          type: object
          properties:
            type:
              enum:
                - smartV1
              type: string
              description: >-
                Behavior type identifier. Always returns SmartV1 for this
                AI-driven approach.
              readOnly: true
            additionalInstructions:
              type: string
              description: >-
                Optional instructions to guide the AI in producing backchannels.
                Provides context about when or how to acknowledge, tone to use,
                or specific phrases to prefer. Supports variable interpolation
                using {{variableName}} syntax for dynamic instructions based on
                conversation data.
              default: null
              nullable: true
            frequency:
              type: number
              description: >-
                Frequency of backchannel insertions ranging from 0.0 to 1.0.
                Lower values make backchannels very rare, 0.5 provides moderate
                acknowledgments, and higher values produce frequent listening
                cues. Controls how often the AI decides to signal active
                listening during user speech.
              format: double
              default: 0.5
              nullable: true
          additionalProperties: false
      description: >-
        Smart version 1 backchannel behavior using AI to determine natural
        moments for acknowledgments. The agent uses intelligent detection to
        identify appropriate conversation points for inserting listening cues
        based on context, user pauses, and conversation flow. Creates more
        natural and contextually appropriate backchannels than static timing
        rules.
    StaticAdvancedBackchannelBehavior:
      allOf:
        - $ref: '#/components/schemas/BackchannelBehaviorBase'
        - required:
            - type
          type: object
          properties:
            type:
              enum:
                - staticAdvanced
              type: string
              description: >-
                Behavior type identifier. Always returns StaticAdvanced for this
                approach.
              readOnly: true
            phrases:
              type: array
              items:
                type: string
              description: >-
                List of acknowledgment phrases the agent can use for
                backchannels. The agent randomly selects from these options when
                timing conditions are met. Common examples include "uh-huh",
                "mm-hmm", "I see", "right", "okay", or "go on". Supports
                variable interpolation using {{variableName}} syntax for dynamic
                phrases.
              default: null
              nullable: true
            minLengthVoice:
              type: number
              description: >-
                Minimum duration in seconds the user must speak before a
                backchannel can be triggered. Prevents acknowledgments from
                interrupting very short utterances. The agent waits at least
                this long into user speech before considering backchannel
                insertion.
              format: double
              default: 10
              nullable: true
            minLengthVoiceDeviation:
              type: number
              description: >-
                Percentage deviation for minimum voice length randomization,
                ranging from 0.0 to 1.0. Multiplied by MinLengthVoice to
                introduce natural variation in when backchannels can occur.
                Higher values create more unpredictability in timing for a more
                human-like pattern.
              format: double
              default: 0.25
              nullable: true
            frequency:
              type: number
              description: >-
                Frequency of backchannel insertions ranging from 0.0 to 1.0.
                Controls how often acknowledgments occur when timing conditions
                are met. Lower values make backchannels rarer, higher values
                produce more frequent listening cues.
              format: double
              default: 0.5
              nullable: true
            minCooldown:
              type: number
              description: >-
                Minimum time in seconds that must elapse between consecutive
                backchannels. Prevents acknowledgments from occurring too close
                together. The agent waits at least this long after one
                backchannel before producing another.
              format: double
              default: 8
              nullable: true
            minCooldownDeviation:
              type: number
              description: >-
                Percentage deviation for cooldown randomization, ranging from
                0.0 to 1.0. Multiplied by MinCooldown to introduce natural
                variation in spacing between backchannels. Higher values create
                more unpredictable timing for a more human-like rhythm.
              format: double
              default: 0.25
              nullable: true
          additionalProperties: false
      description: >-
        Advanced static backchannel behavior with fine-tuned timing controls for
        natural acknowledgment patterns. Provides detailed configuration for
        minimum voice duration before triggering backchannels, cooldown periods
        between acknowledgments, and deviation parameters for randomization.
        Creates more sophisticated listening behavior than basic static mode by
        controlling timing thresholds and introducing natural variation.
    StaticBackchannelBehavior:
      allOf:
        - $ref: '#/components/schemas/BackchannelBehaviorBase'
        - required:
            - type
          type: object
          properties:
            type:
              enum:
                - static
              type: string
              description: >-
                Behavior type identifier. Always returns Static for this
                approach.
              readOnly: true
            phrases:
              type: array
              items:
                type: string
              description: >-
                List of acknowledgment phrases the agent can use for
                backchannels. The agent randomly selects from these options when
                inserting listening cues. Common examples include "uh-huh",
                "mm-hmm", "I see", "right", "okay", or "go on". Supports
                variable interpolation using {{variableName}} syntax for dynamic
                phrases.
              default: null
              nullable: true
            frequency:
              type: number
              description: >-
                Frequency of backchannel insertions ranging from 0.0 to 1.0.
                Lower values make backchannels very rare, 0.5 provides moderate
                acknowledgments, and higher values produce frequent listening
                cues. Controls how often the agent signals active listening
                during user speech.
              format: double
              default: 0.5
              nullable: true
          additionalProperties: false
      description: >-
        Static backchannel behavior using predefined acknowledgment phrases with
        basic frequency control. The agent randomly selects from the configured
        list of listening cues and inserts them while the user speaks. Provides
        simple configuration for adding natural verbal feedback without complex
        timing parameters.
    TurnTakingVad:
      enum:
        - asap_v1
        - asap_v2
      type: string
      description: >-
        Voice activity detection mode used to decide when the caller's turn has
        ended.

        Values map directly to the DashaScript connect option named "vad".
    NoiseSuppressionType:
      enum:
        - none
        - krisp
      type: string
      description: The noise suppression engine type.
    RecordWriteStrategy:
      enum:
        - raw
        - cleaned
      type: string
      description: Controls what audio is stored in the call recording.
    McpAuthenticationBase:
      type: object
      properties:
        type:
          type: string
          description: >-
            Authentication type identifier. Supported values include "none",
            "apiKey", "bearer", and custom types.
          nullable: true
          readOnly: true
      additionalProperties: false
      description: >-
        Base class for Model Context Protocol authentication methods. Supports
        multiple authentication types including none, API key, bearer token, and
        custom authentication schemes.
    OutboundConfigOverride:
      type: object
      properties:
        phoneNumber:
          maxLength: 255
          type: string
          description: >-
            Phone number to use for this call instead of the agent's default.
            Overrides which number appears as the caller ID and which SIP
            registration is used for the call.
          default: null
          nullable: true
        credentialsId:
          type: string
          description: >-
            SIP credentials to use for this call instead of the agent's default.
            Allows routing the call through a different SIP trunk, useful for
            failover, cost optimization, or geographic routing.
          format: uuid
          default: null
          nullable: true
        displayName:
          maxLength: 255
          type: string
          description: >-
            Display name to use for caller ID for this call instead of the phone
            number's default. Overrides the caller ID name shown to the
            recipient.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Override outbound SIP configuration for a specific call. Allows using
        different phone number, credentials, or caller ID for individual calls
        without changing the agent's default configuration. Useful for
        multi-tenant scenarios, A/B testing different trunks, or presenting
        different caller IDs per customer.
    BodyFormat:
      required:
        - type
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/BodyFormatEnum'
          description: >-
            Format type discriminator indicating which body format
            implementation is used. Determines whether the payload is sent as
            text, JSON, or form data.
          readOnly: true
      additionalProperties: false
      description: >-
        Base class for webhook request body format configurations. Defines how
        the webhook payload is encoded and structured. Concrete implementations
        include text templates, JSON object mapping, and form-encoded data.
    BodyFormatValue:
      required:
        - jsonPath
      type: object
      properties:
        jsonPath:
          minLength: 1
          type: string
          description: >-
            JSON path in the output where the extracted value should be placed.
            For JSON format, this defines the structure of the output object.
            For form format, this is the form field name.
        argumentJsonPath:
          type: string
          description: >-
            JSON path in the webhook payload to extract the value from. When
            specified, the value at this path in the source payload is copied to
            the JsonPath location in the output. If not specified, the
            DefaultValue is used instead.
          nullable: true
        defaultValue:
          description: >-
            Default value to use when ArgumentJsonPath is not specified or when
            the path doesn't exist in the payload. Allows providing fallback
            values to ensure the output always has required fields populated.
          nullable: true
      additionalProperties: false
      description: >-
        Field mapping configuration for extracting values from webhook payloads.
        Defines how to extract a value from the source payload using JSON path
        and where to place it in the output, with support for default values
        when the source path doesn't exist.
    TransferType:
      enum:
        - unspecified
        - cold
        - warm
        - http
      type: string
      description: >-
        Call transfer type determining how the call is handed off to a human
        operator or different destination. Different transfer types control the
        handoff mechanism, agent involvement during transfer, and whether
        decisions are made dynamically via HTTP requests.
    FailoverBehavior:
      type: object
      properties:
        continueConversation:
          type: boolean
          description: >-
            Controls whether the AI agent continues the conversation after the
            transfer fails. When true, the agent resumes talking to the user and
            can attempt alternative solutions. When false, the call ends after
            explaining the transfer failure.
          default: false
          nullable: true
        systemMessage:
          type: string
          description: >-
            System message added to the conversation context when the transfer
            fails. Provides internal context to the language model about the
            failure, influencing how it responds to the user after the failover.
            Not spoken aloud but affects the agent's behavior and understanding.
          default: null
          nullable: true
        staticPhrase:
          type: string
          description: >-
            Phrase spoken to the user when the transfer fails. Explains that the
            operator is unavailable and what happens next. Should provide clear
            communication about the failure and set expectations for the user.
          default: null
          nullable: true
      additionalProperties: false
      description: >-
        Failover behavior configuration controlling what happens when a transfer
        fails. Defines whether the conversation continues with the AI agent or
        ends, and what messages are communicated to the user about the failed
        transfer. Allows graceful handling of unreachable operators, busy
        signals, or network failures during transfer attempts.
    EndpointDescription:
      required:
        - endpoint
      type: object
      properties:
        endpoint:
          minLength: 1
          type: string
          description: >-
            Destination phone number or SIP address. Supports E.164 phone
            numbers like "+1234567890" or SIP URIs like
            "sip:operator@example.com". The transfer system attempts to connect
            to this endpoint when this destination is selected.
      additionalProperties: false
      description: >-
        Transfer endpoint destination specification. Defines a phone number or
        SIP address that calls can be transferred to. Used in transfer routes to
        specify possible destinations with support for failover when multiple
        endpoints are configured.
    WarmTransferBehaviorBase:
      required:
        - type
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/WarmTransferBehavior'
          description: >-
            Warm transfer behavior type discriminator determining how the agent
            interacts with operators before bridging calls. Static behavior uses
            predefined rules with explicit wait conditions like DTMF tones,
            audio frequencies, or voice detection to determine when the operator
            is ready. SmartV1 behavior uses AI to intelligently detect operator
            readiness and adapt conversation flow dynamically. Unspecified
            serves as fallback for forward compatibility with future behavior
            types.
          readOnly: true
      additionalProperties: false
      description: >-
        Base class for warm transfer behavior configurations controlling how the
        AI agent interacts with the human operator before bridging the caller.
        Defines whether to use static rules with explicit wait conditions and
        operator greetings, or smart AI-driven behavior that adapts to the
        operator's responses. Determines timing of call bridging based on
        operator availability signals like voice detection, DTMF tones, or
        specific audio frequencies.
    SayPhraseToOperator:
      required:
        - phrase
      type: object
      properties:
        beforeOperator:
          type: boolean
          description: >-
            Controls timing of when the phrase is spoken. When true, the agent
            speaks immediately when the call connects, potentially before the
            operator fully answers. When false, waits for the operator to
            acknowledge before speaking the phrase.
          default: false
          nullable: true
        phrase:
          minLength: 1
          type: string
          description: >-
            Phrase to speak to the operator when they answer. Should provide
            relevant context about the caller or their needs. Can include
            conversation summaries, caller identification, or reason for
            transfer to help the operator assist the user effectively.
      additionalProperties: false
      description: >-
        Configuration for speaking a phrase to the operator during warm
        transfer. Defines what the AI agent says to the human operator when they
        answer, and whether to speak before or after they pick up. Allows
        providing context, caller information, or conversation summaries to help
        the operator understand the caller's needs before being connected.
    ThreewayMessagingBehaviorBase:
      required:
        - type
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/ThreewayMessagingBehavior'
          description: >-
            Threeway messaging behavior type discriminator determining how
            announcement phrases are delivered to both caller and operator
            simultaneously during warm transfer bridging. Static behavior uses
            predefined phrases spoken unchanged to both parties for consistent
            messaging. SmartV1 behavior uses AI to generate contextual
            announcement phrases based on conversation history and optional
            instructions, adapting to each transfer scenario. Unspecified serves
            as fallback for forward compatibility with future behavior types.
            The phrase is delivered to both the parent conversation channel and
            warm transfer child channel simultaneously right before connecting
            the caller to the operator.
          readOnly: true
      additionalProperties: false
      description: >-
        Base class for threeway messaging behavior configurations controlling
        how announcement phrases are delivered to both caller and operator
        simultaneously during warm transfer bridging. Defines whether to use
        static predefined phrases for consistent messaging, or AI-driven smart
        behavior that generates contextual announcements based on conversation
        history. The unified phrase is spoken to both parties at the same moment
        right before connecting them, ensuring both the caller and operator hear
        the same transition message as the call is bridged.
    PostCallAnalysisLabelType:
      enum:
        - string
        - number
        - boolean
        - enum
      type: string
      description: >-
        Data type for post-call analysis label values. Determines how the
        extracted information is structured and what kind of data the language
        model should extract from the conversation transcript.
    IvrDetectionBehaviorBase:
      required:
        - type
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/IvrDetectionBehavior'
          description: >-
            Behavior type discriminator indicating which message generation
            approach is used.
          readOnly: true
      additionalProperties: false
      description: >-
        Base class for IVR and answering machine detection behaviors. Defines
        how the agent responds when calls are answered by voicemail or automated
        systems. Concrete implementations include static behaviors with
        predefined messages and smart behaviors that generate contextual
        responses using language models.
    FillerStrategy:
      required:
        - type
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/FillerStrategyEnum'
          description: >-
            Strategy type discriminator indicating which filler selection
            approach is used.
          readOnly: true
      additionalProperties: false
      description: >-
        Base class for filler word selection strategies. Defines how the agent
        chooses and inserts verbal pauses and hesitation sounds to make speech
        more natural. Concrete implementations include static strategies with
        predefined filler lists.
    BackchannelBehaviorBase:
      required:
        - type
      type: object
      properties:
        type:
          allOf:
            - $ref: '#/components/schemas/BackchannelBehavior'
          description: >-
            Behavior type discriminator indicating which backchannel approach is
            used.
          readOnly: true
      additionalProperties: false
      description: >-
        Base class for backchannel acknowledgment behaviors. Defines how the
        agent produces verbal listening cues while users speak. Concrete
        implementations include static behaviors with predefined phrases and
        smart behaviors that use AI to determine natural moments for
        acknowledgments.
    BodyFormatEnum:
      enum:
        - Text
        - Json
        - Form
      type: string
      description: >-
        Content format for the webhook request body. Determines how the webhook
        payload is encoded and what Content-Type header is sent. Different
        formats are appropriate for different receiving endpoints and
        integration requirements.
    WarmTransferBehavior:
      enum:
        - unspecified
        - static
        - smartV1
      type: string
      description: >-
        Warm transfer behavior type discriminator determining how the agent
        interacts with operators before bridging calls. Static behavior uses
        predefined rules with explicit wait conditions like DTMF tones, audio
        frequencies, or voice detection to determine when the operator is ready.
        SmartV1 behavior uses AI to intelligently detect operator readiness and
        adapt conversation flow dynamically. Unspecified serves as fallback for
        forward compatibility with future behavior types.
    ThreewayMessagingBehavior:
      enum:
        - Unspecified
        - static
        - smartV1
      type: string
      description: >-
        Threeway messaging behavior type discriminator determining how
        announcement phrases are delivered to both caller and operator
        simultaneously during warm transfer bridging. Static behavior uses
        predefined phrases spoken unchanged to both parties for consistent
        messaging. SmartV1 behavior uses AI to generate contextual announcement
        phrases based on conversation history and optional instructions,
        adapting to each transfer scenario. Unspecified serves as fallback for
        forward compatibility with future behavior types. The phrase is
        delivered to both the parent conversation channel and warm transfer
        child channel simultaneously right before connecting the caller to the
        operator.
    IvrDetectionBehavior:
      enum:
        - unspecified
        - static
        - smartV1
      type: string
      description: >-
        Behavior type for handling answering machine and IVR detection.
        Determines how the agent responds when a call is answered by voicemail
        or an automated system. Different behaviors control message generation
        and delivery strategies.
    FillerStrategyEnum:
      enum:
        - unspecified
        - static
      type: string
      description: >-
        Filler word selection strategy type. Determines how the agent chooses
        which filler words to use and when to insert them during conversations
        to sound more natural and human-like.
    BackchannelBehavior:
      enum:
        - unspecified
        - static
        - staticAdvanced
        - smartV1
      type: string
      description: >-
        Backchannel acknowledgment behavior type. Determines how the agent
        produces verbal listening cues while the user speaks. Different
        behaviors control phrase selection, timing, and frequency of
        acknowledgments like "uh-huh", "mm-hmm", or "I see" to signal active
        listening.

````