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

# Update Agent (Partial)

> Partially update an AI agent. Same field shape as create — see `aiagents_create` for details and per-provider examples.



## OpenAPI

````yaml patch /test_framework/v2/aiagents/{id}/
openapi: 3.1.0
info:
  title: Cekura API
  version: v1
  description: >-
    Complete API documentation for the Cekura platform. This API provides
    endpoints for testing, observing, and evaluating AI voice agents — including
    managing agents, running evaluators, defining metrics, and analyzing call
    quality.
servers:
  - url: https://api.cekura.ai
security: []
paths:
  /test_framework/v2/aiagents/{id}/:
    patch:
      tags:
        - AI Agents
      summary: Update an AI voice agent (partial)
      description: >-
        Partially update an agent. Only fields included in the request body are
        modified. Mock tools (create, update, delete) are managed via the
        `mock_tools` field — pass the full desired list of tools. Knowledge base
        files are managed via the `knowledge_base_files` field. Dynamic
        variables are managed via the `dynamic_variables` field.
      operationId: aiagents-partial-update
      parameters:
        - in: path
          name: id
          schema:
            type: integer
          description: A unique integer value identifying this ai agent.
          required: true
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedSchemaPostAIAgentV2'
            examples:
              Rename+UpdateDescription:
                value:
                  agent_name: Support Bot v2
                  description: Updated description
                summary: Rename + update description
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedSchemaPostAIAgentV2'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedSchemaPostAIAgentV2'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AIAgentV2'
          description: ''
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  field_name:
                    type: array
                    items:
                      type: string
          description: ''
      security:
        - api_key: []
