---
title: "Update Speech Engine"
method: PATCH
path: "/v1/speech-engine/{speech_engine_id}"
tags: ["Speech Engine"]
---

# Update Speech Engine

`PATCH /v1/speech-engine/{speech_engine_id}`

Update a Speech Engine resource (partial update)

## Path parameters

- `speech_engine_id` string, required — The speech engine ID (accepts seng_ or agent_ prefix)

## Headers

- `xi-api-key` string, nullable — Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.

## Request body

- UpdateSpeechEngineRequest
  - `name` string, nullable
  - `speech_engine` SpeechEngineConfig
    - `ws_url` string, required — The WebSocket URL for the transcript server
    - `request_headers` object — Headers to include in the WebSocket connection request
  - `asr` ASRConversationalConfig
    - `quality` 'high'
    - `provider` 'elevenlabs' | 'scribe_realtime'
    - `user_input_audio_format` 'pcm_8000' | 'pcm_16000' | 'pcm_22050' | 'pcm_24000' | 'pcm_44100' | 'pcm_48000' | 'ulaw_8000'
    - `keywords` string[] — Keywords to boost prediction probability for
  - `tts` TTSConversationalConfigInput
    - `model_id` 'eleven_turbo_v2' | 'eleven_turbo_v2_5' | 'eleven_flash_v2' | 'eleven_flash_v2_5' | 'eleven_multilingual_v2' | 'eleven_v3_conversational'
    - `voice_id` string — The voice ID to use for TTS
    - `supported_voices` SupportedVoice[] — Additional supported voices for the agent
      - `label` string, required
      - `voice_id` string, required
      - `description` string, nullable
      - `language` string, nullable
      - `model_family` 'turbo' | 'flash' | 'multilingual' | 'v3_conversational'
      - `optimize_streaming_latency` 0 | 1 | 2 | 3 | 4
      - `stability` number, nullable
      - `speed` number, nullable
      - `similarity_boost` number, nullable
    - `expressive_mode` boolean — When enabled, applies expressive audio tags prompt. Automatically disabled for non-v3 models.
    - `suggested_audio_tags` SuggestedAudioTag[] — Suggested audio tags to boost expressive speech (for eleven_v3 and eleven_v3_conversational models). The agent can still use other tags not listed here.
      - `tag` string, required — Audio tag to use (for best performance, 1-2 words, e.g., 'happy', 'excited')
      - `description` string, nullable — Optional description of when to use this tag
    - `agent_output_audio_format` 'pcm_8000' | 'pcm_16000' | 'pcm_22050' | 'pcm_24000' | 'pcm_44100' | 'pcm_48000' | 'ulaw_8000'
    - `optimize_streaming_latency` 0 | 1 | 2 | 3 | 4
    - `stability` number — The stability of generated speech
    - `speed` number — The speed of generated speech
    - `similarity_boost` number — The similarity boost for generated speech
    - `text_normalisation_type` 'system_prompt' | 'elevenlabs' — Method for converting numbers to words before sending to TTS
    - `pronunciation_dictionary_locators` PydanticPronunciationDictionaryVersionLocator[] — The pronunciation dictionary locators
      - `pronunciation_dictionary_id` string, required — The ID of the pronunciation dictionary
      - `version_id` string, nullable, required — The ID of the version of the pronunciation dictionary
    - `enable_phoneme_tags` boolean — Opt-in to SSML phoneme tag handling for V3 models. When enabled, phoneme tags (inline and from pronunciation dictionaries) are parsed into inline IPA before being sent to the model.
  - `turn` BaseTurnConfig
    - `turn_timeout` number — Maximum wait time for the user's reply before re-engaging the user
    - `initial_wait_time` number, nullable — How long the agent will wait for the user to start the conversation if the first message is empty. If not set, uses the regular turn_timeout.
    - `silence_end_call_timeout` number — Maximum wait time since the user last spoke before terminating the call
    - `mode` 'silence' | 'turn'
    - `turn_eagerness` 'patient' | 'normal' | 'eager' — Agent's eagerness to respond. Higher values make agent wait for higher turn probability.
    - `spelling_patience` 'auto' | 'off' — Controls if the agent should be more patient when user is spelling numbers and named entities.
    - `speculative_turn` boolean — When enabled, starts generating LLM responses during silence before full turn confidence is reached, reducing perceived latency. May increase LLM costs.
    - `retranscribe_on_turn_timeout` boolean — When enabled, if VAD detects no speech, attempts to re-transcribe accumulated audio at turn timeout. Disables silence discount billing for affected turns.
    - `turn_model` 'turn_v2' | 'turn_v3' — Version of the turn detection model to use.
    - `interruption_ignore_terms` string[] — List of terms that should not trigger an interruption when spoken by the user (e.g. 'gotcha', 'understood'). Uses case-insensitive exact matching.
    - `interruption_ignore_term_languages` string[] — Language codes for which preset ignore-term categories have been activated. Stored explicitly so display is not inferred from term overlap.
    - `transcribe_on_disabled_interruptions` boolean — When interruptions are disabled, still transcribe what the user says so it can carry into the next turn. When off, user speech during a non-interruptible turn is ignored and won't trigger a turn.
  - `vad` VADConfig
    - `background_voice_detection` boolean — Whether to use background voice filtering
  - `conversation` ConversationConfigInput
    - `text_only` boolean — If enabled audio will not be processed and only text will be used, use to avoid audio pricing.
    - `max_duration_seconds` integer — The maximum duration of a conversation in seconds
    - `client_events` ClientEvent[] — The events that will be sent to the client
    - `file_input` FileInputConfig
      - `enabled` boolean — When enabled, users may attach images or PDFs in chat when the LLM supports multimodal input.
      - `max_files_in_memory` integer — Number of most-recent files kept in memory during a conversation. Older files are summarized and their bytes freed.
      - `max_files_per_conversation` integer — Total files a user can upload in one conversation. Uploads are billed per file. Use -1 for no limit, or a value >= max_files_in_memory.
    - `monitoring_enabled` boolean — Enable real-time monitoring of conversations via WebSocket
    - `monitoring_events` ClientEvent[] — The events that will be sent to monitoring connections.
    - `background_sound` BackgroundSoundConfig
      - `source_type` 'preset' — The type of background sound source.
      - `source_id` 'office2' | 'office1' | 'restaurant' | 'city' | 'typing' | 'elevator1' | 'elevator2' | 'elevator3' | 'elevator4' — Predefined background sound preset identifiers.
      - `volume` number — Volume level for background sound (0.01 to 1.0).
      - `crossfade_loop` boolean — Apply a crossfade at the loop boundary to avoid audible pops when the sound loops.
    - `source_attribution` boolean — When enabled and knowledge base content is present, the LLM is instructed to report which sources it used.
  - `privacy` PrivacyConfigInput
    - `record_voice` boolean — Whether to record the conversation
    - `retention_days` integer — The number of days to retain the conversation. -1 indicates there is no retention limit
    - `delete_transcript_and_pii` boolean — Whether to delete the transcript and PII
    - `delete_audio` boolean — Whether to delete the audio
    - `apply_to_existing_conversations` boolean — Whether to apply the privacy settings to existing conversations
    - `zero_retention_mode` boolean — Whether to enable zero retention mode - no PII data is stored
    - `conversation_history_redaction` ConversationHistoryRedactionConfig
      - `enabled` boolean — Whether conversation history redaction is enabled
      - `entities` ConfigEntityType[] — The entities to redact from the conversation transcript, audio and analysis. Use top-level types like 'name', 'email_address', or dot notation for specific subtypes like 'name.full_name'.
  - `call_limits` AgentCallLimits
    - `agent_concurrency_limit` integer — The maximum number of concurrent conversations. -1 indicates that there is no maximum
    - `daily_limit` integer — The maximum number of conversations per day
    - `bursting_enabled` boolean — Whether to enable bursting. If true, exceeding workspace concurrency limit will be allowed up to 3 times the limit. Calls will be charged at double rate when exceeding the limit.
  - `language` string, nullable
  - `tags` string[], nullable
  - `overrides` SpeechEngineConversationInitiationClientDataConfig
    - `first_message` boolean — Whether the first message can be overridden by the client

