openapi: 3.2.0 info: title: DialNexa Agents API description: Public `/v1` REST API for the DialNexa voice AI platform. version: 1.0.0 servers: - url: https://api.dialnexa.com description: DialNexa production API security: - bearer: [] tags: - name: Agents paths: /v1/agents: post: description: 'Creates an agent with its first draft version. Optionally include `agent_functions` and `post_call_analysis` in the body to set them at creation time. **Phone number fields:** `inbound_phone_number_id` and `outbound_phone_number_id` must belong to the authenticated workspace. On create, these IDs are stored on the draft version. Live dispatch routing is claimed when the version is published through `PATCH /v1/agents/{id}` with `is_published: true`.' operationId: createAgent parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateAgentRequest' examples: request: summary: Create an agent value: title: Customer Support Agent language_id: lang_en_in voice_id: voice_abc123 llm_id: llm_A1B2C3D4E5F6G7 transcriber_id: trs_deepgram_nova_2 system_prompt_text: You are a helpful support agent. Confirm the customer issue and summarize next steps. fallback_stt_enabled: true stt_fallback_transcriber_id: trs_soniox post_call_analysis: - field_name: issue_type field_type: STRING field_description: Main customer issue discussed on the call predictive_preprocessing_enabled: false outbound_phone_number_id: phn_def456 agent_type: Single_Prompt_Agent prompt_text: You are a helpful support agent. Confirm the customer's issue and summarize next steps. responses: '201': description: Agent created successfully. content: application/json: schema: $ref: '#/components/schemas/Agents' examples: success: summary: Successful response value: id: agent_2g7Xy3tY53gRlp folder_id: null current_version_number: 1 timezone: Asia/Kolkata agent_type: Single_Prompt_Agent pipeline_type: Cascaded webhook_id: null current_version: agent_id: agent_2g7Xy3tY53gRlp version_number: 1 version_title: Version 1 title: Customer Support Agent is_published: false language_id: lang_en_in voice_id: voice_abc123 llm_id: llm_A1B2C3D4E5F6G7 transcriber_id: trs_deepgram_nova_2 fallback_stt_enabled: true stt_fallback_transcriber_id: trs_soniox post_call_analysis_llm_id: llm_A1B2C3D4E5F6G7 versions: - agent_id: agent_2g7Xy3tY53gRlp version_number: 1 version_title: Version 1 title: Customer Support Agent is_published: false language_id: lang_en_in voice_id: voice_abc123 llm_id: llm_A1B2C3D4E5F6G7 transcriber_id: trs_deepgram_nova_2 fallback_stt_enabled: true stt_fallback_transcriber_id: trs_soniox post_call_analysis_llm_id: llm_A1B2C3D4E5F6G7 '400': description: Invalid request body. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 400 Bad Request value: statusCode: 400 message: Request validation failed error: Bad Request '401': description: Unauthorized - missing or invalid API key. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 401 Unauthorized value: statusCode: 401 message: API key is missing or invalid error: Unauthorized '403': description: Forbidden - API key does not have access to this organization. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 403 Forbidden value: statusCode: 403 message: You do not have permission to access this resource error: Forbidden '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 500 Internal Server Error value: statusCode: 500 message: Internal server error error: Internal Server Error security: - bearer: [] summary: Create Agent tags: - Agents get: description: Returns all agents for your organization. Agent functions are NOT included in list responses - fetch a specific agent by ID to get its functions. operationId: listAgents parameters: [] responses: '200': description: Agents returned successfully. content: application/json: schema: type: object properties: agents: type: array items: $ref: '#/components/schemas/Agents' examples: success: summary: Successful response value: agents: - id: agent_2g7Xy3tY53gRlp folder_id: null current_version_number: 1 timezone: Asia/Kolkata agent_type: Single_Prompt_Agent pipeline_type: Cascaded webhook_id: null current_version: agent_id: agent_2g7Xy3tY53gRlp version_number: 1 version_title: Version 1 title: Customer Support Agent is_published: false language_id: lang_en_in voice_id: voice_abc123 llm_id: llm_A1B2C3D4E5F6G7 transcriber_id: trs_deepgram_nova_2 fallback_stt_enabled: true stt_fallback_transcriber_id: trs_soniox post_call_analysis_llm_id: llm_A1B2C3D4E5F6G7 versions: - agent_id: agent_2g7Xy3tY53gRlp version_number: 1 version_title: Version 1 title: Customer Support Agent is_published: false language_id: lang_en_in voice_id: voice_abc123 llm_id: llm_A1B2C3D4E5F6G7 transcriber_id: trs_deepgram_nova_2 fallback_stt_enabled: true stt_fallback_transcriber_id: trs_soniox post_call_analysis_llm_id: llm_A1B2C3D4E5F6G7 '400': description: Invalid query parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 400 Bad Request value: statusCode: 400 message: Invalid query parameters error: Bad Request '401': description: Unauthorized - missing or invalid API key. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 401 Unauthorized value: statusCode: 401 message: API key is missing or invalid error: Unauthorized '403': description: Forbidden. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 403 Forbidden value: statusCode: 403 message: You do not have permission to access this resource error: Forbidden '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 500 Internal Server Error value: statusCode: 500 message: Internal server error error: Internal Server Error security: - bearer: [] summary: List Agents tags: - Agents /v1/agents/{id}: patch: description: 'Updates the specified draft version of an agent. `version_number` is required. **Managing functions via this endpoint:** - Pass `agent_functions: [...]` to fully replace all functions for that version. - Pass `agent_functions: []` to remove all functions. - Omit `agent_functions` entirely to leave existing functions untouched. **Post-call analysis LLM:** - Pass `post_call_analysis_llm_id`, for example `llm_A1B2C3D4E5F6G7`, to set the LLM used for post-call field extraction. - Pass `null` to clear the override and revert to the organization default. - Omit the field to leave it unchanged. **Phone number assignment:** - `inbound_phone_number_id` and `outbound_phone_number_id` are applied to live routing only when `is_published: true` is included in the same request. - Sending a phone number ID without `is_published: true` leaves live routing unchanged. - Pass an empty string to detach a phone number while publishing. - Outbound changes can return `409 Conflict` when active workflows still use the number. Pause those workflows before retrying. Published versions cannot be updated, except to set `is_published: true` to publish a draft.' operationId: updateAgent parameters: - name: id required: true in: path description: Agent ID schema: example: agent_2g7Xy3tY53gRlp type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateAgentRequest' examples: request: summary: Update a draft agent version value: version_number: 1 title: Customer Support Agent llm_id: llm_A1B2C3D4E5F6G7 fallback_stt_enabled: true stt_fallback_transcriber_id: trs_soniox post_call_analysis_llm_id: llm_A1B2C3D4E5F6G7 clearPostCallAnalysisLlm: summary: Clear post-call analysis LLM override value: version_number: 1 post_call_analysis_llm_id: null publishWithOutboundNumber: summary: Publish a draft with an outbound number value: version_number: 1 is_published: true outbound_phone_number_id: phn_def456 detachOutboundNumber: summary: Publish while detaching an outbound number value: version_number: 2 is_published: true outbound_phone_number_id: '' responses: '200': description: Agent updated successfully. content: application/json: schema: $ref: '#/components/schemas/Agents' examples: success: summary: Successful response value: id: agent_2g7Xy3tY53gRlp folder_id: null current_version_number: 1 timezone: Asia/Kolkata agent_type: Single_Prompt_Agent pipeline_type: Cascaded webhook_id: null current_version: agent_id: agent_2g7Xy3tY53gRlp version_number: 1 version_title: Version 1 title: Customer Support Agent is_published: false language_id: lang_en_in voice_id: voice_abc123 llm_id: llm_A1B2C3D4E5F6G7 transcriber_id: trs_deepgram_nova_2 fallback_stt_enabled: true stt_fallback_transcriber_id: trs_soniox post_call_analysis_llm_id: llm_A1B2C3D4E5F6G7 versions: - agent_id: agent_2g7Xy3tY53gRlp version_number: 1 version_title: Version 1 title: Customer Support Agent is_published: false language_id: lang_en_in voice_id: voice_abc123 llm_id: llm_A1B2C3D4E5F6G7 transcriber_id: trs_deepgram_nova_2 fallback_stt_enabled: true stt_fallback_transcriber_id: trs_soniox post_call_analysis_llm_id: llm_A1B2C3D4E5F6G7 '400': description: Invalid body or attempting to update a published version. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 400 Bad Request value: statusCode: 400 message: Request validation failed error: Bad Request '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 401 Unauthorized value: statusCode: 401 message: API key is missing or invalid error: Unauthorized '403': description: Forbidden. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 403 Forbidden value: statusCode: 403 message: You do not have permission to access this resource error: Forbidden '404': description: Agent or version not found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 404 Not Found value: statusCode: 404 message: Agent not found error: Not Found '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 500 Internal Server Error value: statusCode: 500 message: Internal server error error: Internal Server Error '409': description: Phone number assignment conflicts with active workflows. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: phoneNumberUsedInActiveWorkflows: summary: 409 Conflict value: statusCode: 409 message: Cannot bind outbound_phone_number_id "phn_def456" to this agent because it is currently used by active workflows. Pause those workflows first, then retry. error: Conflict security: - bearer: [] summary: Update Agent tags: - Agents delete: description: Deletes an agent and all its versions. Historical call records remain available. operationId: deleteAgent parameters: - name: id required: true in: path description: Agent ID schema: example: agent_2g7Xy3tY53gRlp type: string responses: '200': description: Agent deleted successfully. content: application/json: examples: success: summary: Successful response value: success: true message: Agent deleted successfully schema: type: object properties: success: type: boolean example: true message: type: string example: Agent deleted successfully '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 401 Unauthorized value: statusCode: 401 message: API key is missing or invalid error: Unauthorized '403': description: Forbidden. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 403 Forbidden value: statusCode: 403 message: You do not have permission to access this resource error: Forbidden '404': description: Agent not found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 404 Not Found value: statusCode: 404 message: Agent not found error: Not Found '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 500 Internal Server Error value: statusCode: 500 message: Internal server error error: Internal Server Error security: - bearer: [] summary: Delete Agent tags: - Agents get: description: Returns the agent with all versions. Each version includes `agent_functions`, `pronunciations`, and `postcall_analysis` embedded. operationId: getAgent parameters: - name: id required: true in: path description: Agent ID schema: example: agent_2g7Xy3tY53gRlp type: string responses: '200': description: Agent returned with all versions and embedded agent_functions. content: application/json: schema: $ref: '#/components/schemas/Agents' examples: success: summary: Successful response value: id: agent_2g7Xy3tY53gRlp folder_id: null current_version_number: 1 timezone: Asia/Kolkata agent_type: Single_Prompt_Agent pipeline_type: Cascaded webhook_id: null current_version: agent_id: agent_2g7Xy3tY53gRlp version_number: 1 version_title: Version 1 title: Customer Support Agent is_published: false language_id: lang_en_in voice_id: voice_abc123 llm_id: llm_A1B2C3D4E5F6G7 transcriber_id: trs_deepgram_nova_2 fallback_stt_enabled: true stt_fallback_transcriber_id: trs_soniox post_call_analysis_llm_id: llm_A1B2C3D4E5F6G7 versions: - agent_id: agent_2g7Xy3tY53gRlp version_number: 1 version_title: Version 1 title: Customer Support Agent is_published: false language_id: lang_en_in voice_id: voice_abc123 llm_id: llm_A1B2C3D4E5F6G7 transcriber_id: trs_deepgram_nova_2 fallback_stt_enabled: true stt_fallback_transcriber_id: trs_soniox post_call_analysis_llm_id: llm_A1B2C3D4E5F6G7 '400': description: Invalid agent ID format. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 400 Bad Request value: statusCode: 400 message: Invalid query parameters error: Bad Request '401': description: Unauthorized. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 401 Unauthorized value: statusCode: 401 message: API key is missing or invalid error: Unauthorized '403': description: Forbidden - agent does not belong to your organization. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 403 Forbidden value: statusCode: 403 message: You do not have permission to access this resource error: Forbidden '404': description: Agent not found. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 404 Not Found value: statusCode: 404 message: Agent not found error: Not Found '500': description: Internal server error. content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' examples: error: summary: 500 Internal Server Error value: statusCode: 500 message: Internal server error error: Internal Server Error security: - bearer: [] summary: Get Agent Details tags: - Agents components: schemas: ErrorResponse: type: object properties: statusCode: type: integer example: 400 message: oneOf: - type: string - type: array items: type: string example: phone_number must be a valid E.164 phone number error: type: string example: Bad Request required: - statusCode - message - error UpdateAgentRequest: type: object properties: background_sound: type: string description: Background sound file or identifier background_sound_volume: type: number minimum: 0 maximum: 2 description: Volume of background sound (0 to 2) ambient_noise: type: boolean description: Enable or disable ambient noise playback on the call responsiveness: type: number minimum: 0 maximum: 5 description: Responsiveness level from 0 to 1. interruption_sensitivity: type: number minimum: 0 maximum: 1 description: Interruption sensitivity level (0 to 1) response_eagerness: type: number minimum: 0 maximum: 1 description: How eagerly the agent responds (0 to 1). Only applied when transcriber is Soniox. backchanneling: type: boolean description: Enable or disable backchanneling backchannel_frequency: type: number minimum: 0 maximum: 1 description: Frequency of backchannel responses example: 0.5 transcription_mode: type: string enum: - optimize_for_speed - optimize_for_accuracy description: Mode for transcription denoising_mode: type: - string - 'null' enum: - remove_noise - remove_noise_and_speech description: Mode for denoising audio input speech_normalization: type: boolean description: Enable or disable speech normalization transcript_formatting: type: boolean description: Enable or disable transcript formatting backchannel_keywords: type: string description: Comma-separated list of backchannel keywords boosted_keywords: type: string description: Comma-separated recognition hints for supported Deepgram and Soniox transcribers. Terms can contain letters, numbers, and spaces only. The normalized list supports up to 100 terms, 50 characters per term, and 2000 total characters. maxLength: 2000 example: DialNexa, Nexa Prime, customer success boost_dynamic_variables: type: boolean description: When true, sanitized values from test-call or batch-recipient dynamic variables are appended to boosted_keywords for that call. Configured terms keep priority. Applies to supported Deepgram and Soniox primary and fallback transcribers. reminder_message_interval: type: number description: Interval between reminder messages (in seconds) reminder_message_frequency: type: number description: Frequency of reminder messages transcriber_id: type: - string - 'null' description: ID of the transcriber catalog entry fallback_stt_enabled: type: boolean description: Enable parallel fallback STT for this agent stt_fallback_transcriber_id: type: - string - 'null' description: Fallback STT transcriber catalog entry. Required when fallback_stt_enabled is true and must differ from the effective primary transcriber_id. stt_fallback_wait_ms: type: number minimum: 0 description: Milliseconds to wait for primary STT after fallback finalizes first audio_cache_enabled: type: boolean description: Enable TTS audio caching for this agent version_number: type: number description: Version number of the agent to update example: 1 folder_id: type: string description: ID of the folder this agent belongs to example: fld_abc123xyz789 pipeline_type: type: string description: Pipeline subtype for Single_Prompt_Agent. Cascaded = ASR→LLM→TTS pipeline. Speech_To_Speech = direct speech model. enum: - Cascaded - Speech_To_Speech example: Cascaded title: type: string description: Title of the agent (max 70 characters) example: Customer Support Agent maxLength: 70 version_title: type: - string - 'null' description: Version title (optional, will be auto-generated if not provided, max 35 characters) example: Version 1.1 maxLength: 35 description: type: string description: Description of the agent example: This agent handles customer support inquiries timezone: type: string description: Timezone for the agent example: Asia/Kolkata inbound_phone_number_id: type: string description: 'ID of the inbound phone number to use for this agent. Must be an existing phone number ID in your organization. Applied to live inbound routing only when `is_published: true` is sent in the same request. Pass an empty string to detach while publishing.' system_prompt_text: type: string description: Static system instructions for the agent. Use prompt_text for dynamic content via {{variable}} syntax. example: You are a helpful customer support agent named Sarah. outbound_phone_number_id: type: string description: 'ID of the outbound phone number to use for this agent. Must be an existing phone number ID in your organization. Applied to live outbound routing only when `is_published: true` is sent in the same request. Pass an empty string to detach while publishing. Active workflows using the number can cause a 409 conflict.' language_id: type: string description: ID of the language the agent speaks example: lng_59a9ce4a91334686933a llm_id: type: string description: ID of the LLM associated with the agent example: A1B2C3D4E5F6G7 llm_temperature: type: number description: temperature value for the LLM which controls how creative the model responses are example: 0.1 default: 0.1 voice_id: type: string description: ID of the voice used by the agent example: VOICE123456789 webhook_id: type: string description: ID of the webhook associated with the agent example: wh_12345678901234 prompt_text: type: string description: Main instructions for the agent. Supports Handlebars template syntax such as {{variable}} for dynamic content. Must be valid Handlebars template text. example: Hello, how can I assist you today? node_positions: type: string description: Node positions for Conversational_Flow_Agent type (stored as JSON string) example: '{"id" : 1, "positions" : {"x": 100, "y": 200}}' conversation_start_type: type: string description: Who starts the conversation example: user enum: - user - agent_dynamic - agent_defined welcome_message: type: string description: Opening message spoken by the agent at the start of the call. Supports Handlebars template syntax such as {{variable}} and must be valid Handlebars template text. example: Welcome to our service! allow_interruptions: type: boolean description: Whether the agent allows interruptions example: true structured_output: type: boolean description: Whether the reponse should adhere to a structure or not example: true json_output_instructions: type: object description: Instructions for JSON output example: format: detailed knowledge_base_ids: description: IDs of the knowledge bases attached to this agent version example: - kb_abc123 - kb_def456 type: array items: type: string kb_max_chunks: type: number description: Maximum number of RAG chunks to fetch (1-10) example: 5 minimum: 1 maximum: 10 kb_min_score: type: number description: Minimum similarity score threshold for RAG results (0-1) example: 0.5 minimum: 0 maximum: 1 is_published: type: boolean description: Publish this draft version. When true, phone number IDs in the same request are claimed for live routing. example: false update_deployment: type: boolean description: Whether to allow updating a published version example: false default_dynamic_variables: type: object description: Default values for dynamic variables used in Handlebars templates. For call-transfer flows, agent_transfer_destinations accepts up to 7 pipe-separated phone numbers. Each number must use US +1 or India +91 and exactly 10 digits after the country code. example: firstName: John lastName: Doe courseType: Math fallback_llm_enabled: type: boolean description: Enable fallback LLM for this agent example: false llm_fallback_delay_ms: type: - number - 'null' description: Milliseconds to wait before triggering the fallback LLM example: 500 llm_fallback_model: type: - string - 'null' description: ID (llms.id) of the LLM to use as fallback example: abc123xyz789ab predictive_preprocessing_enabled: type: boolean description: Enable predictive preprocessing for this agent version example: false voice_model_id: type: string description: Speech synthesis model for the selected voice. The model must belong to the same provider as voice_id. Omit this field when you want DialNexa to apply the recommended model. For ElevenLabs voices, use eleven_flash_v2_5 where supported. To find supported models for one voice, call GET /v1/voices/{voice_id}/voice-models. example: '254' agent_identity: type: string description: Agent identity (required for Conversational_Flow_Agent type on update) example: You are a helpful customer support agent named Sarah. agent_background: type: string description: Agent background (required for Conversational_Flow_Agent type on update) example: You have 5 years of experience in customer support and specialize in helping customers with technical issues. post_call_analysis: description: Post call analysis configuration example: - field_name: customer_satisfaction field_type: NUMBER field_description: Customer satisfaction rating type: array items: type: object required: - field_name - field_type - field_description properties: field_name: type: string field_type: type: string enum: - NUMBER - STRING - BOOLEAN - ENUM field_description: type: string postcall_analysis: description: Post call analysis configuration (alternative field name) example: - field_name: customer_satisfaction field_type: NUMBER field_description: Customer satisfaction rating type: array items: type: object required: - field_name - field_type - field_description properties: field_name: type: string field_type: type: string enum: - NUMBER - STRING - BOOLEAN - ENUM field_description: type: string agent_functions: type: array description: Agent functions - full replace for this version. Pass empty array to clear all. items: type: object properties: displayName: type: string example: Book Calendar type: type: string enum: - end_call - call_transfer - custom - check_calendar_availability - book_calendar - integration description: type: string example: Book appointments config: type: object example: api_key: xxx post_call_analysis_llm_id: type: - string - 'null' description: LLM ID used for post-call analysis extraction. Pass a signed LLM ID such as llm_A1B2C3D4E5F6G7 to set an override, null to clear it, or omit the field to leave the existing setting unchanged. example: llm_A1B2C3D4E5F6G7 prompt_caching_enabled: type: boolean description: Enable OpenAI Prompt Caching for this agent version. DialNexa must enable this feature for your workspace. example: false required: - version_number Agents: type: object properties: id: type: string example: agent_2g7Xy3tY53gRlp description: Signed agent ID folder_id: type: - string - 'null' current_version_number: type: - integer - 'null' timezone: type: - string - 'null' agent_type: type: string enum: - Single_Prompt_Agent - Conversational_Flow_Agent pipeline_type: type: - string - 'null' enum: - Cascaded - Speech_To_Speech webhook_id: type: - string - 'null' current_version: type: - object - 'null' properties: agent_id: type: string version_number: type: integer version_title: type: - string - 'null' title: type: - string - 'null' is_published: type: boolean language_id: type: - string - 'null' voice_id: type: - string - 'null' llm_id: type: - string - 'null' transcriber_id: type: - string - 'null' fallback_stt_enabled: type: boolean stt_fallback_transcriber_id: type: - string - 'null' post_call_analysis_llm_id: type: - string - 'null' versions: type: array items: type: object properties: agent_id: type: string version_number: type: integer version_title: type: - string - 'null' title: type: - string - 'null' is_published: type: boolean language_id: type: - string - 'null' voice_id: type: - string - 'null' llm_id: type: - string - 'null' transcriber_id: type: - string - 'null' fallback_stt_enabled: type: boolean stt_fallback_transcriber_id: type: - string - 'null' post_call_analysis_llm_id: type: - string - 'null' created_at: type: string format: date-time updated_at: type: string format: date-time required: - id - agent_type CreateAgentRequest: type: object properties: voicemail_detection: type: boolean description: Indicates whether voicemail detection is enabled default: true example: true hangup_on_voicemail: type: boolean description: Hang up immediately when voicemail is detected instead of leaving a message default: false example: false voicemail_message: type: string description: Message spoken when voicemail is detected and hangup_on_voicemail is false. Supports Handlebars template syntax such as {{variable}} and must be valid Handlebars template text. example: Hi, please call us back at your convenience. default: Please leave a message after the beep. listen_for_keypad: type: boolean description: Whether the agent listens for keypad (DTMF) input from the caller example: true default: true keypad_timeout_sec: type: number description: Seconds to wait for keypad input before timing out (0-15) example: 5 default: 5 minimum: 0 maximum: 15 termination_key: type: string description: 'Single character key that ends the call (digits, * or #)' example: '#' default: '#' digit_limit: type: number description: Maximum number of DTMF digits to collect from the caller (1-50) example: 1 default: 1 minimum: 1 maximum: 50 end_call_on_silence_sec: type: number description: 'Seconds of silence after which the call is automatically ended. Accepted range: 15 to 30 seconds. Must be more than 5 seconds above reminder_message_interval when reminders are configured.' example: 20 default: 15 minimum: 15 maximum: 30 max_call_duration_sec: type: number description: 'Maximum call duration in seconds before the call is forcibly ended. Accepted range: 60 to 5400 seconds for cascaded agents. Speech to Speech agents are capped at 3600 seconds.' example: 600 default: 600 minimum: 60 maximum: 5400 pause_before_speaking_sec: type: number description: Seconds of silence inserted before the agent starts speaking example: 0 default: 2 minimum: 0 ring_duration_sec: type: number description: How long to let the phone ring before treating the call as unanswered (seconds) example: 30 default: 5 minimum: 1 background_sound: type: string description: Background sound file or identifier background_sound_volume: type: number minimum: 0 maximum: 2 default: 1 description: Volume of background sound (0 to 2) ambient_noise: type: boolean description: Enable or disable ambient noise playback on the call responsiveness: type: number minimum: 0 maximum: 1 default: 0.5 description: Responsiveness level from 0 to 1. interruption_sensitivity: type: number minimum: 0 maximum: 1 default: 0.5 description: Interruption sensitivity level (0 to 1) response_eagerness: type: number minimum: 0 maximum: 1 default: 1 description: How eagerly the agent responds (0 to 1). Only applied when transcriber is Soniox. backchanneling: type: boolean default: false description: Enable or disable backchanneling backchannel_frequency: type: number minimum: 0 maximum: 1 default: 0.5 description: Backchannel frequency from (0 to 1) transcription_mode: type: string enum: - optimize_for_speed - optimize_for_accuracy default: optimize_for_speed description: Mode for transcription denoising_mode: type: string enum: - remove_noise - remove_noise_and_speech description: Mode for denoising audio input speech_normalization: type: boolean default: false description: Enable or disable speech normalization transcript_formatting: type: boolean default: false description: Enable or disable transcript formatting backchannel_keywords: type: string description: Comma-separated list of backchannel keywords boosted_keywords: type: string description: Comma-separated recognition hints for supported Deepgram and Soniox transcribers. Terms can contain letters, numbers, and spaces only. The normalized list supports up to 100 terms, 50 characters per term, and 2000 total characters. maxLength: 2000 example: DialNexa, Nexa Prime, customer success boost_dynamic_variables: type: boolean default: false description: When true, sanitized values from test-call or batch-recipient dynamic variables are appended to boosted_keywords for that call. Configured terms keep priority. Applies to supported Deepgram and Soniox primary and fallback transcribers. reminder_message_interval: type: number default: 9 description: Interval between reminder messages (in seconds) reminder_message_frequency: type: number default: 1 description: Frequency of reminder messages transcriber_id: type: - string - 'null' description: ID of the transcriber catalog entry fallback_stt_enabled: type: boolean default: false description: Enable parallel fallback STT for this agent stt_fallback_transcriber_id: type: - string - 'null' description: Fallback STT transcriber catalog entry. Required when fallback_stt_enabled is true and must differ from transcriber_id. stt_fallback_wait_ms: type: number minimum: 0 description: Milliseconds to wait for primary STT after fallback finalizes first audio_cache_enabled: type: boolean description: Enable TTS audio caching for this agent folder_id: type: string description: ID of the folder this agent belongs to example: fld_abc123xyz789 agent_type: type: string description: Type of the agent enum: - Single_Prompt_Agent - Conversational_Flow_Agent example: Single_Prompt_Agent default: Single_Prompt_Agent pipeline_type: type: string description: Pipeline subtype for Single_Prompt_Agent. Cascaded = ASR→LLM→TTS pipeline. Speech_To_Speech = direct speech model. Null for Conversational_Flow_Agent. enum: - Cascaded - Speech_To_Speech example: Cascaded default: Cascaded title: type: string description: Title of the agent (max 70 characters) example: Customer Support Agent maxLength: 70 version_title: type: - string - 'null' description: Version title (optional, will be auto-generated if not provided, max 35 characters) example: null maxLength: 35 description: type: string description: Description of the agent example: This agent handles customer support inquiries timezone: type: string description: Timezone for the agent example: Asia/Kolkata outbound_phone_number_id: type: string description: ID of the outbound phone number to use for this agent. Must be an existing phone number ID in your organization. Stored on the draft at creation; live outbound routing is claimed when the version is published. inbound_phone_number_id: type: string description: ID of the inbound phone number to use for this agent. Must be an existing phone number ID in your organization. Stored on the draft at creation; live inbound routing is claimed when the version is published. llm_id: type: string description: ID of the LLM associated with the agent example: A1B2C3D4E5F6G7 language_id: type: string description: ID of the language the agent speaks example: '1' voice_id: type: string description: ID of the voice used by the agent example: VOICE123456789 webhook_id: type: string description: ID of the webhook associated with the agent example: wh_12345678901234 prompt_text: type: string description: Main instructions for the agent. Supports Handlebars template syntax such as {{variable}} for dynamic content. Must be valid Handlebars template text. example: Hello, how can I assist you today? system_prompt_text: type: string description: Static system instructions for the agent. Use prompt_text for dynamic content via {{variable}} syntax. example: You are a helpful customer support agent named Sarah. node_positions: type: string description: Node positions for Conversational_Flow_Agent type (stored as JSON string) example: '{"node1": {"x": 100, "y": 200}}' conversation_start_type: type: string description: Who starts the conversation example: user enum: - user - agent_dynamic - agent_defined welcome_message: type: string description: Opening message spoken by the agent at the start of the call. Supports Handlebars template syntax such as {{variable}} and must be valid Handlebars template text. example: Welcome to our service! allow_interruptions: type: boolean description: Whether the agent allows interruptions example: true json_output_instructions: type: object description: Instructions for JSON output example: format: detailed knowledge_base_ids: description: IDs of the knowledge bases attached to this agent version example: - kb_abc123 - kb_def456 type: array items: type: string kb_max_chunks: type: number description: Maximum number of RAG chunks to fetch (1-10) example: 5 minimum: 1 maximum: 10 kb_min_score: type: number description: Minimum similarity score threshold for RAG results (0-1) example: 0.5 minimum: 0 maximum: 1 default_dynamic_variables: type: object description: Default values for dynamic variables used in Handlebars templates. For call-transfer flows, agent_transfer_destinations accepts up to 7 pipe-separated phone numbers. Each number must use US +1 or India +91 and exactly 10 digits after the country code. example: firstName: John lastName: Doe courseType: Math voice_model_id: type: string description: Speech synthesis model for the selected voice. The model must belong to the same provider as voice_id. Omit this field when you want DialNexa to apply the recommended model. For ElevenLabs voices, use eleven_flash_v2_5 where supported. To find supported models for one voice, call GET /v1/voices/{voice_id}/voice-models. example: voice_model_abc123 voice_speed: type: number description: Voice speed (0.25 to 4.0) example: 1 minimum: 0.25 maximum: 4 voice_temperature: type: number description: Voice temperature (0.0 to 2.0) example: 1 minimum: 0 maximum: 2 voice_volume: type: number description: Voice volume (0 to 10) example: 1 minimum: 0 maximum: 10 voice_pitch: type: number description: Pitch adjustment of the voice (-1 to 1) example: 0 minimum: -1 maximum: 1 llm_temperature: type: number description: LLM temperature (0.0 to 2.0) example: 0.1 minimum: 0 maximum: 2 opt_out_sensitive_data_storage: type: boolean description: Opt out of sensitive data storage example: false opt_in_secure_urls: type: boolean description: Opt in to secure URLs example: false fallback_llm_enabled: type: boolean description: Enable fallback LLM for this agent example: false predictive_preprocessing_enabled: type: boolean description: Enable predictive preprocessing for this agent version example: false llm_fallback_delay_ms: type: - number - 'null' description: Milliseconds to wait before triggering the fallback LLM example: 500 llm_fallback_model: type: - string - 'null' description: ID (llms.id) of the LLM to use as fallback example: abc123xyz789ab fallback_voices: type: array description: Fallback voices for TTS. Used when the primary voice is unavailable. items: type: object properties: voice_id: type: string example: VOICE123456789 voice_name: type: string example: Fallback Voice provider_voice_id: type: string example: en-US-JennyNeural provider: type: string example: azure agent_functions: type: array description: Functions the agent can invoke during a call (e.g. end call, transfer, booking). Passed at create time; use PATCH to replace later. items: type: object required: - displayName - type - description properties: displayName: type: string example: Book Calendar type: type: string enum: - end_call - call_transfer - custom - check_calendar_availability - book_calendar - integration example: book_calendar description: type: string example: Books a calendar appointment for the caller config: type: object example: api_key: xxx calendar_id: primary post_call_analysis: type: array description: Fields to extract from the call transcript after the call ends. items: type: object required: - field_name - field_type - field_description properties: field_name: type: string example: customer_satisfaction field_type: type: string enum: - NUMBER - STRING - BOOLEAN - ENUM example: NUMBER field_description: type: string example: Customer satisfaction rating from 1 to 5 postcall_analysis: type: array description: Alias for post_call_analysis (backward compatibility). items: type: object properties: field_name: type: string example: customer_satisfaction field_type: type: string enum: - NUMBER - STRING - BOOLEAN - ENUM example: NUMBER field_description: type: string example: Customer satisfaction rating from 1 to 5 agent_identity: type: string description: Agent identity (required for Conversational_Flow_Agent type on update) example: You are a helpful customer support agent named Sarah. agent_background: type: string description: Agent background (required for Conversational_Flow_Agent type on update) example: You have 5 years of experience in customer support and specialize in helping customers with technical issues. prompt_caching_enabled: type: boolean description: Enable OpenAI Prompt Caching for this agent version. DialNexa must enable this feature for your workspace. example: false required: - title - language_id - voice_id - prompt_text securitySchemes: bearer: scheme: bearer type: http