components:
  schemas:
    PatchedSchemaPostAIAgentV2:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          description: |-
            Agent ID.
            Example: `2142`
        name:
          type: string
          description: >-
            Agent name. Optional when configure_from_provider is set — it's
            fetched from the provider.
          maxLength: 255
        description:
          type: string
          description: >

            A detailed description of what this agent does and how it should
            interact

            Example: 

            ```text

            AI agent for handling customer support inquiries and resolving
            technical issues

            ```
        project:
          type: integer
          description: The project this agent belongs to
        language:
          enum:
            - af
            - ar
            - bn
            - bg
            - zh
            - cs
            - da
            - nl
            - en
            - et
            - fi
            - fr
            - de
            - el
            - gu
            - hi
            - he
            - hu
            - id
            - it
            - ja
            - kn
            - ko
            - ms
            - ml
            - mr
            - multi
            - 'no'
            - pl
            - pa
            - pt
            - ro
            - ru
            - sk
            - es
            - sv
            - th
            - tr
            - tl
            - ta
            - te
            - uk
            - vi
          type: string
          x-spec-enum-id: b822ad429c7b7fec
          default: en
          description: >-

            The primary language this agent uses for communication (e.g. 'en'
            for English)



            * `af` - Afrikaans

            * `ar` - Arabic

            * `bn` - Bengali

            * `bg` - Bulgarian

            * `zh` - Chinese Simplified

            * `cs` - Czech

            * `da` - Danish

            * `nl` - Dutch

            * `en` - English

            * `et` - Estonian

            * `fi` - Finnish

            * `fr` - French

            * `de` - German

            * `el` - Greek

            * `gu` - Gujarati

            * `hi` - Hindi

            * `he` - Hebrew

            * `hu` - Hungarian

            * `id` - Indonesian

            * `it` - Italian

            * `ja` - Japanese

            * `kn` - Kannada

            * `ko` - Korean

            * `ms` - Malay

            * `ml` - Malayalam

            * `mr` - Marathi

            * `multi` - Multilingual

            * `no` - Norwegian

            * `pl` - Polish

            * `pa` - Punjabi

            * `pt` - Portuguese

            * `ro` - Romanian

            * `ru` - Russian

            * `sk` - Slovak

            * `es` - Spanish

            * `sv` - Swedish

            * `th` - Thai

            * `tr` - Turkish

            * `tl` - Tagalog

            * `ta` - Tamil

            * `te` - Telugu

            * `uk` - Ukrainian

            * `vi` - Vietnamese
        telephony:
          allOf:
            - $ref: '#/components/schemas/AgentTelephony'
          writeOnly: true
          description: Phone and SIP/websocket channel configuration.
        provider:
          allOf:
            - $ref: '#/components/schemas/SchemaAgentProviderCreate'
          writeOnly: true
          description: >-
            AI platform integration. Nested credentials replace the flat
            {provider}_api_key fields.
        agent_speaks_first:
          type:
            - boolean
            - 'null'
          description: >-
            True = agent speaks first; False = test user speaks first; null =
            auto-detect.
        predefined_metrics:
          writeOnly: true
          description: predefined metrics to use for the agent
        knowledge_base_files:
          type: array
          items:
            $ref: '#/components/schemas/AgentKnowledgeBaseFileWrite'
          writeOnly: true
          description: >-
            Full desired set of knowledge base files. Reference existing by
            `id`; add new ones with `file_name` + `content_base64`. Omitted
            existing files are deleted.
        enabled_personalities:
          type: array
          items:
            type: integer
          readOnly: true
          description: |

            Personality profiles enabled for this agent
            Example: `[1, 2, 3]`
        webhook_url:
          type: string
          format: uri
          description: >-
            Webhook URL for this agent. When set, overrides the project-level
            webhook URL for events from this agent.
        webhook_secret:
          type: string
          writeOnly: true
          description: >-
            Secret sent in X-CEKURA-SECRET header. Applies when agent
            webhook_url is set. Write-only — never returned in API responses.
            Use `webhook_secret_configured` to check whether one is set.
        webhook_secret_configured:
          type: string
          readOnly: true
        mock_tools:
          type: array
          items:
            $ref: '#/components/schemas/AgentMockToolWrite'
          writeOnly: true
          description: >-
            Full desired set of mock tools. Items with `id` (or a matching
            `name`) update existing tools; items without create new ones.
            Omitted existing tools are deleted.
        mock_tools_enabled:
          type: boolean
          readOnly: true
          description: >-
            Whether mock-tool mode is currently active on the provider. Default
            false.
        mock_tools_provider:
          type:
            - string
            - 'null'
          readOnly: true
          description: >-
            Provider the mock tools were fetched from (vapi, retell, elevenlabs,
            custom). Null until auto-fetch has been run.
        dynamic_variables:
          type: array
          items:
            $ref: '#/components/schemas/AgentDynamicVariableWrite'
          writeOnly: true
          description: >-
            Full desired set of dynamic variable definitions, matched by name.
            Omitted existing variables are deleted.
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: |

            Timestamp when the agent was created
            Example: `"2021-01-01T00:00:00Z"`
        updated_at:
          type: string
          format: date-time
          readOnly: true
          description: |

            Timestamp when the agent was last updated
            Example: `"2021-01-01T00:00:00Z"`
    AIAgentV2:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          description: |-
            Agent ID.
            Example: `2142`
        name:
          type: string
          description: >-
            Agent name. Optional when configure_from_provider is set — it's
            fetched from the provider.
          maxLength: 255
        description:
          type: string
          description: >

            A detailed description of what this agent does and how it should
            interact

            Example: 

            ```text

            AI agent for handling customer support inquiries and resolving
            technical issues

            ```
        project:
          type: integer
          description: The project this agent belongs to
        language:
          enum:
            - af
            - ar
            - bn
            - bg
            - zh
            - cs
            - da
            - nl
            - en
            - et
            - fi
            - fr
            - de
            - el
            - gu
            - hi
            - he
            - hu
            - id
            - it
            - ja
            - kn
            - ko
            - ms
            - ml
            - mr
            - multi
            - 'no'
            - pl
            - pa
            - pt
            - ro
            - ru
            - sk
            - es
            - sv
            - th
            - tr
            - tl
            - ta
            - te
            - uk
            - vi
          type: string
          x-spec-enum-id: b822ad429c7b7fec
          default: en
          description: >-

            The primary language this agent uses for communication (e.g. 'en'
            for English)



            * `af` - Afrikaans

            * `ar` - Arabic

            * `bn` - Bengali

            * `bg` - Bulgarian

            * `zh` - Chinese Simplified

            * `cs` - Czech

            * `da` - Danish

            * `nl` - Dutch

            * `en` - English

            * `et` - Estonian

            * `fi` - Finnish

            * `fr` - French

            * `de` - German

            * `el` - Greek

            * `gu` - Gujarati

            * `hi` - Hindi

            * `he` - Hebrew

            * `hu` - Hungarian

            * `id` - Indonesian

            * `it` - Italian

            * `ja` - Japanese

            * `kn` - Kannada

            * `ko` - Korean

            * `ms` - Malay

            * `ml` - Malayalam

            * `mr` - Marathi

            * `multi` - Multilingual

            * `no` - Norwegian

            * `pl` - Polish

            * `pa` - Punjabi

            * `pt` - Portuguese

            * `ro` - Romanian

            * `ru` - Russian

            * `sk` - Slovak

            * `es` - Spanish

            * `sv` - Swedish

            * `th` - Thai

            * `tr` - Turkish

            * `tl` - Tagalog

            * `ta` - Tamil

            * `te` - Telugu

            * `uk` - Ukrainian

            * `vi` - Vietnamese
        telephony:
          allOf:
            - $ref: '#/components/schemas/AgentTelephony'
          readOnly: true
          description: Phone and SIP/websocket channel configuration.
        provider:
          allOf:
            - $ref: '#/components/schemas/AgentProvider'
          readOnly: true
          description: >-
            AI platform integration (provider type, agent id, credential status,
            chat config).
        agent_speaks_first:
          type:
            - boolean
            - 'null'
          description: >-
            True = agent speaks first; False = test user speaks first; null =
            auto-detect.
        predefined_metrics:
          writeOnly: true
          description: predefined metrics to use for the agent
        knowledge_base_files:
          type: array
          items:
            $ref: '#/components/schemas/KnowledgeBaseFile'
          readOnly: true
          description: Knowledge base files attached to the agent.
        enabled_personalities:
          type: array
          items:
            type: integer
          readOnly: true
          description: |

            Personality profiles enabled for this agent
            Example: `[1, 2, 3]`
        webhook_url:
          type: string
          format: uri
          description: >-
            Webhook URL for this agent. When set, overrides the project-level
            webhook URL for events from this agent.
        webhook_secret:
          type: string
          writeOnly: true
          description: >-
            Secret sent in X-CEKURA-SECRET header. Applies when agent
            webhook_url is set. Write-only — never returned in API responses.
            Use `webhook_secret_configured` to check whether one is set.
        webhook_secret_configured:
          type: string
          readOnly: true
        mock_tools:
          type: array
          items:
            $ref: '#/components/schemas/AgentMockToolRead'
          readOnly: true
          description: >-
            Mock tools registered on the agent, each with its mock data and
            runtime access (served_via).
        mock_tools_enabled:
          type: boolean
          readOnly: true
          description: >-
            Whether mock-tool mode is currently active on the provider. Default
            false.
        mock_tools_provider:
          type:
            - string
            - 'null'
          readOnly: true
          description: >-
            Provider the mock tools were fetched from (vapi, retell, elevenlabs,
            custom). Null until auto-fetch has been run.
        dynamic_variables:
          type: array
          items:
            $ref: '#/components/schemas/AgentDynamicVariableRead'
          readOnly: true
          description: Dynamic variable definitions for the agent, ordered by name.
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: |

            Timestamp when the agent was created
            Example: `"2021-01-01T00:00:00Z"`
        updated_at:
          type: string
          format: date-time
          readOnly: true
          description: |

            Timestamp when the agent was last updated
            Example: `"2021-01-01T00:00:00Z"`
      required:
        - description
    AgentTelephony:
      type: object
      description: Phone / SIP / websocket voice channel configuration for the agent.
      properties:
        phone_number:
          type: string
          description: E.164 phone number for inbound calls, e.g. +14155551234.
        inbound:
          type: boolean
          default: false
          description: True = agent receives inbound calls; False = outbound only.
        sip_uri:
          type:
            - string
            - 'null'
          description: SIP URI, e.g. sip:user@domain.com.
        sip_auth:
          oneOf:
            - {}
            - type: 'null'
          description: 'SIP credentials: {username, password}.'
        websocket_url:
          type:
            - string
            - 'null'
          description: >-
            Raw-PCM (16kHz 16-bit mono) websocket endpoint Cekura dials to run
            the whole call over a websocket you host, e.g.
            wss://your-host/voice.
        websocket_auth:
          oneOf:
            - {}
            - type: 'null'
          description: >-
            HTTP Basic Auth credentials for the websocket upgrade: {username,
            password}.
        outbound_numbers:
          type: array
          items:
            type: string
          description: >-
            Phone numbers authorized for outbound calls (E.164 format). Example:
            `["+14155551234", "+14155550000"]`
    SchemaAgentProviderCreate:
      type: object
      properties:
        type:
          enum:
            - vapi
            - retell
            - elevenlabs
            - self_hosted
            - cisco
            - bland
            - livekit
            - pipecat
            - synthflow
            - agora
            - koreai
            - genesys
            - amazon_connect
            - telnyx
            - custom
            - ''
          type: string
          x-spec-enum-id: 4bbea9038bd498ab
          description: >-
            Voice/inbound platform provider type. Valid values: vapi, retell,
            elevenlabs, bland, livekit, cisco, synthflow, koreai, genesys,
            amazon_connect, self_hosted, pipecat, custom. Use 'custom' (or omit)
            for chat-only agents with no voice provider — the chat channel goes
            in chat_agent_details.type. For a raw-PCM websocket voice agent you
            host yourself, use type='custom' and put the endpoint in
            telephony.websocket_url. Text-only channels (sms, whatsapp,
            agentforce) belong in chat_agent_details.type, not here.


            * `vapi` - Vapi

            * `retell` - Retell

            * `elevenlabs` - Elevenlabs

            * `self_hosted` - Self Hosted

            * `cisco` - Cisco

            * `bland` - Bland

            * `livekit` - Livekit

            * `pipecat` - Pipecat

            * `synthflow` - Synthflow

            * `agora` - Agora

            * `koreai` - Koreai

            * `genesys` - Genesys

            * `amazon_connect` - Amazon Connect

            * `telnyx` - Telnyx

            * `custom` - Custom (chat-only, no voice provider)
        agent_id:
          type:
            - string
            - 'null'
          description: >-
            Agent ID for voice/inbound runs on the provider's platform. For
            vapi, elevenlabs, retell, self_hosted, synthflow, and bland this is
            the voice agent ID (for bland it's the persona_id). Bland's
            pathway_id and retell's chat agent ID go in
            chat_agent_details.config.agent_id.
        credentials:
          oneOf:
            - $ref: '#/components/schemas/AgentCredentials'
            - type: 'null'
        chat_agent_details:
          oneOf:
            - $ref: '#/components/schemas/ChatAgentDetails'
            - type: 'null'
          description: >-
            Optional chat/text-mode configuration. Defines which provider
            handles text-mode test runs. The allowed chat type depends on the
            voice provider.type.
        auto_dial_outbound:
          type:
            - boolean
            - 'null'
          description: >-
            Auto-dial the outbound number when running outbound scenarios.
            Supported for: vapi, retell, elevenlabs, bland, livekit.
        auto_import_calls:
          type:
            - boolean
            - 'null'
          description: >-
            Auto-import calls from the provider every 30s. Supported for: vapi,
            retell, elevenlabs.
        auto_sync_prompt:
          type:
            - boolean
            - 'null'
          description: >-
            Auto-sync the agent from the provider on a schedule. Supported for:
            vapi, retell, elevenlabs, synthflow.
        send_post_conversation_metadata:
          type:
            - boolean
            - 'null'
          description: >-
            Enable Cekura to accept call transcripts pushed by your agent via
            POST /custom-provider-webhook/. Only for self-hosted (custom)
            providers.
        configure_from_provider:
          type: boolean
          default: false
          description: >-
            When true on create for a cloud provider
            (vapi/retell/elevenlabs/synthflow), Cekura fetches the assistant's
            prompt, settings, phone, tools, dynamic variables and knowledge base
            and configures the agent automatically. Requires agent_id +
            credentials.api_key. The create response includes a progress_id to
            poll import-progress/.
    AgentKnowledgeBaseFileWrite:
      type: object
      description: >-
        One knowledge base file entry in the v2 agent write payload (request
        side of `knowledge_base_files`).
      properties:
        id:
          type: integer
          description: >-
            ID of an existing file to keep. Files omitted from the list are
            deleted.
        file_name:
          type: string
          description: >-
            Name for a new file, including extension (pdf, txt, json, csv, xml,
            md).
        name:
          type: string
          description: Alias for file_name.
        content_base64:
          type: string
          description: >-
            Base64-encoded content for a new file. A data-URI prefix is
            accepted.
    AgentMockToolWrite:
      type: object
      description: >-
        One mock tool entry in the v2 agent write payload (request side of
        `mock_tools`).
      properties:
        id:
          type: integer
          description: >-
            ID of an existing mock tool to update. Omit to create a new tool (or
            update by matching name).
        name:
          type: string
          description: >-
            Tool name. Required for new tools. Alphanumerics, underscores and
            hyphens only; under 64 characters.
          maxLength: 255
        description:
          type: string
          description: What the tool does.
        mock_data:
          description: >-
            List of {input, output} mappings returned when the tool is called in
            mock mode.
        freetext_params:
          type: array
          items:
            type: string
          description: >-
            Parameter names skipped during mock matching because they are
            free-text (e.g. ["notes", "reason"]).
        served_via:
          allOf:
            - $ref: '#/components/schemas/AgentMockToolServedViaWrite'
          description: >-
            How the agent reaches this tool at runtime. Omit for a direct
            per-tool URL; set type='mcp' with a mock_index to group tools under
            a shared MCP endpoint.
    AgentDynamicVariableWrite:
      type: object
      description: >-
        One dynamic variable entry in the v2 agent write payload (request side
        of `dynamic_variables`).
      properties:
        id:
          type: integer
          description: Ignored on write — variables are matched by name.
        name:
          type: string
          description: Variable name exactly as it appears in the agent context.
          maxLength: 255
        description:
          type: string
          description: What the variable represents and its expected format.
      required:
        - description
        - name
    AgentProvider:
      type: object
      properties:
        type:
          enum:
            - vapi
            - retell
            - elevenlabs
            - self_hosted
            - cisco
            - bland
            - livekit
            - pipecat
            - synthflow
            - agora
            - koreai
            - genesys
            - amazon_connect
            - telnyx
            - custom
            - ''
          type: string
          x-spec-enum-id: 4bbea9038bd498ab
          description: >-
            Voice/inbound platform provider type. Valid values: vapi, retell,
            elevenlabs, bland, livekit, cisco, synthflow, koreai, genesys,
            amazon_connect, self_hosted, pipecat, custom. Use 'custom' (or omit)
            for chat-only agents with no voice provider — the chat channel goes
            in chat_agent_details.type. For a raw-PCM websocket voice agent you
            host yourself, use type='custom' and put the endpoint in
            telephony.websocket_url. Text-only channels (sms, whatsapp,
            agentforce) belong in chat_agent_details.type, not here.


            * `vapi` - Vapi

            * `retell` - Retell

            * `elevenlabs` - Elevenlabs

            * `self_hosted` - Self Hosted

            * `cisco` - Cisco

            * `bland` - Bland

            * `livekit` - Livekit

            * `pipecat` - Pipecat

            * `synthflow` - Synthflow

            * `agora` - Agora

            * `koreai` - Koreai

            * `genesys` - Genesys

            * `amazon_connect` - Amazon Connect

            * `telnyx` - Telnyx

            * `custom` - Custom (chat-only, no voice provider)
        agent_id:
          type:
            - string
            - 'null'
          description: >-
            Agent ID for voice/inbound runs on the provider's platform. For
            vapi, elevenlabs, retell, self_hosted, synthflow, and bland this is
            the voice agent ID (for bland it's the persona_id). Bland's
            pathway_id and retell's chat agent ID go in
            chat_agent_details.config.agent_id.
        credentials:
          oneOf:
            - $ref: '#/components/schemas/AgentCredentials'
            - type: 'null'
        chat_agent_details:
          oneOf:
            - $ref: '#/components/schemas/ChatAgentDetails'
            - type: 'null'
          description: >-
            Optional chat/text-mode configuration. Defines which provider
            handles text-mode test runs. The allowed chat type depends on the
            voice provider.type.
        auto_dial_outbound:
          type:
            - boolean
            - 'null'
          description: >-
            Auto-dial the outbound number when running outbound scenarios.
            Supported for: vapi, retell, elevenlabs, bland, livekit.
        auto_import_calls:
          type:
            - boolean
            - 'null'
          description: >-
            Auto-import calls from the provider every 30s. Supported for: vapi,
            retell, elevenlabs.
        auto_sync_prompt:
          type:
            - boolean
            - 'null'
          description: >-
            Auto-sync the agent from the provider on a schedule. Supported for:
            vapi, retell, elevenlabs, synthflow.
        send_post_conversation_metadata:
          type:
            - boolean
            - 'null'
          description: >-
            Enable Cekura to accept call transcripts pushed by your agent via
            POST /custom-provider-webhook/. Only for self-hosted (custom)
            providers.
    KnowledgeBaseFile:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        agent:
          type: integer
        file:
          type: string
          format: uri
          writeOnly: true
          description: Knowledge base file
          pattern: (?:pdf|txt|json|csv|xml|md)$
        file_url:
          type: string
          readOnly: true
          description: URL of the Knowledge file
        file_name:
          type: string
          readOnly: true
          description: Name of the Knowledge file
        file_type:
          type: string
          readOnly: true
          description: MIME type of the Knowledge file
        file_size:
          type: integer
          readOnly: true
          description: |-
            Size in bytes.
            Example: `1048576`
        created_at:
          type: string
          format: date-time
          readOnly: true
          description: |-
            When this record was created.
            Example: `2024-03-15T10:30:45Z`
        updated_at:
          type: string
          format: date-time
          readOnly: true
          description: |-
            When this record was last updated.
            Example: `2024-03-15T10:35:11Z`
      required:
        - agent
        - file
    AgentMockToolRead:
      type: object
      description: One mock tool in the v2 agent response (`mock_tools[]`).
      properties:
        id:
          type: integer
        name:
          type: string
        description:
          type: string
        mock_data:
          description: >-
            List of {input, output} mappings returned when the tool is called in
            mock mode.
        served_via:
          $ref: '#/components/schemas/AgentMockToolServedVia'
      required:
        - description
        - id
        - mock_data
        - name
        - served_via
    AgentDynamicVariableRead:
      type: object
      description: One dynamic variable in the v2 agent response (`dynamic_variables[]`).
      properties:
        id:
          type: integer
        name:
          type: string
        description:
          type: string
      required:
        - description
        - id
        - name
    AgentCredentials:
      type: object
      description: Nested credentials block inside the provider object.
      properties:
        api_key:
          type: string
          writeOnly: true
          description: >-
            API key or client secret for the provider (write-only — never
            returned). Required for: vapi, retell, elevenlabs, bland, livekit,
            pipecat, synthflow. koreai uses client_secret (passed as api_key).
            Not needed for: cisco, self_hosted.
        config:
          oneOf:
            - $ref: '#/components/schemas/ProviderCredentialsConfig'
            - type: 'null'
    ChatAgentDetails:
      type: object
      description: Chat-mode provider configuration nested inside the provider block.
      properties:
        type:
          enum:
            - retell
            - bland
            - vapi
            - elevenlabs
            - livekit
            - agora
            - sms
            - whatsapp
            - self_hosted
            - agentforce
            - amazon_connect
            - koreai
            - ''
          type: string
          x-spec-enum-id: 0a46c52849d3f58d
          description: >-
            Chat provider type. Must be compatible with the voice provider.type.
            Valid values: retell, bland, vapi, elevenlabs, livekit, agora, sms,
            whatsapp, self_hosted, agentforce, amazon_connect, koreai. Pass an
            empty string "" (or send chat_agent_details: null) to clear the chat
            overlay.


            * `retell` - retell

            * `bland` - bland

            * `vapi` - vapi

            * `elevenlabs` - elevenlabs

            * `livekit` - livekit

            * `agora` - agora

            * `sms` - sms

            * `whatsapp` - whatsapp

            * `self_hosted` - self_hosted

            * `agentforce` - agentforce

            * `amazon_connect` - amazon_connect

            * `koreai` - koreai
        config:
          oneOf:
            - $ref: '#/components/schemas/ChatAgentConfig'
            - type: 'null'
    AgentMockToolServedViaWrite:
      type: object
      description: >-
        Runtime routing for a mock tool on write (request side of
        `mock_tools[].served_via`).
      properties:
        type:
          enum:
            - direct
            - mcp
          type: string
          x-spec-enum-id: b34eaed2d733c895
          default: direct
          description: >-
            'direct' = per-tool webhook URL (default). 'mcp' = served through an
            MCP endpoint; requires mock_index.


            * `direct` - direct

            * `mcp` - mcp
        mock_index:
          type: integer
          minimum: 1
          description: >-
            MCP endpoint index (1-based). Tools sharing an index are served by
            the same MCP endpoint. Required when type='mcp'.
    AgentMockToolServedVia:
      type: object
      description: >-
        How a mock tool is reached at runtime (response side of
        `mock_tools[].served_via`).
      properties:
        type:
          enum:
            - direct
            - mcp
          type: string
          x-spec-enum-id: b34eaed2d733c895
          description: >-
            'direct' = per-tool webhook URL; 'mcp' = served through the agent's
            MCP endpoint.


            * `direct` - direct

            * `mcp` - mcp
        url:
          type: string
          description: Runtime URL the agent calls to reach this tool.
        mock_index:
          type: integer
          description: MCP endpoint index. Present only when type='mcp'.
      required:
        - type
        - url
    ProviderCredentialsConfig:
      oneOf:
        - $ref: '#/components/schemas/VapiConfig'
        - $ref: '#/components/schemas/RetellConfig'
        - $ref: '#/components/schemas/ElevenLabsConfig'
        - $ref: '#/components/schemas/BlandConfig'
        - $ref: '#/components/schemas/LiveKitConfig'
        - $ref: '#/components/schemas/SynthflowConfig'
        - $ref: '#/components/schemas/KoreAiConfig'
        - $ref: '#/components/schemas/GenesysConfig'
        - $ref: '#/components/schemas/PipecatConfig'
        - $ref: '#/components/schemas/SelfHostedConfig'
        - $ref: '#/components/schemas/AmazonConnectConfig'
    ChatAgentConfig:
      oneOf:
        - $ref: '#/components/schemas/RetellChatConfig'
        - $ref: '#/components/schemas/BlandChatConfig'
        - $ref: '#/components/schemas/AgentforceChatConfig'
        - $ref: '#/components/schemas/SelfHostedChatConfig'
        - $ref: '#/components/schemas/AmazonConnectChatConfig'
    VapiConfig:
      type: object
      description: VAPI provider configuration.
      properties:
        public_key:
          type: string
          description: >-
            VAPI Public Key for WebRTC sessions only. Not required for telephony
            or chat testing.
        trigger_url:
          type: string
          description: URL Cekura calls to create outbound VAPI phone calls.
      title: VAPI
    RetellConfig:
      type: object
      description: Retell provider configuration.
      properties:
        trigger_url:
          type: string
          description: URL Cekura calls to create outbound Retell phone calls.
        livekit_server_url:
          type: string
          description: >-
            Override the default Retell LiveKit server URL, e.g.
            wss://retell-ai-4ihahnq7.livekit.cloud. Only change if you need a
            specific Retell region.
      title: Retell
    ElevenLabsConfig:
      type: object
      description: ElevenLabs provider configuration.
      properties:
        trigger_url:
          type: string
          description: URL Cekura calls to create outbound ElevenLabs phone calls.
        elevenlabs_region:
          enum:
            - us
            - eu
          type: string
          x-spec-enum-id: 450cf1402ab1a3c6
          description: >-
            ElevenLabs API region. 'us' uses api.elevenlabs.io, 'eu' uses
            api.eu.residency.elevenlabs.io. Defaults to 'us'.


            * `us` - us

            * `eu` - eu
        elevenlabs_base_url_override:
          type: string
          description: >-
            Optional custom base URL for ElevenLabs API. Takes precedence over
            elevenlabs_region if set.
      title: ElevenLabs
    BlandConfig:
      type: object
      description: Bland AI provider configuration.
      properties:
        encrypted_key:
          type: string
          description: >-
            Twilio credential bundle for Bland outbound calls. Required when
            using Bland with Twilio telephony.
      title: Bland
    LiveKitConfig:
      type: object
      description: LiveKit provider configuration.
      properties:
        api_secret:
          type: string
          description: LiveKit API secret. Required alongside api_key.
        url:
          type: string
          description: LiveKit server WebSocket URL, e.g. wss://acme.livekit.cloud.
        agent_name:
          type: string
          description: LiveKit agent name to connect to.
        config:
          description: Additional LiveKit configuration as a JSON object.
        tracing_enabled:
          type: boolean
          description: >-
            Enable LiveKit tracing (requires Cekura SDK integrated in your
            LiveKit agent).
        trigger_url:
          type: string
          description: URL Cekura calls to create outbound phone calls.
      required:
        - api_secret
        - url
      title: LiveKit
    SynthflowConfig:
      type: object
      description: Synthflow provider configuration.
      properties:
        synthflow_base_url_override:
          type: string
          description: >-
            Optional custom base URL for Synthflow API, e.g. for EU residency.
            Leave empty to use the default endpoint.
      title: Synthflow
    KoreAiConfig:
      type: object
      description: Kore.ai provider configuration.
      properties:
        client_id:
          type: string
          description: KoreAI OAuth2 Client ID.
        bot_id:
          type: string
          description: KoreAI Bot ID to connect to.
        host:
          type: string
          description: KoreAI host URL. Defaults to https://bots.kore.ai.
      required:
        - bot_id
        - client_id
      title: Kore.ai
    GenesysConfig:
      type: object
      description: Genesys Cloud provider configuration.
      properties:
        client_id:
          type: string
          description: Genesys Cloud OAuth2 Client ID.
        region:
          type: string
          description: Genesys Cloud region, e.g. us-east-1.
      required:
        - client_id
        - region
      title: Genesys
    PipecatConfig:
      type: object
      description: Pipecat provider configuration.
      properties:
        pipecat_agent_name:
          type: string
          description: Name of the Pipecat agent. Required when tracing_enabled is false.
        config:
          description: Additional agent configuration as a JSON object.
        room_properties:
          description: Room properties configuration as a JSON object.
        webhook_url:
          type: string
          description: Webhook URL for Pipecat call events.
        tracing_enabled:
          type: boolean
          description: >-
            Enable Pipecat tracing (requires Cekura SDK integrated in your
            Pipecat agent). When true, pipecat_agent_name is not required.
      title: Pipecat
    SelfHostedConfig:
      type: object
      description: Self-hosted provider configuration.
      properties:
        send_post_conversation_metadata:
          type: boolean
          description: >-
            Enable Cekura to accept call transcripts pushed by your agent via
            POST /custom-provider-webhook/. Set to true when your agent sends
            its own transcripts to Cekura after each call.
      title: Self-hosted
    AmazonConnectConfig:
      type: object
      description: Amazon Connect provider configuration.
      properties:
        widget_id:
          type: string
          description: Chat widget UUID from the Amazon Connect console.
        snippet_id:
          type: string
          description: Base64-encoded KMS snippet from your Amazon Connect chat widget.
        connect_host:
          type: string
          description: Amazon Connect instance host, e.g. acme.my.connect.aws.
        region:
          type: string
          description: AWS region for the Connect instance. Defaults to us-east-1.
    RetellChatConfig:
      type: object
      description: Retell chat configuration.
      properties:
        agent_id:
          type: string
          description: The Retell agent ID to use for text-mode test runs.
      required:
        - agent_id
      title: Retell
    BlandChatConfig:
      type: object
      description: Bland chat configuration.
      properties:
        agent_id:
          type: string
          description: The Bland pathway_id to use for text-mode test runs.
      required:
        - agent_id
      title: Bland
    AgentforceChatConfig:
      type: object
      description: Agentforce (Salesforce) chat configuration.
      properties:
        client_secret:
          type: string
          description: OAuth2 client secret for Salesforce authentication.
        client_id:
          type: string
          description: OAuth2 client ID for Salesforce authentication.
        domain:
          type: string
          description: Salesforce domain, e.g. https://example.sandbox.my.salesforce.com.
        agent_id:
          type: string
          description: Agentforce agent ID (0Xx...).
      required:
        - agent_id
        - client_id
        - client_secret
        - domain
      title: Agentforce
    SelfHostedChatConfig:
      type: object
      description: Self-hosted websocket chat configuration.
      properties:
        url:
          type: string
          description: WebSocket endpoint URL (wss://) to connect for text-mode test runs.
        headers:
          type: object
          additionalProperties: {}
          description: >-
            Optional headers to send on the WebSocket upgrade request, e.g.
            {"Authorization": "Bearer token"}.
        websocket_secret:
          type: string
          writeOnly: true
          description: >-
            Secret sent as the X-VOCERA-SECRET header on the WebSocket upgrade
            (write-only — masked in responses).
      required:
        - url
      title: Self-hosted (WebSocket)
    AmazonConnectChatConfig:
      type: object
      description: Amazon Connect chat-widget configuration.
      properties:
        widget_id:
          type: string
          description: Chat-widget UUID from the Amazon Connect console.
        snippet_id:
          type: string
          description: Base64-encoded KMS snippet from your Amazon Connect chat widget.
        connect_host:
          type: string
          description: Amazon Connect instance host, e.g. acme.my.connect.aws.
        region:
          type: string
          description: AWS region for the Connect instance. Defaults to us-east-1.
      required:
        - connect_host
        - snippet_id
        - widget_id
  securitySchemes:
    api_key:
      type: apiKey
      name: X-CEKURA-API-KEY
      in: header
      description: >-
        API Key Authentication. It should be included in the header of each
        request.

````