## Response `200`

Successful Response

- SpeechEngineResponse
  - `speech_engine_id` string, required — The speech engine resource ID
  - `name` string, required — Human-readable name for the speech engine
  - `speech_engine` SpeechEngineConfig, required
    - `ws_url` string, required — The WebSocket URL for the transcript server
    - `request_headers` object — Headers to include in the WebSocket connection request
  - `asr` ASRConversationalConfig, required
    - `quality` 'high'
    - `provider` 'elevenlabs' | 'scribe_realtime'
    - `user_input_audio_format` 'pcm_8000' | 'pcm_16000' | 'pcm_22050' | 'pcm_24000' | 'pcm_44100' | 'pcm_48000' | 'ulaw_8000'
    - `keywords` string[] — Keywords to boost prediction probability for
  - `tts` TTSConversationalConfigOutput, required
    - `model_id` 'eleven_turbo_v2' | 'eleven_turbo_v2_5' | 'eleven_flash_v2' | 'eleven_flash_v2_5' | 'eleven_multilingual_v2' | 'eleven_v3_conversational'
    - `voice_id` string — The voice ID to use for TTS
    - `supported_voices` SupportedVoice[] — Additional supported voices for the agent
      - `label` string, required
      - `voice_id` string, required
      - `description` string, nullable
      - `language` string, nullable
      - `model_family` 'turbo' | 'flash' | 'multilingual' | 'v3_conversational'
      - `optimize_streaming_latency` 0 | 1 | 2 | 3 | 4
      - `stability` number, nullable
      - `speed` number, nullable
      - `similarity_boost` number, nullable
    - `expressive_mode` boolean — When enabled, applies expressive audio tags prompt. Automatically disabled for non-v3 models.
    - `suggested_audio_tags` SuggestedAudioTag[] — Suggested audio tags to boost expressive speech (for eleven_v3 and eleven_v3_conversational models). The agent can still use other tags not listed here.
      - `tag` string, required — Audio tag to use (for best performance, 1-2 words, e.g., 'happy', 'excited')
      - `description` string, nullable — Optional description of when to use this tag
    - `agent_output_audio_format` 'pcm_8000' | 'pcm_16000' | 'pcm_22050' | 'pcm_24000' | 'pcm_44100' | 'pcm_48000' | 'ulaw_8000'
    - `optimize_streaming_latency` 0 | 1 | 2 | 3 | 4
    - `stability` number — The stability of generated speech
    - `speed` number — The speed of generated speech
    - `similarity_boost` number — The similarity boost for generated speech
    - `text_normalisation_type` 'system_prompt' | 'elevenlabs' — Method for converting numbers to words before sending to TTS
    - `pronunciation_dictionary_locators` PydanticPronunciationDictionaryVersionLocator[] — The pronunciation dictionary locators
      - `pronunciation_dictionary_id` string, required — The ID of the pronunciation dictionary
      - `version_id` string, nullable, required — The ID of the version of the pronunciation dictionary
    - `enable_phoneme_tags` boolean — Opt-in to SSML phoneme tag handling for V3 models. When enabled, phoneme tags (inline and from pronunciation dictionaries) are parsed into inline IPA before being sent to the model.
  - `turn` BaseTurnConfig, required
    - `turn_timeout` number — Maximum wait time for the user's reply before re-engaging the user
    - `initial_wait_time` number, nullable — How long the agent will wait for the user to start the conversation if the first message is empty. If not set, uses the regular turn_timeout.
    - `silence_end_call_timeout` number — Maximum wait time since the user last spoke before terminating the call
    - `mode` 'silence' | 'turn'
    - `turn_eagerness` 'patient' | 'normal' | 'eager' — Agent's eagerness to respond. Higher values make agent wait for higher turn probability.
    - `spelling_patience` 'auto' | 'off' — Controls if the agent should be more patient when user is spelling numbers and named entities.
    - `speculative_turn` boolean — When enabled, starts generating LLM responses during silence before full turn confidence is reached, reducing perceived latency. May increase LLM costs.
    - `retranscribe_on_turn_timeout` boolean — When enabled, if VAD detects no speech, attempts to re-transcribe accumulated audio at turn timeout. Disables silence discount billing for affected turns.
    - `turn_model` 'turn_v2' | 'turn_v3' — Version of the turn detection model to use.
    - `interruption_ignore_terms` string[] — List of terms that should not trigger an interruption when spoken by the user (e.g. 'gotcha', 'understood'). Uses case-insensitive exact matching.
    - `interruption_ignore_term_languages` string[] — Language codes for which preset ignore-term categories have been activated. Stored explicitly so display is not inferred from term overlap.
    - `transcribe_on_disabled_interruptions` boolean — When interruptions are disabled, still transcribe what the user says so it can carry into the next turn. When off, user speech during a non-interruptible turn is ignored and won't trigger a turn.
  - `vad` VADConfig, required
    - `background_voice_detection` boolean — Whether to use background voice filtering
  - `conversation` ConversationConfigOutput, required
    - `text_only` boolean — If enabled audio will not be processed and only text will be used, use to avoid audio pricing.
    - `max_duration_seconds` integer — The maximum duration of a conversation in seconds
    - `client_events` ClientEvent[] — The events that will be sent to the client
    - `file_input` FileInputConfig
      - `enabled` boolean — When enabled, users may attach images or PDFs in chat when the LLM supports multimodal input.
      - `max_files_in_memory` integer — Number of most-recent files kept in memory during a conversation. Older files are summarized and their bytes freed.
      - `max_files_per_conversation` integer — Total files a user can upload in one conversation. Uploads are billed per file. Use -1 for no limit, or a value >= max_files_in_memory.
    - `monitoring_enabled` boolean — Enable real-time monitoring of conversations via WebSocket
    - `monitoring_events` ClientEvent[] — The events that will be sent to monitoring connections.
    - `background_sound` BackgroundSoundConfig
      - `source_type` 'preset' — The type of background sound source.
      - `source_id` 'office2' | 'office1' | 'restaurant' | 'city' | 'typing' | 'elevator1' | 'elevator2' | 'elevator3' | 'elevator4' — Predefined background sound preset identifiers.
      - `volume` number — Volume level for background sound (0.01 to 1.0).
      - `crossfade_loop` boolean — Apply a crossfade at the loop boundary to avoid audible pops when the sound loops.
    - `source_attribution` boolean — When enabled and knowledge base content is present, the LLM is instructed to report which sources it used.
  - `privacy` PrivacyConfigOutput, required
    - `record_voice` boolean — Whether to record the conversation
    - `retention_days` integer — The number of days to retain the conversation. -1 indicates there is no retention limit
    - `delete_transcript_and_pii` boolean — Whether to delete the transcript and PII
    - `delete_audio` boolean — Whether to delete the audio
    - `apply_to_existing_conversations` boolean — Whether to apply the privacy settings to existing conversations
    - `zero_retention_mode` boolean — Whether to enable zero retention mode - no PII data is stored
    - `conversation_history_redaction` ConversationHistoryRedactionConfig
      - `enabled` boolean — Whether conversation history redaction is enabled
      - `entities` ConfigEntityType[] — The entities to redact from the conversation transcript, audio and analysis. Use top-level types like 'name', 'email_address', or dot notation for specific subtypes like 'name.full_name'.
  - `call_limits` AgentCallLimits, required
    - `agent_concurrency_limit` integer — The maximum number of concurrent conversations. -1 indicates that there is no maximum
    - `daily_limit` integer — The maximum number of conversations per day
    - `bursting_enabled` boolean — Whether to enable bursting. If true, exceeding workspace concurrency limit will be allowed up to 3 times the limit. Calls will be charged at double rate when exceeding the limit.
  - `language` string, required — ISO language code used by the speech engine (e.g. 'en')
  - `tags` string[], required — Arbitrary tags for categorization and filtering
  - `overrides` SpeechEngineConversationInitiationClientDataConfig, required
    - `first_message` boolean — Whether the first message can be overridden by the client
  - `metadata` AgentMetadataDBModel, required
    - `created_at_unix_secs` integer, required
    - `updated_at_unix_secs` integer, required
    - `created_from` 'cli' | 'ui' | 'api' | 'template' | 'unknown'
    - `last_updated_from` 'cli' | 'ui' | 'api' | 'template' | 'unknown'
  - `access_info` ResourceAccessInfo
    - `is_creator` boolean, required — Whether the user making the request is the creator of the agent
    - `creator_name` string, required — Name of the agent's creator
    - `creator_email` string, required — Email of the agent's creator
    - `role` 'admin' | 'editor' | 'commenter' | 'viewer', required — The role of the user making the request
    - `anonymous_access_level_override` 'admin' | 'editor' | 'commenter' | 'viewer', nullable — The access level for anonymous users. If None, the resource is not shared publicly.
    - `access_source` 'creator' | 'explicit' | 'workspace_admin' | 'workspace_default', nullable — Why the requesting user has access to this resource. 'creator' = caller is the owner. 'explicit' = caller (or one of their workspace groups) is listed in role_to_group_ids beyond the workspace-wide everyone group. 'workspace_default' = the workspace-wide everyone group is listed in role_to_group_ids (every non-anon workspace member, including admins, sees this resource). 'workspace_admin' = caller is a workspace admin and the admin seat is the *only* path to access; reserved for docs nobody else can see. Lets the UI disclose why an admin-bypass viewer sees a doc that wasn't explicitly shared with them.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/elevenlabs/apis/elevenlabs-api-documentation.md) · [All operations](https://skmtc.net/elevenlabs/apis/elevenlabs-api-documentation/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/elevenlabs/elevenlabs-api-documentation/versions/e77a0a530a82/schema)
