---
title: "Create Voice Configuration"
method: POST
path: "/v1/voice_configurations"
tags: ["Voice Configurations"]
---

# Create Voice Configuration

`POST /v1/voice_configurations`

## Request body

- CreateVoiceConfiguration
  - `name` string, required
  - `llm_aggregation_timeout_seconds` number, nullable — Maximum time to wait for additional transcription content before pushing aggregated result.
  - `speech_to_text` SpeechToTextConfig, required
    - `provider` string, required
    - `watson_stt_config` WatsonSTTConfig
      - `api_url` string, required
      - `model` string, required
      - `api_key` string, nullable
      - `bearer_token` string, nullable
      - `background_audio_suppression` number, nullable — Background audio suppression level (0.0 to 1.0). Default 0.0
      - `language_customization_id` string, nullable — Language customization ID
      - `inactivity_timeout` integer, nullable — Seconds of inactivity before the service stops listening. Default 30
      - `profanity_filter` boolean, nullable — Filter profanity in the transcript. Default true
      - `smart_formatting` boolean, nullable — Enable smart formatting (beta). Default false
      - `speaker_labels` boolean, nullable — Enable speaker labels (beta). Default false
      - `redaction` boolean, nullable — Enable PII redaction (beta). Default false
      - `low_latency` boolean, nullable — Enable low latency mode. Default false
      - `learning_opt_out` boolean, nullable — Opt out of data collection for learning. Default true
      - `watson_metadata` string, nullable — Value for x-watson-metadata header.
      - `smart_formatting_version` integer, nullable — Version of smart formatting to use.
      - `customization_weight` number, nullable — Weight for custom language model (0.0 to 1.0). Default 0.5
      - `character_insertion_bias` number, nullable — Bias for character insertion (-1.0 to 1.0). Default 0.0
      - `end_of_phrase_silence_time` number, nullable — Seconds of silence that indicate end of a phrase. Default 0.8
    - `emotech_stt_config` EmotechSTTConfig
      - `api_url` string, required
      - `api_key` string, nullable
      - `positive_speech_threshold` number, nullable — Confidence threshold above which audio is classified as speech, default is 0.25
      - `negative_speech_threshold` number, nullable — Confidence threshold below which audio is classified as non-speech, default is 0.25
      - `partial_interval` integer, nullable — Time interval (in ms) between partial transcription results, default is 500 ms.
      - `silence_threshold` integer, nullable — Silence duration (in ms) after speech used to determine end of utterance, default is 1500 ms.
    - `deepgram_stt_config` DeepgramSTTConfig
      - `api_url` string, required — Deepgram API URL
      - `api_key` string, nullable, required — Deepgram API key
      - `model` string, required — Deepgram model name, e.g., 'nova-3'
      - `keyterm` string[], nullable — Key terms to boost recognition of
      - `mip_opt_out` boolean, nullable — Opt out of model improvement program
      - `channels` integer, nullable — Number of audio channels
      - `diarize` boolean, nullable — Enable speaker diarization
      - `dictation` boolean, nullable — Enable dictation mode
      - `endpointing` integer, nullable — Endpointing silence duration in seconds, or false to disable
      - `extra` string[], nullable — Extra parameters to pass to Deepgram
      - `interim_results` boolean, nullable — Enable interim results
      - `keywords` string[], nullable — Keywords to detect
      - `language` string, nullable — BCP-47 language tag
      - `multichannel` boolean, nullable — Transcribe each audio channel independently
      - `numerals` boolean, nullable — Convert numbers from written to numerical form
      - `profanity_filter` boolean, nullable — Filter profanity
      - `punctuate` boolean, nullable — Add punctuation and capitalization
      - `redact` string, nullable — Redact sensitive information
      - `replace` string[], nullable — Replace specified terms
      - `search` string[], nullable — Search for specific terms
      - `smart_format` boolean, nullable — Apply smart formatting to the transcript
      - `tag` string[], nullable — Tag for the request
      - `utterance_end_ms` integer, nullable — How long Deepgram will wait to send UtteranceEnd message after word has been transcribed
      - `vad_events` boolean, nullable — Enable Deepgram's voice activity detection events
      - `version` string, nullable — API version
      - `eager_eot_threshold` number, nullable — End-of-turn confidence required to fire an eager EOT event, between (0.3 - 0.9)
      - `eot_threshold` number, nullable — End-of-turn confidence required to finish a turn, between (0.5 - 0.9)
      - `eot_timeout_ms` integer, nullable — A turn will be finished when this much time (ms) has passed after speech, regardless of EOT confidence
  - `text_to_speech` TextToSpeechConfig, required
    - `provider` string, required
    - `watson_tts_config` WatsonTTSConfig
      - `api_url` string, required
      - `api_key` string, nullable
      - `bearer_token` string, nullable
      - `voice` string, required
      - `rate_percentage` integer, nullable — Rate percentage for speech synthesis, default is 0
      - `pitch_percentage` integer, nullable — Pitch percentage for speech synthesis, default is 0
      - `language` string, nullable — Language code for the voice, e.g., 'en-US'
      - `customization_id` string, nullable — Custom ID for the Watson TTS service
      - `meta_id` string, nullable — Meta ID for the Watson TTS service
      - `learning_opt_out` boolean, nullable — Set to true to opt out of data collection for learning purposes
    - `emotech_tts_config` EmotechTTSConfig
      - `api_url` string, required
      - `api_key` string, nullable
      - `voice` string, nullable
    - `elevenlabs_tts_config` ElevenLabsTTSConfig
      - `model_id` string, required — The ID of the ElevenLabs model to use
      - `voice_id` string, required — The ID of the ElevenLabs voice to use
      - `api_key` string, nullable, required — ElevenLabs API key
      - `apply_text_normalization` string, nullable — Whether to apply text normalization
      - `language_code` string, nullable — Language code for the voice, e.g., 'en', 'es'
      - `optimize_streaming_latency` integer, nullable — Optimize streaming latency (0-4)
      - `apply_language_text_normalization` boolean, nullable — Whether to apply language-specific text normalization
      - `pronunciation_dictionary_locators` ElevenLabsPronounciationDict[], nullable — List of pronunciation dictionary locators
        - `pronunciation_dictionary_id` string, required — ID of the pronunciation dictionary
        - `version_id` string, required — Version ID of the pronunciation dictionary
      - `seed` integer, nullable — Seed for deterministic audio generation
      - `previous_text` string, nullable — Previous text for context
      - `next_text` string, nullable — Next text for context
      - `voice_settings` ElevenLabsVoiceSettings
        - `speed` number — Speech speed. Defaults to 1.0
        - `style` number — Style exaggeration: the higher the value, the more computational resources are used. Defaults to 0.0
        - `stability` number — Stability: how stable the voice is and the randomness between each generation. Defaults to 0.5
        - `similarity_boost` number — Similarity boost: how closely the AI should adhere to the original voice. Defaults to 0.75
        - `use_speaker_boost` boolean — Whether to use speaker boost. Defaults to true
    - `deepgram_tts_config` DeepgramTTSConfig
      - `api_key` string, nullable, required — Deepgram API key.
      - `mip_opt_out` boolean, nullable — Opt out of model improvement program.
      - `model` string, nullable — The ID (canonical name) of the Deepgram model to use.
      - `language` string, nullable — An optional UI indicator to help the UI show different languages.
  - `language` string — Default language code, e.g., 'en-us'
  - `additional_languages` object, nullable — Additional language configurations keyed by language code
  - `dtmf_input` DTMFInputConfig
    - `inter_digit_timeout_ms` integer, nullable — The amount of time (ms) to wait for a new DTMF digit, default is 2500 ms.
    - `termination_key` string, nullable — The DTMF termination key that signals the end of DTMF input.
    - `maximum_count` integer, nullable — Maximum number of digits a user can enter.
    - `ignore_speech` boolean, nullable — Disable speech recognition during collection of DTMF digits, default is true.
  - `vad` VADConfig
    - `enabled` boolean, nullable — Enable Voice Activity Detection, default is true.
    - `provider` string, nullable
    - `silero_vad_config` SileroVADConfig
      - `confidence` number, nullable — The confidence threshold for speech detection (between 0.0 and 1.0), default is 0.7
      - `start_seconds` number, nullable — The time in seconds speech must be detected before transitioning to SPEAKING state, default is 0.2
      - `stop_seconds` number, nullable — The time in seconds silence must be detected before transitioning to QUIET state, default is 0.8
      - `min_volume` number, nullable — The minimum audio volume threshold for speech detection (between 0.0 and 1.0), default is 0.6
  - `user_idle_handler` UserIdleHandlerConfig
    - `enabled` boolean, nullable — Enable idle handling. If false, we disconnect on timeout without playing a prompt.
    - `idle_timeout` integer, nullable — Idle timeout in seconds before triggering the handler (default 7s).
    - `idle_max_reprompts` integer, nullable — How many times to replay before ending the session (0 = end immediately).
    - `idle_timeout_message` string, nullable — Message to play on idle; language-specific variants may override this.
  - `agent_idle_handler` AgentIdleHandler
    - `pre_hold_message` string, nullable — The text to play for the user before playing on-hold audio
    - `hold_message` string, nullable — The text to play to the user periodically while on hold
    - `typing_enabled` boolean
    - `typing_duration_seconds` integer
    - `audio_clip_id` 'guitar_1' | 'listen_1'
    - `hold_audio_seconds` integer

## Response `201`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/ibm/apis/wxo-server-api.md) · [All operations](https://skmtc.net/ibm/apis/wxo-server-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/ibm/wxo-server-api/revisions/82c114c37196/schema)
