---
title: "Resubmit Tests"
method: POST
path: "/v1/convai/test-invocations/{test_invocation_id}/resubmit"
---

# Resubmit Tests

`POST /v1/convai/test-invocations/{test_invocation_id}/resubmit`

Resubmits specific test runs from a test invocation.

## Path parameters

- `test_invocation_id` string, required — The id of a test invocation. This is returned when tests are run.

## 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

- ResubmitTestsRequestModel
  - `test_run_ids` string[], required — List of test run IDs to resubmit
  - `agent_config_override` AdhocAgentConfigOverrideForTestRequestModel
    - `conversation_config` ConversationalConfigAPIModelInput, required
      - `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
      - `turn` TurnConfig
        - `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.
        - `soft_timeout_config` SoftTimeoutConfig — Configuration for soft timeout functionality during LLM response generation.
          - `timeout_seconds` number — Time in seconds before showing the predefined message while waiting for LLM response. Set to -1 to disable.
          - `message` string — Message to show when the first soft timeout is reached while waiting for LLM response. Supports dynamic variables (e.g., {{system__time}}, {{custom_variable}}).
          - `additional_soft_timeout_messages` string[] — Extra static filler messages for subsequent soft timeouts in the same LLM generation. The first timeout uses `message`. If fewer messages are configured than `max_soft_timeouts_per_generation`, the last configured message is repeated; otherwise a built-in filler is used.
          - `use_llm_generated_message` boolean — If enabled, the soft timeout message will be generated dynamically instead of using the static message.
          - `randomize_fillers` boolean — If enabled, shuffle the order of static soft timeout messages once at the start of each turn. Only applies when use_llm_generated_message is false.
          - `max_soft_timeouts_per_generation` integer — Maximum filler messages while waiting for a single LLM response. Fires every timeout_seconds until the LLM streams content or this limit is reached.
          - `llm_generated_message_prompt_override` string, nullable — Custom prompt for generating the soft timeout filler message when use_llm_generated_message is enabled. Recent conversation context is provided as a separate user message. If not set, the default prompt will be used. Supports dynamic variables (e.g., {{system__time}}, {{custom_variable}}).
      - `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.
      - `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.
      - `language_presets` object — Language presets for conversations
      - `vad` VADConfig
        - `background_voice_detection` boolean — Whether to use background voice filtering
      - `agent` AgentConfigAPIModelInput
        - `first_message` string — If non-empty, the first message the agent will say. If empty, the agent waits for the user to start the discussion.
        - `language` string — Language of the agent - used for ASR and TTS
        - `hinglish_mode` boolean — When enabled and language is Hindi, the agent will respond in Hinglish
        - `dynamic_variables` DynamicVariablesConfig
          - `dynamic_variable_placeholders` object — A dictionary of dynamic variable placeholders and their values
        - `disable_first_message_interruptions` boolean — If true, the user will not be able to interrupt the agent while the first message is being delivered.
        - `max_conversation_duration_message` string — If non-empty, the message the agent will send when max conversation duration is reached.
        - `text_behavior_overrides` object, nullable — Per-channel response behavior overrides for text conversations. Built-in channel defaults apply when unset.
        - `prompt` PromptAgentAPIModelInput
          - `prompt` string — The prompt for the agent
          - `llm` 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4' | 'gpt-4-turbo' | 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-5' | 'gpt-5.1' | 'gpt-5.2' | 'gpt-5.2-chat-latest' | 'gpt-5.4' | 'gpt-5.4-mini' | 'gpt-5.4-nano' | 'gpt-5.5' | 'gpt-5.6-sol' | 'gpt-5.6-terra' | 'gpt-5.6-luna' | 'gpt-5-mini' | 'gpt-5-nano' | 'gpt-3.5-turbo' | 'gemini-1.5-pro' | 'gemini-1.5-flash' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.5-flash-lite' | 'gemini-2.5-flash' | 'gemini-3-pro-preview' | 'gemini-3-flash-preview' | 'gemini-3.1-pro-preview' | 'gemini-3.1-flash-lite-preview' | 'gemini-3.1-flash-lite' | 'gemini-3.5-flash' | 'gemini-3.5-flash-lite' | 'claude-sonnet-4-5' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-sonnet-4-6' | 'claude-sonnet-5' | 'claude-sonnet-4' | 'claude-haiku-4-5' | 'claude-3-7-sonnet' | 'claude-3-5-sonnet' | 'claude-3-5-sonnet-v1' | 'claude-3-haiku' | 'grok-beta' | 'custom-llm' | 'qwen3-4b' | 'qwen3-30b-a3b' | 'qwen36-35b-a3b' | 'qwen35-397b-a17b' | 'gpt-oss-20b' | 'gpt-oss-120b' | 'glm-45-air-fp8' | 'gemini-2.5-flash-preview-09-2025' | 'gemini-2.5-flash-lite-preview-09-2025' | 'gemini-2.5-flash-preview-05-20' | 'gemini-2.5-flash-preview-04-17' | 'gemini-2.5-flash-lite-preview-06-17' | 'gemini-2.0-flash-lite-001' | 'gemini-2.0-flash-001' | 'gemini-1.5-flash-002' | 'gemini-1.5-flash-001' | 'gemini-1.5-pro-002' | 'gemini-1.5-pro-001' | 'claude-sonnet-4@20250514' | 'claude-sonnet-4-5@20250929' | 'claude-haiku-4-5@20251001' | 'claude-3-7-sonnet@20250219' | 'claude-3-5-sonnet@20240620' | 'claude-3-5-sonnet-v2@20241022' | 'claude-3-haiku@20240307' | 'gpt-5-2025-08-07' | 'gpt-5.1-2025-11-13' | 'gpt-5.2-2025-12-11' | 'gpt-5.4-2026-03-05' | 'gpt-5.4-mini-2026-03-17' | 'gpt-5.4-nano-2026-03-17' | 'gpt-5.5-2026-04-23' | 'gpt-5-mini-2025-08-07' | 'gpt-5-nano-2025-08-07' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini-2025-04-14' | 'gpt-4.1-nano-2025-04-14' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-2024-11-20' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-05-13' | 'gpt-4-0613' | 'gpt-4-0314' | 'gpt-4-turbo-2024-04-09' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'watt-tool-8b' | 'watt-tool-70b'
          - `reasoning_effort` 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'max'
          - `thinking_budget` integer, nullable — Max number of tokens used for thinking. Use 0 to turn off if supported by the model.
          - `enable_reasoning_summary` boolean — Enable model reasoning summaries. When disabled, we do not request summaries from provider if possible for faster TTFB. Not ZRM compatible.
          - `temperature` number, nullable — The temperature for the LLM. Defaults to 0. Set to null to omit the parameter from the LLM request entirely (useful for custom LLMs that reject the temperature field).
          - `max_tokens` integer — If greater than 0, maximum number of tokens the LLM can predict
          - `tool_ids` string[] — A list of IDs of tools used by the agent
          - `built_in_tools` BuiltInToolsInput
            - `end_call` SystemToolConfigInput — A system tool is a tool that is used to call a system method in the server
              - …
            - `language_detection` SystemToolConfigInput — A system tool is a tool that is used to call a system method in the server
              - …
            - `transfer_to_agent` SystemToolConfigInput — A system tool is a tool that is used to call a system method in the server
              - …
            - `transfer_to_number` SystemToolConfigInput — A system tool is a tool that is used to call a system method in the server
              - …
            - `skip_turn` SystemToolConfigInput — A system tool is a tool that is used to call a system method in the server
              - …
            - `play_keypad_touch_tone` SystemToolConfigInput — A system tool is a tool that is used to call a system method in the server
              - …
            - `voicemail_detection` SystemToolConfigInput — A system tool is a tool that is used to call a system method in the server
              - …
          - `mcp_server_ids` string[] — A list of MCP server ids to be used by the agent
          - `native_mcp_server_ids` string[] — A list of Native MCP server ids to be used by the agent
          - `knowledge_base` KnowledgeBaseLocator[] — A list of knowledge bases to be used by the agent
            - `type` 'file' | 'url' | 'text' | 'folder', required
            - `name` string, required — The name of the knowledge base
            - `id` string, required — The ID of the knowledge base
            - `usage_mode` 'prompt' | 'auto'
          - `custom_llm` CustomLLM
            - `url` string, required — The URL of the Chat Completions compatible endpoint
            - `model_id` string, nullable — The model ID to be used if URL serves multiple models
            - `api_key` union — The API key for authentication. Either a workspace secret reference {'secret_id': '...'} or an environment variable reference {'env_var_label': '...'}.
              - …
            - `auth_connection` union — Optional workspace auth connection for authentication. Only auth connections that produce an Authorization Bearer token are supported; Basic auth, mTLS, custom header, and URL secret auth connections are not supported.
              - …
            - `request_headers` object — Headers that should be included in the request
            - `api_version` string, nullable — The API version to use for the request
            - `api_type` 'chat_completions' | 'responses' | 'websocket'
          - `ignore_default_personality` boolean, nullable — Whether to remove the default personality lines from the system prompt
          - `rag` RagConfigInput
            - `enabled` boolean
            - `embedding_model` 'e5_mistral_7b_instruct' | 'multilingual_e5_large_instruct'
            - `max_vector_distance` number — Maximum vector distance of retrieved chunks.
            - `max_documents_length` integer — Maximum total length of document chunks retrieved from RAG.
            - `max_retrieved_rag_chunks_count` integer — Maximum number of RAG document chunks to initially retrieve from the vector store. These are then further filtered by vector distance and total length.
            - `num_candidates` integer, nullable — Number of candidates evaluated in ANN vector search. Higher number means better results, but higher latency. Minimum recommended value is 100. If disabled, the default value is used.
            - `query_rewrite_prompt_override` string, nullable — Custom prompt for rewriting user queries before RAG retrieval. The conversation history will be automatically appended at the end. If not set, the default prompt will be used.
          - `timezone` string, nullable — Timezone for displaying current time in system prompt. If set, the current time will be included in the system prompt using this timezone. Must be a valid timezone name (e.g., 'America/New_York', 'Europe/London', 'UTC'). Recommended for accurate time-aware responses; without this, the agent has no knowledge of the current date/time unless you provide it via dynamic variables or tools, which can lead to incorrect or hallucinated time references.
          - `backup_llm_config` union — Configuration for backup LLM cascading. Can be disabled, use system defaults, or specify custom order.
            - BackupLLMDefault
              - …
            - BackupLLMDisabled
              - …
            - BackupLLMOverride
              - …
          - `cascade_timeout_seconds` number — Time in seconds before cascading to backup LLM. Must be between 2 and 15 seconds.
          - `tools` union[] — A list of tools that the agent can use over the course of the conversation, use tool_ids instead
            - union — The type of tool
              - …
    - `platform_settings` AgentPlatformSettingsRequestModel, required
      - `evaluation` EvaluationSettingsInput — Settings to evaluate an agent's performance. Agents are evaluated against a set of criteria, with success being defined as meeting some combination of those criteria.
        - `criteria` PromptEvaluationCriteria[] — Individual criteria that the agent should be evaluated against
          - `id` string, required — The unique identifier for the evaluation criteria
          - `name` string, required
          - `type` 'prompt' — The type of evaluation criteria
          - `conversation_goal_prompt` string, required — The prompt that the agent should use to evaluate the conversation
          - `use_knowledge_base` boolean — When evaluating the prompt, should the agent's knowledge base be used.
          - `scope` 'conversation' | 'agent'
          - `llm` 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4' | 'gpt-4-turbo' | 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-5' | 'gpt-5.1' | 'gpt-5.2' | 'gpt-5.2-chat-latest' | 'gpt-5.4' | 'gpt-5.4-mini' | 'gpt-5.4-nano' | 'gpt-5.5' | 'gpt-5.6-sol' | 'gpt-5.6-terra' | 'gpt-5.6-luna' | 'gpt-5-mini' | 'gpt-5-nano' | 'gpt-3.5-turbo' | 'gemini-1.5-pro' | 'gemini-1.5-flash' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.5-flash-lite' | 'gemini-2.5-flash' | 'gemini-3-pro-preview' | 'gemini-3-flash-preview' | 'gemini-3.1-pro-preview' | 'gemini-3.1-flash-lite-preview' | 'gemini-3.1-flash-lite' | 'gemini-3.5-flash' | 'gemini-3.5-flash-lite' | 'claude-sonnet-4-5' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-sonnet-4-6' | 'claude-sonnet-5' | 'claude-sonnet-4' | 'claude-haiku-4-5' | 'claude-3-7-sonnet' | 'claude-3-5-sonnet' | 'claude-3-5-sonnet-v1' | 'claude-3-haiku' | 'grok-beta' | 'custom-llm' | 'qwen3-4b' | 'qwen3-30b-a3b' | 'qwen36-35b-a3b' | 'qwen35-397b-a17b' | 'gpt-oss-20b' | 'gpt-oss-120b' | 'glm-45-air-fp8' | 'gemini-2.5-flash-preview-09-2025' | 'gemini-2.5-flash-lite-preview-09-2025' | 'gemini-2.5-flash-preview-05-20' | 'gemini-2.5-flash-preview-04-17' | 'gemini-2.5-flash-lite-preview-06-17' | 'gemini-2.0-flash-lite-001' | 'gemini-2.0-flash-001' | 'gemini-1.5-flash-002' | 'gemini-1.5-flash-001' | 'gemini-1.5-pro-002' | 'gemini-1.5-pro-001' | 'claude-sonnet-4@20250514' | 'claude-sonnet-4-5@20250929' | 'claude-haiku-4-5@20251001' | 'claude-3-7-sonnet@20250219' | 'claude-3-5-sonnet@20240620' | 'claude-3-5-sonnet-v2@20241022' | 'claude-3-haiku@20240307' | 'gpt-5-2025-08-07' | 'gpt-5.1-2025-11-13' | 'gpt-5.2-2025-12-11' | 'gpt-5.4-2026-03-05' | 'gpt-5.4-mini-2026-03-17' | 'gpt-5.4-nano-2026-03-17' | 'gpt-5.5-2026-04-23' | 'gpt-5-mini-2025-08-07' | 'gpt-5-nano-2025-08-07' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini-2025-04-14' | 'gpt-4.1-nano-2025-04-14' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-2024-11-20' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-05-13' | 'gpt-4-0613' | 'gpt-4-0314' | 'gpt-4-turbo-2024-04-09' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'watt-tool-8b' | 'watt-tool-70b'
          - `scoring_mode` 'binary' | 'numeric_uniform'
          - `max_score` integer — Maximum value of the numeric score scale (minimum is always 0). Only used when scoring_mode is 'numeric_uniform'.
          - `score_instructions` string, nullable — Optional free-text instructions describing how to assign values on the numeric scale. Only used when scoring_mode is 'numeric_uniform'.
      - `widget` WidgetConfigInput
        - `variant` 'tiny' | 'compact' | 'full' | 'expandable'
        - `placement` 'top-left' | 'top' | 'top-right' | 'bottom-left' | 'bottom' | 'bottom-right'
        - `expandable` 'never' | 'mobile' | 'desktop' | 'always'
        - `avatar` union — The avatar of the widget
          - OrbAvatar
            - `type` 'orb' — The type of the avatar
            - `color_1` string — The first color of the avatar
            - `color_2` string — The second color of the avatar
          - URLAvatar
            - `type` 'url' — The type of the avatar
            - `custom_url` string — The custom URL of the avatar
          - ImageAvatar
            - `type` 'image' — The type of the avatar
            - `url` string — The URL of the avatar
        - `feedback_mode` 'none' | 'during' | 'end'
        - `end_feedback` WidgetEndFeedbackConfig
          - `type` 'rating'
        - `bg_color` string — The background color of the widget
        - `text_color` string — The text color of the widget
        - `btn_color` string — The button color of the widget
        - `btn_text_color` string — The button text color of the widget
        - `border_color` string — The border color of the widget
        - `focus_color` string — The focus color of the widget
        - `border_radius` integer, nullable — The border radius of the widget
        - `btn_radius` integer, nullable — The button radius of the widget
        - `action_text` string, nullable — The action text of the widget
        - `start_call_text` string, nullable — The start call text of the widget
        - `end_call_text` string, nullable — The end call text of the widget
        - `expand_text` string, nullable — The expand text of the widget
        - `listening_text` string, nullable — The text to display when the agent is listening
        - `speaking_text` string, nullable — The text to display when the agent is speaking
        - `shareable_page_text` string, nullable — The text to display when sharing
        - `shareable_page_show_terms` boolean — Whether to show terms and conditions on the shareable page
        - `terms_text` string, nullable — The text to display for terms and conditions
        - `terms_html` string, nullable — The HTML to display for terms and conditions
        - `terms_key` string, nullable — The key to display for terms and conditions
        - `show_avatar_when_collapsed` boolean, nullable — Whether to show the avatar when the widget is collapsed
        - `disable_banner` boolean — Whether to disable the banner
        - `override_link` string, nullable — The override link for the widget
        - `markdown_link_allowed_hosts` AllowlistItem[] — List of allowed hostnames for clickable markdown links. Use { hostname: '*' } to allow any domain. Empty means no links are allowed.
          - `hostname` string, required — The hostname of the allowed origin
        - `markdown_link_include_www` boolean — Whether to automatically include www. variants of allowed hosts
        - `markdown_link_allow_http` boolean — Whether to allow http:// in addition to https:// for allowed hosts
        - `mic_muting_enabled` boolean — Whether to enable mic muting
        - `transcript_enabled` boolean — Whether the widget should show the conversation transcript as it goes on
        - `text_input_enabled` boolean — Whether the user should be able to send text messages
        - `conversation_mode_toggle_enabled` boolean — Whether to enable the conversation mode toggle in the widget
        - `default_expanded` boolean — Whether the widget should be expanded by default
        - `always_expanded` boolean — Whether the widget should always be expanded
        - `dismissible` boolean — Whether the widget can be dismissed by the user
        - `show_agent_status` boolean — Whether to show agent working/done/error status during tool use
        - `show_conversation_id` boolean — Whether to show the conversation ID after disconnection.
        - `strip_audio_tags` boolean — Whether to strip audio markup from messages.
        - `syntax_highlight_theme` 'light' | 'dark', nullable — Theme for code block syntax highlighting. Defaults to auto-detection by the widget when not set.
        - `text_contents` WidgetTextContents
          - `main_label` string, nullable — Call to action displayed inside the compact and full variants.
          - `start_call` string, nullable — Text and ARIA label for the start call button.
          - `start_chat` string, nullable — Text and ARIA label for the start chat button (text only)
          - `new_call` string, nullable — Text and ARIA label for the new call button. Displayed when the caller already finished at least one call in order ot start the next one.
          - `end_call` string, nullable — Text and ARIA label for the end call button.
          - `mute_microphone` string, nullable — ARIA label for the mute microphone button.
          - `change_language` string, nullable — ARIA label for the change language dropdown.
          - `collapse` string, nullable — ARIA label for the collapse button.
          - `expand` string, nullable — ARIA label for the expand button.
          - `copied` string, nullable — Text displayed when the user copies a value using the copy button.
          - `accept_terms` string, nullable — Text and ARIA label for the accept terms button.
          - `dismiss_terms` string, nullable — Text and ARIA label for the cancel terms button.
          - `listening_status` string, nullable — Status displayed when the agent is listening.
          - `speaking_status` string, nullable — Status displayed when the agent is speaking.
          - `connecting_status` string, nullable — Status displayed when the agent is connecting.
          - `chatting_status` string, nullable — Status displayed when the agent is chatting (text only)
          - `input_label` string, nullable — ARIA label for the text message input.
          - `input_placeholder` string, nullable — Placeholder text for the text message input.
          - `input_placeholder_text_only` string, nullable — Placeholder text for the text message input (text only)
          - `input_placeholder_new_conversation` string, nullable — Placeholder text for the text message input when starting a new conversation (text only)
          - `user_ended_conversation` string, nullable — Information message displayed when the user ends the conversation.
          - `agent_ended_conversation` string, nullable — Information message displayed when the agent ends the conversation.
          - `conversation_id` string, nullable — Text label used next to the conversation ID.
          - `error_occurred` string, nullable — Text label used when an error occurs.
          - `copy_id` string, nullable — Text and ARIA label used for the copy ID button.
          - `initiate_feedback` string, nullable — Text displayed to prompt the user for feedback.
          - `request_follow_up_feedback` string, nullable — Text displayed to request additional feedback details.
          - `thanks_for_feedback` string, nullable — Text displayed to thank the user for providing feedback.
          - `thanks_for_feedback_details` string, nullable — Additional text displayed explaining the value of user feedback.
          - `follow_up_feedback_placeholder` string, nullable — Placeholder text for the follow-up feedback input field.
          - `submit` string, nullable — Text and ARIA label for the submit button.
          - `go_back` string, nullable — Text and ARIA label for the go back button.
          - `send_message` string, nullable — Text and ARIA label for the send message button.
          - `text_mode` string, nullable — Text and ARIA label for the switch to text mode button.
          - `voice_mode` string, nullable — Text and ARIA label for the switch to voice mode button.
          - `switched_to_text_mode` string, nullable — Toast notification displayed when switching to text mode.
          - `switched_to_voice_mode` string, nullable — Toast notification displayed when switching to voice mode.
          - `copy` string, nullable — Text and ARIA label for the copy button.
          - `download` string, nullable — Text and ARIA label for the download button.
          - `wrap` string, nullable — Text and ARIA label for the wrap toggle button.
          - `agent_working` string, nullable — Status text displayed when the agent is processing a tool call.
          - `agent_done` string, nullable — Status text displayed when the agent finishes processing a tool call.
          - `agent_error` string, nullable — Status text displayed when the agent encounters an error during a tool call.
          - `attach_file` string, nullable — Text and ARIA label for the attach file button.
          - `remove_file` string, nullable — ARIA label for the remove file button.
          - `file_upload_error` string, nullable — Error message displayed when a file fails to upload.
          - `file_type_unsupported` string, nullable — Error message displayed when an unsupported file type is selected. Followed by the list of accepted types.
          - `file_too_large` string, nullable — Error message displayed when a file exceeds the maximum size limit.
          - `file_limit_reached` string, nullable — Error message displayed when the maximum number of files for a conversation is reached.
          - `typing_indicator` string, nullable — Status text displayed while the agent is typing.
        - `styles` WidgetStyles
          - `base` string, nullable — The base background color.
          - `base_hover` string, nullable — The color of the base background when hovered.
          - `base_active` string, nullable — The color of the base background when active (clicked).
          - `base_border` string, nullable — The color of the border against the base background.
          - `base_subtle` string, nullable — The color of subtle text against the base background.
          - `base_primary` string, nullable — The color of primary text against the base background.
          - `base_error` string, nullable — The color of error text against the base background.
          - `accent` string, nullable — The accent background color.
          - `accent_hover` string, nullable — The color of the accent background when hovered.
          - `accent_active` string, nullable — The color of the accent background when active (clicked).
          - `accent_border` string, nullable — The color of the border against the accent background.
          - `accent_subtle` string, nullable — The color of subtle text against the accent background.
          - `accent_primary` string, nullable — The color of primary text against the accent background.
          - `overlay_padding` number, nullable — The padding around the edges of the viewport.
          - `button_radius` number, nullable — The radius of the buttons.
          - `input_radius` number, nullable — The radius of the input fields.
          - `bubble_radius` number, nullable — The radius of the chat bubbles.
          - `sheet_radius` number, nullable — The default radius of sheets.
          - `compact_sheet_radius` number, nullable — The radius of the sheet in compact mode.
          - `dropdown_sheet_radius` number, nullable — The radius of the dropdown sheet.
        - `show_resize_button` boolean — Whether to show the resize button
        - `language_selector` boolean — Whether to show the language selector
        - `supports_text_only` boolean — Whether the widget can switch to text only mode
        - `custom_avatar_path` string, nullable — The custom avatar path
        - `language_presets` object — Language presets for the widget
      - `data_collection` object — Data collection settings
      - `data_collection_scopes` object — Scope per data collection item ID. Missing keys default to conversation scope.
      - `analysis_items` AgentAnalysisItemsInput
        - `evaluation_criteria` union[]
          - union
            - AttachedUserEvaluationRef
              - …
            - AttachedSystemEvaluationRef
              - …
        - `data_collection` union[]
          - union
            - AttachedUserDataCollectionRef
              - …
            - AttachedSystemDataCollectionRef
              - …
      - `overrides` ConversationInitiationClientDataConfigInput
        - `conversation_config_override` ConversationConfigClientOverrideConfigInput
          - `asr` ASRConversationalConfigOverrideConfig
            - `keywords` boolean — Whether to allow overriding the keywords field.
          - `turn` TurnConfigOverrideConfig
            - `soft_timeout_config` SoftTimeoutConfigOverrideConfig
              - …
          - `tts` TTSConversationalConfigOverrideConfig
            - `model_id` boolean — Whether to allow overriding the model_id field.
            - `voice_id` boolean — Whether to allow overriding the voice_id field.
            - `stability` boolean — Whether to allow overriding the stability field.
            - `speed` boolean — Whether to allow overriding the speed field.
            - `similarity_boost` boolean — Whether to allow overriding the similarity_boost field.
          - `conversation` ConversationConfigOverrideConfig
            - `text_only` boolean — Whether to allow overriding the text_only field.
          - `agent` AgentConfigOverrideConfig
            - `first_message` boolean — Whether to allow overriding the first_message field.
            - `language` boolean — Whether to allow overriding the language field.
            - `max_conversation_duration_message` boolean — Whether to allow overriding the max_conversation_duration_message field.
            - `prompt` PromptAgentAPIModelOverrideConfig
              - …
        - `custom_llm_extra_body` boolean — Whether to include custom LLM extra body
        - `enable_conversation_initiation_client_data_from_webhook` boolean — Whether to enable conversation initiation client data from webhooks
        - `enable_starting_workflow_node_id_from_client` boolean — Whether clients may pass starting_workflow_node_id in initiation client data; if false, sending it fails conversation start.
      - `workspace_overrides` AgentWorkspaceOverridesInput
        - `conversation_initiation_client_data_webhook` ConversationInitiationClientDataWebhook
          - `url` string, required — The URL to send the webhook to
          - `request_headers` object, required — The headers to send with the webhook request
        - `webhooks` ConvAIWebhooks
          - `post_call_webhook_id` string, nullable
          - `events` WebhookEventType[] — List of event types to send via webhook. Options: transcript, audio, call_initiation_failure, unredacted_transcript, unredacted_audio.
          - `transcript_format` 'json' | 'opentelemetry'
          - `send_audio` boolean, nullable — DEPRECATED: Use 'events' field instead. Whether to send audio data with post-call webhooks for ConvAI conversations
      - `testing` AgentTestingSettings — Settings for agent testing configuration.
        - `attached_tests` AttachedTestModel[] — List of test IDs that should be run for this agent
          - `test_id` string, required
          - `workflow_node_id` string, nullable
      - `archived` boolean — Whether the agent is archived
      - `guardrails` GuardrailsV1Input
        - `version` '1'
        - `focus` FocusGuardrail
          - `is_enabled` boolean
        - `prompt_injection` PromptInjectionGuardrail
          - `is_enabled` boolean
        - `content` ContentGuardrailInput
          - `execution_mode` 'streaming' | 'blocking'
          - `config` ContentConfig
            - `sexual` ContentThresholdGuardrail
              - …
            - `violence` ContentThresholdGuardrail
              - …
            - `harassment` ContentThresholdGuardrail
              - …
            - `self_harm` ContentThresholdGuardrail
              - …
            - `profanity` ContentThresholdGuardrail
              - …
            - `religion_or_politics` ContentThresholdGuardrail
              - …
            - `medical_and_legal_information` ContentThresholdGuardrail
              - …
          - `trigger_action` union
            - EndCallTriggerAction
              - …
            - RetryTriggerAction
              - …
        - `moderation` object, nullable
          - `execution_mode` 'streaming' | 'blocking'
          - `config` ModerationConfig
            - `sexual` ThresholdGuardrail
              - …
            - `violence` ThresholdGuardrail
              - …
            - `violence_graphic` ThresholdGuardrail
              - …
            - `harassment` ThresholdGuardrail
              - …
            - `harassment_threatening` ThresholdGuardrail
              - …
            - `hate` ThresholdGuardrail
              - …
            - `hate_threatening` ThresholdGuardrail
              - …
            - `self_harm_instructions` ThresholdGuardrail
              - …
            - `self_harm` ThresholdGuardrail
              - …
            - `self_harm_intent` ThresholdGuardrail
              - …
            - `sexual_minors` ThresholdGuardrail
              - …
        - `custom` CustomGuardrailInput — Container for custom guardrails, matching ModerationGuardrail pattern
          - `config` CustomGuardrailsConfigInput — Config container for custom guardrails list
            - `configs` CustomGuardrailConfig[]
              - …
      - `summary_language` string, nullable — Language for all conversation analysis outputs (summaries, titles, evaluation rationales, data collection rationales). If not set, the language will be inferred from the conversation. Must be one of the supported conversation languages.
      - `auto_translate_transcript_to_app_language` boolean, nullable — When enabled, a conversation transcript is automatically translated to the viewer's application language when they open the transcript page. If not set or false, transcripts are shown in their original language unless the viewer manually selects a translation.
      - `auth` AuthSettings
        - `enable_auth` boolean — If set to true, starting a conversation with an agent will require a signed token
        - `allowlist` AllowlistItem[] — A list of hosts that are allowed to start conversations with the agent
          - `hostname` string, required — The hostname of the allowed origin
        - `require_origin_header` boolean — When enabled, connections with no origin header will be rejected. If the allowlist is empty, this option has no effect.
        - `shareable_token` string, nullable — A shareable token that can be used to start a conversation with the agent
      - `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.
      - `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'.
      - `trust_context` 'unknown' | 'low' | 'high' — The trust context in which the agent operates. UNKNOWN: not yet classified (existing agents created before this feature). LOW: serves untrusted external participants (e.g. customer support, sales) — outputs should be vetted and tool access scoped. HIGH: serves the owner (e.g. personal assistant) — full tool access is appropriate.
      - `analysis_llm` 'gpt-4o-mini' | 'gpt-4o' | 'gpt-4' | 'gpt-4-turbo' | 'gpt-4.1' | 'gpt-4.1-mini' | 'gpt-4.1-nano' | 'gpt-5' | 'gpt-5.1' | 'gpt-5.2' | 'gpt-5.2-chat-latest' | 'gpt-5.4' | 'gpt-5.4-mini' | 'gpt-5.4-nano' | 'gpt-5.5' | 'gpt-5.6-sol' | 'gpt-5.6-terra' | 'gpt-5.6-luna' | 'gpt-5-mini' | 'gpt-5-nano' | 'gpt-3.5-turbo' | 'gemini-1.5-pro' | 'gemini-1.5-flash' | 'gemini-2.0-flash' | 'gemini-2.0-flash-lite' | 'gemini-2.5-flash-lite' | 'gemini-2.5-flash' | 'gemini-3-pro-preview' | 'gemini-3-flash-preview' | 'gemini-3.1-pro-preview' | 'gemini-3.1-flash-lite-preview' | 'gemini-3.1-flash-lite' | 'gemini-3.5-flash' | 'gemini-3.5-flash-lite' | 'claude-sonnet-4-5' | 'claude-opus-4-7' | 'claude-opus-4-8' | 'claude-sonnet-4-6' | 'claude-sonnet-5' | 'claude-sonnet-4' | 'claude-haiku-4-5' | 'claude-3-7-sonnet' | 'claude-3-5-sonnet' | 'claude-3-5-sonnet-v1' | 'claude-3-haiku' | 'grok-beta' | 'custom-llm' | 'qwen3-4b' | 'qwen3-30b-a3b' | 'qwen36-35b-a3b' | 'qwen35-397b-a17b' | 'gpt-oss-20b' | 'gpt-oss-120b' | 'glm-45-air-fp8' | 'gemini-2.5-flash-preview-09-2025' | 'gemini-2.5-flash-lite-preview-09-2025' | 'gemini-2.5-flash-preview-05-20' | 'gemini-2.5-flash-preview-04-17' | 'gemini-2.5-flash-lite-preview-06-17' | 'gemini-2.0-flash-lite-001' | 'gemini-2.0-flash-001' | 'gemini-1.5-flash-002' | 'gemini-1.5-flash-001' | 'gemini-1.5-pro-002' | 'gemini-1.5-pro-001' | 'claude-sonnet-4@20250514' | 'claude-sonnet-4-5@20250929' | 'claude-haiku-4-5@20251001' | 'claude-3-7-sonnet@20250219' | 'claude-3-5-sonnet@20240620' | 'claude-3-5-sonnet-v2@20241022' | 'claude-3-haiku@20240307' | 'gpt-5-2025-08-07' | 'gpt-5.1-2025-11-13' | 'gpt-5.2-2025-12-11' | 'gpt-5.4-2026-03-05' | 'gpt-5.4-mini-2026-03-17' | 'gpt-5.4-nano-2026-03-17' | 'gpt-5.5-2026-04-23' | 'gpt-5-mini-2025-08-07' | 'gpt-5-nano-2025-08-07' | 'gpt-4.1-2025-04-14' | 'gpt-4.1-mini-2025-04-14' | 'gpt-4.1-nano-2025-04-14' | 'gpt-4o-mini-2024-07-18' | 'gpt-4o-2024-11-20' | 'gpt-4o-2024-08-06' | 'gpt-4o-2024-05-13' | 'gpt-4-0613' | 'gpt-4-0314' | 'gpt-4-turbo-2024-04-09' | 'gpt-3.5-turbo-0125' | 'gpt-3.5-turbo-1106' | 'watt-tool-8b' | 'watt-tool-70b'
      - `topic_discovery` TopicDiscoverySettings — Per-agent topic-discovery configuration. Cadence and analysis window are managed internally; this only exposes the customer-facing on/off toggle.
      - `sentiment_analysis` SentimentAnalysisSettings
      - `alerting` AlertingSettings — Alerting configuration used at both per-agent and per-workspace level. All fields are optional overrides; the cascade resolver fills in defaults when they are unset. Notifiers stack and dedupe (by webhook_id) across the workspace and agent layers rather than overriding each other. Cascade order for per-monitor threshold and auto-resolve: agent → workspace → system default.
        - `monitor_configs` object — Alerting configuration keyed by monitor name.
        - `auto_resolve_after_inactive_minutes` integer, nullable — How many minutes an alert can stay inactive before it is auto-resolved. Unset values fall through to the next layer.
        - `notifiers` AlertingWebhookNotifier[] — Delivery channels for alert lifecycle notifications. Stacked and deduped by webhook_id with other layers.
          - `type` 'webhook'
          - `webhook_id` string, required — ID of the workspace webhook to deliver alert lifecycle notifications to.
    - `workflow` AgentWorkflowRequestModel
      - `edges` object
      - `nodes` object
      - `prevent_subagent_loops` boolean — Whether to prevent loops in the workflow execution.
  - `agent_id` string, required — Agent ID to resubmit tests for
  - `branch_id` string, nullable — ID of the branch to run the tests on. If not provided, the tests will be run on the agent's main branch.

## Response `200`

Successful Response

- unknown

## 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/57d56f34628a/schema)
