> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Simular una conversación (stream)

POST https://api.elevenlabs.io/v1/convai/agents/{agent_id}/simulate-conversation/stream
Content-Type: application/json

Obsoleto. Esta ruta de API se eliminará el 31 de octubre de 2026. Usa las rutas de API `/v1/convai/agent-testing/create` y `/v1/convai/agents/:agent_id/run-tests` para crear y ejecutar simulaciones. Inicia una conversación entre el agente y un usuario simulado y recibe la respuesta en streaming. La respuesta se transmite como listas parciales de mensajes que deben concatenarse y, cuando la conversación haya terminado, se enviará un único mensaje final con el análisis de la conversación.

Reference: https://elevenlabs.io/docs/eleven-agents/api-reference/agents/simulate-conversation-stream

## Servers

- `https://api.elevenlabs.io` (Production, default)
- `https://api.us.elevenlabs.io` (Production US)
- `https://api.eu.residency.elevenlabs.io` (Production EU)
- `https://api.in.residency.elevenlabs.io` (Production India)
- `https://api.sg.residency.elevenlabs.io` (Production Singapore)

## Request

### Path parameters

- `agent_id` (string, required) — El ID de un agente. Se devuelve al crear el agente.

### Body (application/json)

This endpoint expects an object.

- `simulation_specification` (ConversationSimulationSpecification, required) — Una especificación que detalla cómo debe simularse la conversación
- `extra_evaluation_criteria` (list of PromptEvaluationCriteria, optional) — Una lista de criterios de evaluación que probar.
- `new_turns_limit` (integer, optional, default: 100) — Número máximo de turnos nuevos que se generarán en la simulación de conversación

## Errors

### 422 Agents Simulate Conversation Stream Request Unprocessable Entity Error

Error de validación

- `detail` (list of ValidationError, optional)

## Types

### ConversationSimulationSpecification

Una especificación que se utilizará para simular una conversación entre un agente y un usuario de IA.

- `simulated_user_config` (AgentConfig, required)
- `tool_mock_config` (map from string to ToolMockConfig, optional)
- `partial_conversation_history` (list of ConversationHistoryTranscriptCommonModelInput, optional) — Un historial de conversación parcial desde el que iniciar la simulación. Si está vacío, la simulación empieza de cero.
- `dynamic_variables` (map from string to any, optional)

### PromptEvaluationCriteria

Una evaluación que usa la transcripción y un prompt para obtener una respuesta de sí o no

- `id` (string, required) — El identificador único de los criterios de evaluación
- `name` (string, required)
- `conversation_goal_prompt` (string, required) — El prompt que debe usar el agente para evaluar la conversación
- `type` ("prompt", optional) — El tipo de criterios de evaluación
- `use_knowledge_base` (boolean, optional, default: false) — Indica si se debe usar la base de conocimientos del agente al evaluar el prompt.
- `scope` (enum, optional, default: conversation) — El alcance del contexto de la transcripción utilizado al evaluar este criterio. «conversation» usa la transcripción completa; «agent» usa solo la parte en la que el agente definidor estaba activo.
  - Allowed values: `conversation`, `agent`
- `llm` (enum, optional) — Modelo LLM que utilizar para este criterio de evaluación. Si no se establece, utiliza el valor predeterminado analysis_llm del agente.
  - Allowed values: `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-6-astra`, `gpt-6-sol`, `gpt-6-luna`, `gpt-6.1-sol`, `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`, `gemini-3.6-flash`, `gemini-3.7-flash`, `gemini-3.8-flash`, `gemini-4-argon`, `claude-sonnet-4-5`, `claude-opus-4-6`, `claude-opus-4-7`, `claude-opus-4-8`, `claude-opus-5`, `claude-opus-5-5`, `claude-sonnet-4-6`, `claude-sonnet-5`, `claude-sonnet-5-5`, `claude-sonnet-4`, `claude-haiku-4-5`, `claude-haiku-5-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`, `glm-52`, `deepseek-v41-flash`, `nemotron-35-super-vl-nvfp4`, `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` (enum, optional, default: binary) — Cómo se puntúa este criterio. 'binary' se resuelve como éxito/fallo/desconocido. 'numeric_uniform' devuelve un número en la escala [0, max_score], que se normaliza en el porcentaje agregado de éxito de la conversación.
  - Allowed values: `binary`, `numeric_uniform`
- `max_score` (integer, optional, default: 100) — Valor máximo de la escala de puntuación numérica (el mínimo siempre es 0). Solo se utiliza cuando scoring_mode es 'numeric_uniform'.
- `score_instructions` (string, optional) — Instrucciones opcionales de formato libre que describen cómo asignar valores en la escala numérica. Solo se utilizan cuando scoring_mode es 'numeric_uniform'.

### ValidationError

- `loc` (list of ValidationErrorLocItem, required)
- `msg` (string, required)
- `type` (string, required)

### AgentConfig

- `first_message` (string, optional, default: ) — Si no está vacío, el primer mensaje que dirá el agente. Si está vacío, el agente espera a que el usuario inicie la conversación.
- `language` (string, optional, default: en) — Idioma del agente, usado para ASR y TTS
- `hinglish_mode` (boolean, optional, default: false) — Cuando está activado, el agente mezcla palabras y frases en inglés en las respuestas en hindi, malayalam, telugu o canarés.
- `dynamic_variables` (any, optional)
- `disable_first_message_interruptions` (boolean, optional, default: false) — Si es true, el usuario no podrá interrumpir al agente mientras se emite el primer mensaje.
- `max_conversation_duration_message` (string, optional, default: ) — Si no está vacío, el mensaje que enviará el agente cuando se alcance la duración máxima de la conversación.
- `text_behavior_overrides` (map from string to BehaviorOverride, optional) — Anulaciones del comportamiento de respuesta por canal para conversaciones de texto. Si no se establecen, se aplican los valores predeterminados integrados del canal.
- `prompt` (PromptAgentApiModelOutput, optional) — El prompt del agente

### ToolMockConfig

- `default_return_value` (string, optional, default: Tool Called.)
- `default_is_error` (boolean, optional, default: false)

### ConversationHistoryTranscriptCommonModelInput

- `role` (enum, required)
  - Allowed values: `user`, `agent`
- `time_in_call_secs` (integer, required)
- `agent_metadata` (AgentMetadata, optional)
- `message` (string, optional)
- `multivoice_message` (ConversationHistoryMultivoiceMessageModel, optional) — Representa un mensaje de un agente con varias voces.
- `tool_calls` (list of ConversationHistoryTranscriptToolCallCommonModelInput, optional)
- `tool_results` (list of ConversationHistoryTranscriptCommonModelInputToolResultsItem, optional)
- `feedback` (UserFeedback, optional)
- `llm_override` (string, optional)
- `producing_llm` (string, optional)
- `conversation_turn_metrics` (ConversationTurnMetrics, optional)
- `rag_retrieval_info` (RagRetrievalInfo, optional)
- `llm_usage` (LlmUsageInput, optional)
- `interrupted` (boolean, optional, default: false)
- `ignored_as_backchannel` (boolean, optional, default: false)
- `platform_event` (enum, optional)
  - Allowed values: `user_turn_timeout`, `skip_turn_wait_elapsed`
- `original_message` (string, optional)
- `reasoning` (list of ConversationReasoningModel, optional)
- `source_medium` (enum, optional)
  - Allowed values: `audio`, `dtmf`, `text`, `image`, `file`
- `source_event_id` (integer, optional)
- `used_static_kb_document_ids` (list of string, optional)
- `user_identifier` (string, optional)
- `id` (string, optional)
- `triggered_guardrails` (list of TriggeredGuardrailCommonModel, optional)

### ValidationErrorLocItem

### BehaviorOverride

- `verbosity` (enum, optional) — Anulación de verbosidad. Se aplica el valor predeterminado subyacente cuando no se establece.
  - Allowed values: `auto`, `concise`, `thorough`
- `output_format` (enum, optional) — Anulación del formato de salida. Si no se establece, se aplica el valor predeterminado subyacente.
  - Allowed values: `mp3_22050_32`, `mp3_44100_32`, `mp3_44100_64`, `mp3_44100_96`, `mp3_44100_128`, `mp3_44100_192`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_44100`, `ulaw_8000`
- `interaction_budget` (enum, optional) — Anulación del presupuesto de interacción. Si no se establece, se aplica el valor predeterminado subyacente.
  - Allowed values: `realtime`, `5_minutes`, `10_minutes`, `1_hour`

### PromptAgentApiModelOutput

- `prompt` (string, optional, default: ) — El prompt del agente
- `llm` (enum, optional) — El LLM que se consultará con el prompt y el historial de chat. Si utilizas residencia de datos, el LLM debe ser compatible con el entorno de residencia de datos
  - Allowed values: `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-6-astra`, `gpt-6-sol`, `gpt-6-luna`, `gpt-6.1-sol`, `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`, `gemini-3.6-flash`, `gemini-3.7-flash`, `gemini-3.8-flash`, `gemini-4-argon`, `claude-sonnet-4-5`, `claude-opus-4-6`, `claude-opus-4-7`, `claude-opus-4-8`, `claude-opus-5`, `claude-opus-5-5`, `claude-sonnet-4-6`, `claude-sonnet-5`, `claude-sonnet-5-5`, `claude-sonnet-4`, `claude-haiku-4-5`, `claude-haiku-5-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`, `glm-52`, `deepseek-v41-flash`, `nemotron-35-super-vl-nvfp4`, `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` (enum, optional) — Esfuerzo de razonamiento del modelo. Solo disponible para algunos modelos.
  - Allowed values: `none`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max`
- `thinking_budget` (integer, optional) — Número máximo de tokens utilizados para el razonamiento. Usa 0 para desactivarlo si el modelo lo admite.
- `enable_reasoning_summary` (boolean, optional, default: false) — Activa los resúmenes de razonamiento del modelo. Cuando está desactivado, no solicitamos resúmenes al proveedor si es posible, para lograr un TTFB más rápido. No es compatible con ZRM.
- `temperature` (double, optional) — La temperatura para el LLM. El valor predeterminado es 0. Establécela en null para omitir por completo el parámetro de la solicitud al LLM, lo que resulta útil para LLM personalizados que rechazan el campo de temperatura.
- `max_tokens` (integer, optional, default: -1) — Si es mayor que 0, número máximo de tokens que puede predecir el LLM
- `tool_ids` (list of string, optional) — Una lista de ID de herramientas utilizadas por el agente.
- `tool_ids_strict` (boolean, optional, default: false) — Solo se aplica como una anulación de conversación y se permite siempre que se pueda anular tool_ids. Cuando es true, el valor de tool_ids anulado es la lista completa de herramientas permitidas en la conversación, incluidas las herramientas de los nodos de workflow. Se ignora cuando se configura en el agente.
- `built_in_tools` (BuiltInToolsOutput, optional) — Herramientas del sistema integradas que utilizará el agente
- `enable_parallel_tool_calls` (boolean, optional, default: true) — Activa las llamadas paralelas a herramientas. Cuando está activado, el agente puede ejecutar varias herramientas en paralelo en un único turno. No es compatible con todos los modelos.
- `mcp_server_ids` (list of string, optional) — Una lista de ID de servidores MCP que utilizará el agente
- `native_mcp_server_ids` (list of string, optional) — Una lista de ID de servidores MCP nativos que utilizará el agente
- `knowledge_base` (list of KnowledgeBaseLocator, optional) — Una lista de bases de conocimiento que utilizará el agente
- `custom_llm` (CustomLlm, optional) — Definición de un LLM personalizado si el campo LLM está establecido en 'CUSTOM_LLM'
- `ignore_default_personality` (boolean, optional) — Si se eliminan las líneas de personalidad predeterminadas del prompt del sistema
- `rag` (RagConfigOutput, optional) — Configuración de RAG
- `timezone` (string, optional) — Zona horaria para mostrar la hora actual en el prompt del sistema. Si se establece, la hora actual se incluirá en el prompt del sistema usando esta zona horaria. Debe ser un nombre de zona horaria válido (p. ej., 'America/New_York', 'Europe/London', 'UTC'). Se recomienda para obtener respuestas precisas que tengan en cuenta la hora; sin ella, el agente no conoce la fecha ni la hora actuales a menos que se las proporciones mediante variables dinámicas o herramientas, lo que puede provocar referencias temporales incorrectas o alucinadas.
- `backup_llm_config` (PromptAgentApiModelOutputBackupLlmConfig, optional) — Configuración de la cascada de LLM de respaldo. Se puede desactivar, usar los valores predeterminados del sistema o especificar un orden personalizado.
- `cascade_timeout_seconds` (double, optional, default: 4) — Tiempo en segundos antes de recurrir al LLM de respaldo. Debe estar entre 2 y 15 segundos.
- `tools` (list of PromptAgentApiModelOutputToolsItem, optional, deprecated) — Una lista de herramientas que el agente puede utilizar durante la conversación; usa tool_ids en su lugar

### AgentMetadata

- `agent_id` (string, required)
- `branch_id` (string, optional)
- `workflow_node_id` (string, optional)
- `version_id` (string, optional)

### ConversationHistoryMultivoiceMessageModel

Representa un mensaje de un agente con varias voces.

- `parts` (list of ConversationHistoryMultivoiceMessagePartModel, required)

### ConversationHistoryTranscriptToolCallCommonModelInput

- `request_id` (string, required)
- `tool_name` (string, required)
- `params_as_json` (string, required)
- `tool_has_been_called` (boolean, required)
- `type` (enum, optional)
  - Allowed values: `system`, `webhook`, `client`, `mcp`, `workflow`, `api_integration_webhook`, `api_integration_mcp`, `smb`
- `tool_id` (string, optional) — ID de la herramienta llamada. No se establece para herramientas sin ID, como las herramientas del sistema.
- `tool_details` (ConversationHistoryTranscriptToolCallCommonModelInputToolDetails, optional)

### ConversationHistoryTranscriptCommonModelInputToolResultsItem

### UserFeedback

- `score` (enum, required)
  - Allowed values: `like`, `dislike`
- `time_in_call_secs` (integer, required)

### ConversationTurnMetrics

- `metrics` (map from string to MetricRecord, optional)
- `convai_asr_provider` (string, optional)
- `convai_tts_model` (string, optional)
- `convai_tts_cascade` (string, optional)
- `voice_id` (string, optional)

### RagRetrievalInfo

- `chunks` (list of RagChunkMetadata, required)
- `embedding_model` (enum, required, default: e5_mistral_7b_instruct)
  - Allowed values: `e5_mistral_7b_instruct`, `multilingual_e5_large_instruct`
- `retrieval_query` (string, required)
- `rag_latency_secs` (double, required)
- `used_chunk_ids` (list of string, optional)

### LlmUsageInput

- `model_usage` (map from string to LlmInputOutputTokensUsage, optional)

### ConversationReasoningModel

- `summary` (string, optional)
- `provider_redact` (boolean, optional, default: false)

### TriggeredGuardrailCommonModel

- `guardrail_type` (enum, required)
  - Allowed values: `custom`, `prompt_injection`, `self_harm_intent`, `violence_graphic`, `sexual`, `violence`, `harassment`, `sexual_minors`, `self_harm`, `self_harm_instructions`, `harassment_threatening`, `hate`, `hate_threatening`, `profanity`, `religion_or_politics`, `medical_and_legal`, `guardrail`
- `guardrail_name` (string, optional)

### BuiltInToolsOutput

Herramientas del sistema que se pueden proporcionar a un agente conversacional. No se llama deliberadamente ConversationalBuiltInTools: BuiltInToolsInput y BuiltInToolsOutput forman parte de la especificación pública de la API y de los SDK generados.

- `transfer_to_agent` (SystemToolConfigOutput, optional) — La herramienta de transferencia a agente
- `end_call` (SystemToolConfigOutput, optional) — La herramienta para finalizar la llamada
- `language_detection` (SystemToolConfigOutput, optional) — La herramienta de detección de idioma
- `transfer_to_number` (SystemToolConfigOutput, optional) — La herramienta de transferencia a número
- `skip_turn` (SystemToolConfigOutput, optional) — La herramienta para omitir turno
- `play_keypad_touch_tone` (SystemToolConfigOutput, optional) — La herramienta de reproducción DTMF
- `voicemail_detection` (SystemToolConfigOutput, optional) — La herramienta de detección de buzón de voz

### KnowledgeBaseLocator

- `type` (enum, required) — El tipo de base de conocimiento
  - Allowed values: `file`, `url`, `text`, `folder`
- `name` (string, required) — El nombre de la base de conocimientos
- `id` (string, required) — El ID de la base de conocimientos
- `usage_mode` (enum, optional, default: auto) — El modo de uso de la base de conocimiento
  - Allowed values: `prompt`, `auto`

### CustomLlm

- `url` (string, required) — La URL de la ruta compatible con Chat Completions
- `model_id` (string, optional) — El ID del modelo que se debe usar si la URL sirve varios modelos
- `api_key` (CustomLlmApiKey, optional) — La clave de API para la autenticación. Puede ser una referencia a un secreto del espacio de trabajo \{'secret\_id': '...'} o una referencia a una variable de entorno \{'env\_var\_label': '...'}.
- `auth_connection` (CustomLlmAuthConnection, optional) — Conexión de autenticación opcional del espacio de trabajo. Solo se admiten conexiones de autenticación que generen un token Authorization Bearer; no se admiten conexiones de autenticación Basic, mTLS, con encabezado personalizado ni con secreto en la URL.
- `request_headers` (map from string to CustomLlmRequestHeadersValue, optional) — Cabeceras que deben incluirse en la solicitud.
- `api_version` (string, optional) — La versión de la API que se utilizará para la solicitud.
- `api_type` (enum, optional, default: chat_completions) — El tipo de API que se utilizará (chat_completions, responses o websocket).
  - Allowed values: `chat_completions`, `responses`, `websocket`

### RagConfigOutput

- `enabled` (boolean, optional, default: false)
- `embedding_model` (enum, optional, default: e5_mistral_7b_instruct)
  - Allowed values: `e5_mistral_7b_instruct`, `multilingual_e5_large_instruct`
- `max_vector_distance` (double, optional, default: 0.6) — Distancia vectorial máxima de los fragmentos recuperados.
- `max_documents_length` (integer, optional, default: 50000) — Longitud total máxima de los fragmentos de documentos recuperados de RAG.
- `max_retrieved_rag_chunks_count` (integer, optional, default: 20) — Número máximo de fragmentos de documentos RAG que se recuperarán inicialmente del almacén vectorial. Después se filtran según la distancia vectorial y la longitud total.
- `num_candidates` (integer, optional) — Número de candidatos evaluados en la búsqueda vectorial ANN. Un número mayor ofrece mejores resultados, pero también mayor latencia. El valor mínimo recomendado es 100. Si se desactiva, se utiliza el valor predeterminado.
- `query_rewrite_prompt_override` (string, optional) — Prompt personalizado para reformular las consultas de usuario antes de la recuperación RAG. El historial de conversación se añadirá automáticamente al final. Si no se configura, se utilizará el prompt predeterminado.
- `knowledge_base_tool_info` (KnowledgeBaseToolInfo, optional) — Cuando se configura, el agente usa la herramienta knowledge_base en lugar de la herramienta heredada knowledge_base_rag. None significa que el agente no está incluido.

### PromptAgentApiModelOutputBackupLlmConfig

Configuración de la cascada de LLM de respaldo. Se puede desactivar, usar los valores predeterminados del sistema o especificar un orden personalizado.

- `preference`: `default`
- `preference`: `disabled`
- `preference`: `override`
  - `order` (list of enum, required)
    - Allowed values: `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-6-astra`, `gpt-6-sol`, `gpt-6-luna`, `gpt-6.1-sol`, `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`, `gemini-3.6-flash`, `gemini-3.7-flash`, `gemini-3.8-flash`, `gemini-4-argon`, `claude-sonnet-4-5`, `claude-opus-4-6`, `claude-opus-4-7`, `claude-opus-4-8`, `claude-opus-5`, `claude-opus-5-5`, `claude-sonnet-4-6`, `claude-sonnet-5`, `claude-sonnet-5-5`, `claude-sonnet-4`, `claude-haiku-4-5`, `claude-haiku-5-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`, `glm-52`, `deepseek-v41-flash`, `nemotron-35-super-vl-nvfp4`, `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`

### PromptAgentApiModelOutputToolsItem

El tipo de herramienta

- `type`: `api_integration_webhook`
  - `api_integration_connection_id` (string, required)
  - `api_integration_id` (string, required)
  - `assignments` (list of DynamicVariableAssignment, required) — Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas
  - `description` (string, required) — Descripción de cuándo se debe usar la herramienta y qué hace.
  - `dynamic_variables` (DynamicVariablesConfig, required) — Configuración de variables dinámicas
  - `execution_mode` (enum, required, default: immediate) — Determina cuándo y cómo se ejecuta la herramienta: 'immediate' ejecuta la herramienta de inmediato cuando la solicita el LLM, 'post_tool_speech' espera a que el agente termine de hablar antes de ejecutarla y 'async' ejecuta la herramienta en segundo plano sin bloquear; es la mejor opción para operaciones de larga duración.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `interruption_mode` (enum, required, default: allow) — Controla si el usuario puede interrumpir al agente durante esta llamada a la herramienta. 'allow' (predeterminado) permite al usuario interrumpir en cualquier momento, 'disable_during_tool' suprime las interrupciones solo mientras se ejecuta la herramienta y 'disable_during_tool_and_turn' las suprime mientras se ejecuta la herramienta y durante la respuesta posterior del agente.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `name` (string, required)
  - `pre_tool_speech` (enum, required, default: auto) — Controla si el agente habla antes de llamar a esta herramienta. 'auto' (predeterminado) decide según la latencia reciente de la herramienta, 'force' siempre hace que el agente hable y 'off' lo desactiva por completo independientemente de la latencia.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, required, default: 20) — El tiempo máximo en segundos que se espera a que finalice la llamada a la herramienta. Debe estar entre 5 y 300 segundos, ambos incluidos.
  - `tool_call_sound_behavior` (enum, required, default: auto) — Determina cuándo debe reproducirse el sonido de llamada de la herramienta. 'auto' solo se reproduce cuando hay voz antes de usar la herramienta; 'always' se reproduce en cada llamada de herramienta.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, required, default: auto) — Controla cómo se procesan los errores de las herramientas antes de compartirlos con el agente. 'auto' determina el tratamiento según el tipo de herramienta (resumido para integraciones nativas y oculto para las demás), 'summarized' envía un resumen generado por un LLM, 'passthrough' envía el error sin procesar y 'hide' no comparte el error con el agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `tool_version` (string, required, default: 1.0.0) — La versión de la herramienta de integración de API
  - `disable_interruptions` (boolean, required, default: false, deprecated) — OBSOLETO: usa `interruption_mode` en su lugar. Si es true, el usuario no podrá interrumpir al agente mientras se ejecute esta herramienta.
  - `force_pre_tool_speech` (boolean, required, default: false, deprecated) — OBSOLETO: usa `pre_tool_speech` en su lugar. Si es true, el agente hablará antes de llamar a la herramienta.
  - `api_schema_overrides` (ApiIntegrationWebhookOverrides, optional) — User overrides applied on top of the base api_schema
  - `tool_call_sound` (enum, optional) — Tipo de sonido de llamada a herramienta predefinido que se reproduce durante la ejecución. Si no se especifica, no se reproducirá ningún sonido de llamada a herramienta.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
- `type`: `client`
  - `description` (string, required) — Descripción de cuándo se debe usar la herramienta y qué hace.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Configuración de variables dinámicas
  - `execution_mode` (enum, optional, default: immediate) — Determina cuándo y cómo se ejecuta la herramienta: 'immediate' ejecuta la herramienta de inmediato cuando la solicita el LLM, 'post_tool_speech' espera a que el agente termine de hablar antes de ejecutarla y 'async' ejecuta la herramienta en segundo plano sin bloquear; es la mejor opción para operaciones de larga duración.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `expects_response` (boolean, optional, default: false) — Si es true, llamar a esta herramienta debe bloquear la conversación hasta que el cliente responda; la respuesta se pasará al LLM. Si es false, continuaremos la conversación sin esperar a que responda el cliente. Esto resulta útil para mostrar contenido a un usuario sin bloquear la conversación.
  - `interruption_mode` (enum, optional, default: allow) — Controla si el usuario puede interrumpir al agente durante esta llamada a la herramienta. 'allow' (predeterminado) permite al usuario interrumpir en cualquier momento, 'disable_during_tool' suprime las interrupciones solo mientras se ejecuta la herramienta y 'disable_during_tool_and_turn' las suprime mientras se ejecuta la herramienta y durante la respuesta posterior del agente.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `parameters` (ObjectJsonSchemaPropertyOutput, optional) — Esquema de los parámetros que se pasarán al cliente
  - `pre_tool_speech` (enum, optional, default: auto) — Controla si el agente habla antes de llamar a esta herramienta. 'auto' (predeterminado) decide según la latencia reciente de la herramienta, 'force' siempre hace que el agente hable y 'off' lo desactiva por completo independientemente de la latencia.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — El tiempo máximo, en segundos, que se espera a que se complete la llamada a la herramienta. Debe estar entre 1 y 120 segundos (ambos incluidos) o ser -1 para esperar indefinidamente la respuesta del cliente (requiere expects_response).
  - `tool_call_sound` (enum, optional) — Tipo de sonido de llamada a herramienta predefinido que se reproduce durante la ejecución. Si no se especifica, no se reproducirá ningún sonido de llamada a herramienta.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina cuándo debe reproducirse el sonido de llamada de la herramienta. 'auto' solo se reproduce cuando hay voz antes de usar la herramienta; 'always' se reproduce en cada llamada de herramienta.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controla cómo se procesan los errores de las herramientas antes de compartirlos con el agente. 'auto' determina el tratamiento según el tipo de herramienta (resumido para integraciones nativas y oculto para las demás), 'summarized' envía un resumen generado por un LLM, 'passthrough' envía el error sin procesar y 'hide' no comparte el error con el agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `interruption_mode` en su lugar. Si es true, el usuario no podrá interrumpir al agente mientras se ejecute esta herramienta.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `pre_tool_speech` en su lugar. Si es true, el agente hablará antes de llamar a la herramienta.
- `type`: `mcp`
  - `value` (any, required)
- `type`: `smb`
  - `value` (any, required)
- `type`: `system`
  - `name` (string, required)
  - `params` (SystemToolConfigOutputParams, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas
  - `description` (string, optional, default: ) — Descripción de cuándo se debe usar la herramienta y qué hace. Déjalo vacío para usar la descripción predeterminada, optimizada para el tipo de herramienta específico.
  - `interruption_mode` (enum, optional, default: allow) — Controla si el usuario puede interrumpir al agente durante esta llamada a la herramienta. 'allow' (predeterminado) permite al usuario interrumpir en cualquier momento, 'disable_during_tool' suprime las interrupciones solo mientras se ejecuta la herramienta y 'disable_during_tool_and_turn' las suprime mientras se ejecuta la herramienta y durante la respuesta posterior del agente.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controla si el agente habla antes de llamar a esta herramienta. 'auto' (predeterminado) decide según la latencia reciente de la herramienta, 'force' siempre hace que el agente hable y 'off' lo desactiva por completo independientemente de la latencia.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — El tiempo máximo en segundos que se espera a que finalice la llamada a la herramienta.
  - `tool_call_sound` (enum, optional) — Tipo de sonido de llamada a herramienta predefinido que se reproduce durante la ejecución. Si no se especifica, no se reproducirá ningún sonido de llamada a herramienta.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina cuándo debe reproducirse el sonido de llamada de la herramienta. 'auto' solo se reproduce cuando hay voz antes de usar la herramienta; 'always' se reproduce en cada llamada de herramienta.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controla cómo se procesan los errores de las herramientas antes de compartirlos con el agente. 'auto' determina el tratamiento según el tipo de herramienta (resumido para integraciones nativas y oculto para las demás), 'summarized' envía un resumen generado por un LLM, 'passthrough' envía el error sin procesar y 'hide' no comparte el error con el agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `interruption_mode` en su lugar. Si es true, el usuario no podrá interrumpir al agente mientras se ejecute esta herramienta.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `pre_tool_speech` en su lugar. Si es true, el agente hablará antes de llamar a la herramienta.
- `type`: `webhook`
  - `api_schema` (WebhookToolApiSchemaConfigOutput, required) — El esquema del webhook saliente, incluidos los parámetros y la especificación de la URL
  - `description` (string, required) — Descripción de cuándo se debe usar la herramienta y qué hace.
  - `name` (string, required)
  - `assignments` (list of DynamicVariableAssignment, optional) — Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas
  - `dynamic_variables` (DynamicVariablesConfig, optional) — Configuración de variables dinámicas
  - `execution_mode` (enum, optional, default: immediate) — Determina cuándo y cómo se ejecuta la herramienta: 'immediate' ejecuta la herramienta de inmediato cuando la solicita el LLM, 'post_tool_speech' espera a que el agente termine de hablar antes de ejecutarla y 'async' ejecuta la herramienta en segundo plano sin bloquear; es la mejor opción para operaciones de larga duración.
    - Allowed values: `immediate`, `post_tool_speech`, `async`
  - `follow_redirects` (boolean, optional, default: false) — Si se sigue una redirección desde la ruta de API y se devuelve la respuesta final. Se sigue una única redirección, como una solicitud GET sin el cuerpo de la solicitud; no se envía al destino de la redirección nada configurado en esta herramienta (encabezados, autenticación, certificado de cliente). Tanto la ruta de API como el destino de la redirección deben usar HTTPS. No compatible con herramientas de integración de API.
  - `follow_redirects_allowed_domains` (list of string, optional) — Dominios a los que puede apuntar una redirección; por ejemplo, 'test.example.com'. Es obligatorio al seguir redirecciones y se rechazará cualquier destino que no esté en la lista.
  - `interruption_mode` (enum, optional, default: allow) — Controla si el usuario puede interrumpir al agente durante esta llamada a la herramienta. 'allow' (predeterminado) permite al usuario interrumpir en cualquier momento, 'disable_during_tool' suprime las interrupciones solo mientras se ejecuta la herramienta y 'disable_during_tool_and_turn' las suprime mientras se ejecuta la herramienta y durante la respuesta posterior del agente.
    - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
  - `pre_tool_speech` (enum, optional, default: auto) — Controla si el agente habla antes de llamar a esta herramienta. 'auto' (predeterminado) decide según la latencia reciente de la herramienta, 'force' siempre hace que el agente hable y 'off' lo desactiva por completo independientemente de la latencia.
    - Allowed values: `auto`, `force`, `off`
  - `response_timeout_secs` (integer, optional, default: 20) — El tiempo máximo en segundos que se espera a que finalice la llamada a la herramienta. Debe estar entre 5 y 300 segundos, ambos incluidos.
  - `tool_call_sound` (enum, optional) — Tipo de sonido de llamada a herramienta predefinido que se reproduce durante la ejecución. Si no se especifica, no se reproducirá ningún sonido de llamada a herramienta.
    - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
  - `tool_call_sound_behavior` (enum, optional, default: auto) — Determina cuándo debe reproducirse el sonido de llamada de la herramienta. 'auto' solo se reproduce cuando hay voz antes de usar la herramienta; 'always' se reproduce en cada llamada de herramienta.
    - Allowed values: `auto`, `always`
  - `tool_error_handling_mode` (enum, optional, default: auto) — Controla cómo se procesan los errores de las herramientas antes de compartirlos con el agente. 'auto' determina el tratamiento según el tipo de herramienta (resumido para integraciones nativas y oculto para las demás), 'summarized' envía un resumen generado por un LLM, 'passthrough' envía el error sin procesar y 'hide' no comparte el error con el agente.
    - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
  - `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `interruption_mode` en su lugar. Si es true, el usuario no podrá interrumpir al agente mientras se ejecute esta herramienta.
  - `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `pre_tool_speech` en su lugar. Si es true, el agente hablará antes de llamar a la herramienta.

### ConversationHistoryMultivoiceMessagePartModel

Representa una parte de voz individual de un mensaje con varias voces.

- `text` (string, required)
- `voice_label` (string, optional)
- `time_in_call_secs` (integer, optional)

### ConversationHistoryTranscriptToolCallCommonModelInputToolDetails

- `type`: `api_integration_webhook`
  - `webhook_details` (ConversationHistoryTranscriptToolCallWebhookDetails, required)
  - `credential_id` (string, optional, default: )
  - `integration_connection_id` (string, optional, default: )
  - `integration_id` (string, optional, default: )
- `type`: `client`
  - `parameters` (string, required)
- `type`: `mcp`
  - `approval_policy` (string, required)
  - `integration_type` (string, required)
  - `mcp_server_id` (string, required)
  - `mcp_server_name` (string, required)
  - `mcp_tool_description` (string, optional, default: )
  - `mcp_tool_name` (string, optional, default: )
  - `parameters` (map from string to string, optional)
  - `requires_approval` (boolean, optional, default: false)
- `type`: `webhook`
  - `method` (string, required)
  - `url` (string, required)
  - `body` (string, optional)
  - `headers` (map from string to string, optional)
  - `path_params` (map from string to string, optional)
  - `query_params` (map from string to string, optional)

### ConversationHistoryTranscriptOtherToolsResultCommonModel

- `request_id` (string, required)
- `tool_name` (string, required)
- `result_value` (string, required)
- `is_error` (boolean, required)
- `tool_has_been_called` (boolean, required)
- `is_blocked` (boolean, optional, default: false)
- `tool_latency_secs` (double, optional, default: 0)
- `error_type` (string, optional, default: )
- `raw_error_message` (string, optional, default: )
- `dynamic_variable_updates` (list of DynamicVariableUpdateCommonModel, optional)
- `type` (enum, optional)
  - Allowed values: `client`, `webhook`, `mcp`, `code`

### ConversationHistoryTranscriptSystemToolResultCommonModelInput

- `request_id` (string, required)
- `tool_name` (string, required)
- `result_value` (string, required)
- `is_error` (boolean, required)
- `tool_has_been_called` (boolean, required)
- `type` ("system", required)
- `is_blocked` (boolean, optional, default: false)
- `tool_latency_secs` (double, optional, default: 0)
- `error_type` (string, optional, default: )
- `raw_error_message` (string, optional, default: )
- `dynamic_variable_updates` (list of DynamicVariableUpdateCommonModel, optional)
- `result` (ConversationHistoryTranscriptSystemToolResultCommonModelInputResult, optional)

### ConversationHistoryTranscriptApiIntegrationWebhookToolsResultCommonModelInput

- `request_id` (string, required)
- `tool_name` (string, required)
- `result_value` (string, required)
- `is_error` (boolean, required)
- `tool_has_been_called` (boolean, required)
- `type` ("api_integration_webhook", required)
- `is_blocked` (boolean, optional, default: false)
- `tool_latency_secs` (double, optional, default: 0)
- `error_type` (string, optional, default: )
- `raw_error_message` (string, optional, default: )
- `dynamic_variable_updates` (list of DynamicVariableUpdateCommonModel, optional)
- `integration_id` (string, optional, default: )
- `credential_id` (string, optional, default: )
- `integration_connection_id` (string, optional, default: )

### ConversationHistoryTranscriptWorkflowToolsResultCommonModelInput

- `request_id` (string, required)
- `tool_name` (string, required)
- `result_value` (string, required)
- `is_error` (boolean, required)
- `tool_has_been_called` (boolean, required)
- `type` ("workflow", required)
- `is_blocked` (boolean, optional, default: false)
- `tool_latency_secs` (double, optional, default: 0)
- `error_type` (string, optional, default: )
- `raw_error_message` (string, optional, default: )
- `dynamic_variable_updates` (list of DynamicVariableUpdateCommonModel, optional)
- `result` (WorkflowToolResponseModelInput, optional) — Un modelo común para las respuestas de herramientas de workflow.

### MetricRecord

- `elapsed_time` (double, required)

### RagChunkMetadata

- `document_id` (string, required)
- `chunk_id` (string, required)
- `vector_distance` (double, required)

### LlmInputOutputTokensUsage

- `input` (LlmTokensCategoryUsage, optional)
- `input_cache_read` (LlmTokensCategoryUsage, optional)
- `input_cache_write` (LlmTokensCategoryUsage, optional)
- `output_total` (LlmTokensCategoryUsage, optional)

### SystemToolConfigOutput

Una herramienta del sistema es una herramienta que se utiliza para llamar a un método del sistema en el servidor

- `name` (string, required)
- `params` (SystemToolConfigOutputParams, required)
- `type` ("system", optional) — El tipo de herramienta
- `description` (string, optional, default: ) — Descripción de cuándo se debe usar la herramienta y qué hace. Déjalo vacío para usar la descripción predeterminada, optimizada para el tipo de herramienta específico.
- `response_timeout_secs` (integer, optional, default: 20) — El tiempo máximo en segundos que se espera a que finalice la llamada a la herramienta.
- `interruption_mode` (enum, optional, default: allow) — Controla si el usuario puede interrumpir al agente durante esta llamada a la herramienta. 'allow' (predeterminado) permite al usuario interrumpir en cualquier momento, 'disable_during_tool' suprime las interrupciones solo mientras se ejecuta la herramienta y 'disable_during_tool_and_turn' las suprime mientras se ejecuta la herramienta y durante la respuesta posterior del agente.
  - Allowed values: `allow`, `disable_during_tool`, `disable_during_tool_and_turn`
- `pre_tool_speech` (enum, optional, default: auto) — Controla si el agente habla antes de llamar a esta herramienta. 'auto' (predeterminado) decide según la latencia reciente de la herramienta, 'force' siempre hace que el agente hable y 'off' lo desactiva por completo independientemente de la latencia.
  - Allowed values: `auto`, `force`, `off`
- `assignments` (list of DynamicVariableAssignment, optional) — Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas
- `tool_call_sound` (enum, optional) — Tipo de sonido de llamada a herramienta predefinido que se reproduce durante la ejecución. Si no se especifica, no se reproducirá ningún sonido de llamada a herramienta.
  - Allowed values: `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
- `tool_call_sound_behavior` (enum, optional, default: auto) — Determina cuándo debe reproducirse el sonido de llamada de la herramienta. 'auto' solo se reproduce cuando hay voz antes de usar la herramienta; 'always' se reproduce en cada llamada de herramienta.
  - Allowed values: `auto`, `always`
- `tool_error_handling_mode` (enum, optional, default: auto) — Controla cómo se procesan los errores de las herramientas antes de compartirlos con el agente. 'auto' determina el tratamiento según el tipo de herramienta (resumido para integraciones nativas y oculto para las demás), 'summarized' envía un resumen generado por un LLM, 'passthrough' envía el error sin procesar y 'hide' no comparte el error con el agente.
  - Allowed values: `auto`, `summarized`, `passthrough`, `hide`
- `disable_interruptions` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `interruption_mode` en su lugar. Si es true, el usuario no podrá interrumpir al agente mientras se ejecute esta herramienta.
- `force_pre_tool_speech` (boolean, optional, default: false, deprecated) — OBSOLETO: usa `pre_tool_speech` en su lugar. Si es true, el agente hablará antes de llamar a la herramienta.

### CustomLlmApiKey

La clave de API para la autenticación. Puede ser una referencia a un secreto del espacio de trabajo \{'secret\_id': '...'} o una referencia a una variable de entorno \{'env\_var\_label': '...'}.

### CustomLlmAuthConnection

Conexión de autenticación opcional del espacio de trabajo. Solo se admiten conexiones de autenticación que generen un token Authorization Bearer; no se admiten conexiones de autenticación Basic, mTLS, con encabezado personalizado ni con secreto en la URL.

### CustomLlmRequestHeadersValue

### KnowledgeBaseToolInfo

- `enabled_strategies` (list of enum, optional) — Estrategias de búsqueda expuestas al modelo. No puede estar vacío.
  - Allowed values: `cat`, `keyword`, `semantic`, `ls`

### DynamicVariableAssignment

Configuración para extraer valores de las respuestas de herramientas y asignarlos a variables dinámicas.

- `dynamic_variable` (string, required) — El nombre de la variable dinámica a la que se asignará el valor extraído
- `value_path` (string, required) — Ruta de notación por puntos para extraer el valor de la fuente (por ejemplo, 'user.name' o 'data.0.id')
- `source` ("response", optional) — La fuente de la que extraer el valor. Actualmente solo se admite 'response'.
- `sanitize` (boolean, optional, default: false) — Si es true, el valor de esta asignación se eliminará de la respuesta de la herramienta antes de enviarla al LLM y a la transcripción, pero se seguirá procesando para la asignación de variables.
- `preserve_native_type` (boolean, optional, default: false) — Si es true, los valores no escalares (listas, objetos) extraídos de la respuesta de la herramienta se almacenan con su tipo nativo en lugar de convertirse en cadenas JSON. Activa esta opción para usar directamente los arrays extraídos como variables dinámicas de lista.

### DynamicVariablesConfig

- `dynamic_variable_placeholders` (map from string to any, optional) — Un diccionario de marcadores de variables dinámicas y sus valores.

### ApiIntegrationWebhookOverrides

- `schema_overrides` (map from string to ApiIntegrationWebhookOverridesSchemaOverridesValue, optional)
- `response_filter_mode` (enum, optional, default: all) — Controla cómo se filtran las respuestas de las herramientas antes de que sean visibles para el agente.
  - Allowed values: `all`, `allow`, `hide_all`
- `response_filters` (list of string, optional)
- `request_headers` (map from string to ApiIntegrationWebhookOverridesRequestHeadersValue, optional)

### ObjectJsonSchemaPropertyOutput

- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Cuando se configura, todo el parámetro se completa a partir de esta variable dinámica en tiempo de ejecución. Es mutuamente excluyente con description (valor proporcionado por el LLM), constant_value e is_omitted.
- `constant_value` (map from string to any, optional) — Cuando se configura, todo el objeto usa este valor JSON constante en tiempo de ejecución. Es mutuamente excluyente con description (objeto proporcionado por el LLM), dynamic_variable e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Si es true, este parámetro se omitirá por completo de la solicitud. Solo es válido para parámetros opcionales. Es mutuamente excluyente con description, dynamic_variable y constant_value.
- `type` ("object", optional)
- `required` (list of string, optional)
- `properties` (map from string to ObjectJsonSchemaPropertyOutputPropertiesValue, optional)
- `required_constraints` (RequiredConstraints, optional) — Contenedor para restricciones de composición anyOf/allOf limitadas a campos obligatorios.

### SystemToolConfigOutputParams

- `system_tool_type`: `end_call`
- `system_tool_type`: `end_procedure`
  - `procedures` (map from string to EndProcedureToolConfigProceduresValue, optional)
- `system_tool_type`: `knowledge_base`
  - `enabled_strategies` (list of enum, optional)
    - Allowed values: `cat`, `keyword`, `semantic`, `ls`
- `system_tool_type`: `knowledge_base_rag`
- `system_tool_type`: `language_detection`
  - `only_at_conversation_start` (boolean, optional, default: false) — Si no se produce un cambio de idioma en los 2 primeros turnos del usuario, los intentos posteriores fallarán y la conversación permanecerá en el idioma actual. Si el idioma cambia durante esos turnos, los cambios posteriores seguirán estando disponibles. Actívalo para reducir la posibilidad de cambios erróneos.
- `system_tool_type`: `play_keypad_touch_tone`
  - `suppress_turn_after_dtmf` (boolean, optional, default: false) — Si es true, el agente no generará más voz después de reproducir tonos DTMF. Esto evita que la voz del agente interfiera con los sistemas IVR.
  - `use_out_of_band_dtmf` (boolean, optional, default: true) — Envía tonos DTMF como eventos RTP fuera de banda (RFC 4733) en lugar de audio dentro de banda. Solo es efectivo para números importados de un troncal SIP.
- `system_tool_type`: `skip_turn`
  - `wait_timeout_secs` (double, optional, default: -1) — Segundos de espera tras skip_turn antes de que el agente genere una comprobación contextual. El temporizador «Finalizar conversación tras un periodo de silencio» se pausa durante la espera. -1 desactiva la espera: después de skip_turn, el agente permanece en silencio hasta que hable quien llama y el temporizador sigue en marcha. Solo se aplica a conversaciones de voz.
- `system_tool_type`: `start_procedure`
  - `procedures` (map from string to StartProcedureToolConfigProceduresValue, optional)
- `system_tool_type`: `transfer_to_agent`
  - `transfers` (list of AgentTransferOutput, required)
- `system_tool_type`: `transfer_to_number`
  - `transfers` (list of PhoneNumberTransfer, required)
  - `enable_client_message` (boolean, optional, default: true) — Si se reproduce un mensaje al cliente mientras espera la transferencia. El valor predeterminado es true por compatibilidad con versiones anteriores.
- `system_tool_type`: `voicemail_detection`
  - `voicemail_message` (string, optional) — Mensaje opcional que se dejará en el buzón de voz cuando se detecte. Si no se proporciona, la llamada finalizará inmediatamente al detectar el buzón de voz. Admite variables dinámicas (por ejemplo, \{\{system\_\_time}}, \{\{system\_\_call\_duration\_secs}}, \{\{custom\_variable}}).

### WebhookToolApiSchemaConfigOutput

- `url` (string, required) — La URL a la que se enviará el webhook. Puede incluir parámetros de ruta, p. ej., [https://example.com/agents/\{agent\_id}](https://example.com/agents/\{agent_id})
- `request_headers` (map from string to WebhookToolApiSchemaConfigOutputRequestHeadersValue, optional) — Cabeceras que deben incluirse en la solicitud.
- `method` (enum, optional, default: GET) — El método HTTP que se usará para el webhook
  - Allowed values: `GET`, `POST`, `PUT`, `PATCH`, `DELETE`
- `path_params_schema` (map from string to LiteralJsonSchemaProperty, optional) — Esquema de los parámetros de ruta, si los hay. Las claves deben coincidir con los marcadores de posición de la URL.
- `query_params_schema` (QueryParamsJsonSchemaOutput, optional) — Esquema de los parámetros de consulta, si los hay. Se añadirán al final de la URL como parámetros de consulta. Nota: las propiedades de un parámetro de consulta deben ser todas de tipos literales.
- `request_body_schema` (ObjectJsonSchemaPropertyOutput, optional) — Esquema de los parámetros del cuerpo, si los hay. Se utiliza para solicitudes POST/PATCH/PUT. El esquema debe ser un objeto que se enviará como cuerpo JSON.
- `response_body_schema` (ObjectJsonSchemaPropertyOutput, optional) — Esquema que describe la estructura esperada del cuerpo de la respuesta. Solo para documentación; no se muestra al LLM.
- `response_filter` (ResponseFilter, optional) — Filtro opcional de lista de permitidos que se aplica a la respuesta antes de que la vea el LLM, para que las respuestas extensas no saturen el contexto. De forma predeterminada, se usa la respuesta completa.
- `content_type` (enum, optional, default: application/json) — Tipo de contenido del cuerpo de la solicitud. Solo se aplica a solicitudes POST/PUT/PATCH.
  - Allowed values: `application/json`, `application/x-www-form-urlencoded`
- `auth_resolved_params` (list of string, optional) — Marcadores de posición de URL resueltos desde la conexión de autenticación (por ejemplo, secretos inyectados mediante UrlSecretAuthConnection) en lugar de desde path_params_schema.
- `auth_connection` (WebhookToolApiSchemaConfigOutputAuthConnection, optional) — Conexión de autenticación opcional que se usará para autenticarse con este webhook

### ConversationHistoryTranscriptToolCallWebhookDetails

- `method` (string, required)
- `url` (string, required)
- `type` ("webhook", optional)
- `headers` (map from string to string, optional)
- `path_params` (map from string to string, optional)
- `query_params` (map from string to string, optional)
- `body` (string, optional)

### DynamicVariableUpdateCommonModel

Registra una actualización de variable dinámica ocurrida durante la ejecución de una herramienta.

- `variable_name` (string, required)
- `new_value` (string, required)
- `updated_at` (double, required)
- `tool_name` (string, required)
- `tool_request_id` (string, required)
- `old_value` (string, optional)

### ConversationHistoryTranscriptSystemToolResultCommonModelInputResult

- `result_type`: `dummy`
- `result_type`: `end_call_success`
  - `message` (string, optional)
  - `reason` (string, optional)
  - `status` ("success", optional)
- `result_type`: `end_procedure_error`
  - `message` (string, required)
  - `status` (enum, required)
    - Allowed values: `not_found`, `invalid_id`
  - `procedure_id` (string, optional)
- `result_type`: `end_procedure_success`
  - `procedure_id` (string, required)
  - `procedure_name` (string, required)
  - `message` (string, optional, default: )
  - `status` ("success", optional)
- `result_type`: `knowledge_base_rag_success`
  - `chunk_count` (integer, optional, default: 0) — Número de fragmentos relevantes recuperados
  - `chunks` (list of KnowledgeBaseRagChunkModel, optional) — Fragmentos recuperados; se rellenan solo en el modo rag-result-in-tool-result
  - `message` (string, optional, default: Referenced knowledge base.) — Estado legible para humanos para el LLM sobre los resultados de búsqueda
  - `status` (enum, optional, default: success)
    - Allowed values: `success`, `no_documents`, `no_results`
- `result_type`: `knowledge_base_success`
  - `chunk_count` (integer, optional, default: 0)
  - `message` (string, optional, default: Referenced knowledge base.)
  - `status` (enum, optional, default: success)
    - Allowed values: `success`, `no_matching_documents`, `no_results`
- `result_type`: `language_detection_success`
  - `language` (string, optional)
  - `reason` (string, optional)
  - `status` ("success", optional)
- `result_type`: `play_dtmf_error`
  - `error` (string, required)
  - `details` (string, optional)
  - `status` ("error", optional)
- `result_type`: `play_dtmf_success`
  - `dtmf_tones` (string, required)
  - `reason` (string, optional)
  - `status` ("success", optional)
- `result_type`: `skip_turn_success`
  - `reason` (string, optional)
  - `status` ("success", optional)
- `result_type`: `start_procedure_error`
  - `message` (string, required)
  - `status` (enum, required)
    - Allowed values: `not_found`, `invalid_name`, `already_active`
  - `procedure_id` (string, optional)
- `result_type`: `start_procedure_success`
  - `procedure_id` (string, required)
  - `procedure_name` (string, required)
  - `message` (string, optional, default: Procedure is now started. Follow its instructions from the <active-procedures> section of your system prompt.)
  - `procedure_entry_workflow_node` (string, optional)
  - `procedure_return_workflow_node` (string, optional)
  - `status` ("success", optional)
- `result_type`: `testing_tool_result`
  - `reason` (string, optional, default: Skipping tool call in test mode)
  - `status` ("success", optional)
- `result_type`: `transfer_to_agent_error`
  - `error` (string, required)
  - `from_agent` (string, required)
  - `status` ("error", optional)
- `result_type`: `transfer_to_agent_success`
  - `condition` (string, required)
  - `from_agent` (string, required)
  - `to_agent` (string, required)
  - `branch_info` (TransferToAgentToolResultSuccessModelInputBranchInfo, optional)
  - `delay_ms` (integer, optional, default: 0)
  - `enable_transferred_agent_first_message` (boolean, optional, default: false)
  - `preserve_client_tts_overrides` (boolean, optional, default: false)
  - `preserve_voice_settings` (boolean, optional, default: false)
  - `status` ("success", optional)
  - `to_node` (string, optional)
  - `transfer_message` (string, optional)
- `result_type`: `transfer_to_number_amazon_connect_success`
  - `client_message` (string, optional) — Mensaje que se comunica a quien llama antes de devolver la sesión a Amazon Connect.
  - `note` (string, optional) — Se establece cuando el agente repite una opción no válida y se utiliza la única configurada.
  - `reason` (string, optional) — Motivo por el que el agente escaló el caso, enviado a Amazon Connect con el resultado Escalate.
  - `status` ("success", optional)
- `result_type`: `transfer_to_number_error`
  - `error` (string, required)
  - `details` (string, optional)
  - `status` ("error", optional)
- `result_type`: `transfer_to_number_exotel_success`
  - `transfer_number` (string, required)
  - `agent_message` (string, optional)
  - `note` (string, optional)
  - `reason` (string, optional)
  - `status` ("success", optional)
- `result_type`: `transfer_to_number_sip_success`
  - `transfer_number` (string, required)
  - `note` (string, optional)
  - `reason` (string, optional)
  - `status` ("success", optional)
- `result_type`: `transfer_to_number_twilio_success`
  - `agent_message` (string, required)
  - `conference_name` (string, required)
  - `transfer_number` (string, required)
  - `client_message` (string, optional)
  - `note` (string, optional)
  - `post_dial_digits` (string, optional)
  - `reason` (string, optional)
  - `status` ("success", optional)
- `result_type`: `voicemail_detection_success`
  - `reason` (string, optional)
  - `status` ("success", optional)
  - `voicemail_message` (string, optional)

### WorkflowToolResponseModelInput

Un modelo común para las respuestas de herramientas de workflow.

- `steps` (list of WorkflowToolResponseModelInputStepsItem, optional)

### LlmTokensCategoryUsage

- `tokens` (integer, optional, default: 0)
- `price` (double, optional, default: 0)

### ConvAiSecretLocator

Se usa para hacer referencia a un secreto del almacén de secretos del agente.

- `secret_id` (string, required)

### ConvAiEnvVarLocator

Se usa para hacer referencia a una variable de entorno mediante su etiqueta.

- `env_var_label` (string, required)

### AuthConnectionLocator

Se usa para hacer referencia a una conexión de autenticación del almacén de conexiones de autenticación del espacio de trabajo.

- `auth_connection_id` (string, required)

### EnvironmentAuthConnectionLocator

Hace referencia mediante una etiqueta a una variable de entorno de tipo 'auth_connection'. En tiempo de ejecución, se resuelve en la conexión de autenticación del entorno actual, y recurre al entorno predeterminado si es necesario.

- `env_var_label` (string, required)

### ConvAiDynamicVariable

Se usa para hacer referencia a una variable dinámica.

- `variable_name` (string, required)

### ApiIntegrationWebhookOverridesSchemaOverridesValue

- `source`: `constant`
  - `constant_value` (ConstantSchemaOverrideConstantValue, optional) — El valor constante que se usará
- `source`: `dynamic_variable`
  - `dynamic_variable` (string, required) — El nombre de la variable dinámica que se debe usar
- `source`: `llm`
  - `prompt` (string, optional) — Sustitución del prompt para el LLM. Si no se proporciona, se utiliza la descripción del esquema original.
- `source`: `omit`

### ApiIntegrationWebhookOverridesRequestHeadersValue

### ObjectJsonSchemaPropertyOutputPropertiesValue

### RequiredConstraints

Contenedor para restricciones de composición anyOf/allOf limitadas a campos obligatorios.

- `any_of` (list of RequiredConstraint, optional)
- `all_of` (list of RequiredConstraint, optional)

### EndProcedureToolConfigProceduresValue

### StartProcedureToolConfigProceduresValue

### AgentTransferOutput

- `condition` (string, required)
- `agent_id` (string, optional)
- `branch_id` (string, optional)
- `node_id` (string, optional)
- `delay_ms` (integer, optional, default: 0)
- `transfer_message` (string, optional)
- `enable_transferred_agent_first_message` (boolean, optional, default: false)
- `is_workflow_node_transfer` (boolean, optional, default: false)
- `preserve_client_tts_overrides` (boolean, optional, default: false) — Define si las sustituciones del cliente de TTS deben transferirse al agente transferido.
- `preserve_voice_settings` (boolean, optional, default: false) — Define si la voz base, el modelo de TTS y la configuración de voz deben transferirse al agente transferido.

### PhoneNumberTransfer

- `transfer_destination` (PhoneNumberTransferTransferDestination, required)
- `condition` (string, required)
- `custom_sip_headers` (list of PhoneNumberTransferCustomSipHeadersItem, optional) — Cabeceras SIP personalizadas que se incluirán al transferir la llamada. Cada cabecera puede ser un valor estático o una referencia a variable dinámica.
- `transfer_type` (enum, optional, default: conference)
  - Allowed values: `blind`, `conference`, `sip_refer`
- `sip_refer_play_dialtone` (boolean, optional, default: true) — Cuando es True, se reproduce un tono de llamada en el tramo original de la llamada mientras se completa una transferencia SIP REFER. El tono se transmite mediante RTP al par SIP que ejecuta el REFER, así que desactiva esta opción si el sistema receptor (por ejemplo, un SBC o un centro de contacto) no debe oírlo. Cuando está desactivada, la persona que llama oye silencio hasta que se completa la transferencia. Solo para transferencias SIP REFER.
- `uui` (UuiTransferConfig, optional) — Información de usuario a usuario (RFC 7433) para adjuntar a transferencias SIP REFER. Transporta el contexto de la llamada, como identificadores de CRM o el motivo de la escalación, a través del límite de la transferencia.
- `post_dial_digits` (PhoneNumberTransferPostDialDigits, optional) — Dígitos DTMF que se enviarán tras conectar la llamada (por ejemplo, 'ww1234' para una extensión). Puede ser un valor estático o una referencia de variable dinámica. Usa 'w' para una pausa de 0,5 s. Solo es compatible con transferencias de Twilio.
- `phone_number` (string, optional, deprecated)

### WebhookToolApiSchemaConfigOutputRequestHeadersValue

### LiteralJsonSchemaProperty

Propiedad de esquema para tipos JSON literales. IMPORTANTE: Solo puede establecerse UNO de los siguientes campos: description (el LLM proporciona el valor), dynamic_variable (valor de una variable), is_system_provided (el sistema proporciona el valor), constant_value (valor fijo) o is_omitted (se omite el parámetro). Son mutuamente excluyentes.

- `type` (LiteralJsonSchemaPropertyType, required)
- `description` (string, optional, default: ) — La descripción de la propiedad. Cuando se establece, el LLM proporcionará el valor según esta descripción. Es mutuamente excluyente con dynamic_variable, is_system_provided, constant_value e is_omitted.
- `enum` (list of string, optional) — List of allowed string values for string type parameters
- `is_system_provided` (boolean, optional, default: false) — Si es true, el sistema completará el valor en tiempo de ejecución. Lo usan las herramientas de webhook de integración con API para plantillas. Es mutuamente excluyente con description, dynamic_variable, constant_value e is_omitted.
- `dynamic_variable` (string, optional, default: ) — El nombre de la variable dinámica que se usará para el valor de esta propiedad. Es mutuamente excluyente con description, is_system_provided, constant_value e is_omitted.
- `allowed_values` (AllowedValues, optional) — Protección de rechazo del lado del servidor para un valor proporcionado por un LLM: el entorno de ejecución rechaza cualquier valor fuera del conjunto permitido que nombra este objeto, y el conjunto no se muestra al LLM como un enum. Solo se admite cuando el origen del valor es `description`; se rechaza combinarlo con dynamic_variable, is_system_provided, constant_value o is_omitted.
- `constant_value` (LiteralJsonSchemaPropertyConstantValue, optional) — Un valor constante que se utilizará para esta propiedad. Es mutuamente excluyente con description, dynamic_variable, is_system_provided e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Si es true, este parámetro se omitirá por completo de la solicitud. Solo es válido para parámetros opcionales. Es mutuamente excluyente con description, dynamic_variable, is_system_provided y constant_value.
- `allowed_values_dynamic_variable` (string, optional, default: , deprecated) — OBSOLETO: usa `allowed_values` en su lugar. Cuando se establece, el LLM proporciona el valor, pero el entorno de ejecución rechaza cualquier valor que no esté presente en la lista de esta variable dinámica (debe ser una matriz JSON como ["ws_alpha", "ws_beta"]). Úsalo para permitir que el LLM elija de un conjunto verificado por el servidor (p. ej., los ID a los que puede acceder el usuario actual). Requiere description; es mutuamente excluyente con dynamic_variable, is_system_provided, constant_value e is_omitted.

### QueryParamsJsonSchemaOutput

- `properties` (map from string to LiteralJsonSchemaProperty, required)
- `required` (list of string, optional)

### ResponseFilter

Configuración para filtrar las respuestas de herramientas antes de que sean visibles para el agente.

- `mode` (enum, optional, default: all) — Controla cómo se filtran las respuestas de las herramientas. 'all' devuelve toda la respuesta, 'allow' devuelve solo las rutas especificadas y 'hide_all' oculta toda la respuesta.
  - Allowed values: `all`, `allow`, `hide_all`
- `filters` (list of string, optional) — Rutas de notación por puntos que se incluirán cuando el modo sea 'allow' (por ejemplo, ['ticket.id', 'ticket.status']).
- `content_type` ("application/json", optional) — Tipo de contenido para el filtrado de respuestas. Solo se filtran las respuestas 'application/json'.

### WebhookToolApiSchemaConfigOutputAuthConnection

Conexión de autenticación opcional que se usará para autenticarse con este webhook

### KnowledgeBaseRagChunkModel

- `chunk_id` (string, required)
- `document_id` (string, required)
- `content` (string, required)

### TransferToAgentToolResultSuccessModelInputBranchInfo

- `branch_reason`: `configured`
  - `branch_id` (string, required)
- `branch_reason`: `defaulting_to_main`
  - `branch_id` (string, required)
- `branch_reason`: `traffic_split`
  - `branch_id` (string, required)
  - `traffic_percentage` (double, required)

### WorkflowToolResponseModelInputStepsItem

- `type`: `edge`
  - `edge_id` (string, required)
  - `step_latency_secs` (double, required)
  - `target_node_id` (string, required)
- `type`: `max_iterations_exceeded`
  - `max_iterations` (integer, required)
  - `step_latency_secs` (double, required)
- `type`: `nested_tools`
  - `is_successful` (boolean, required)
  - `node_id` (string, required)
  - `requests` (list of ConversationHistoryTranscriptToolCallCommonModelInput, required)
  - `results` (list of WorkflowToolNestedToolsStepModelInputResultsItem, required)
  - `step_latency_secs` (double, required)

### ConstantSchemaOverrideConstantValue

El valor constante que se usará

### ArrayJsonSchemaPropertyOutput

- `description` (string, optional, default: )
- `dynamic_variable` (string, optional, default: ) — Cuando se configura, todo el parámetro se completa a partir de esta variable dinámica en tiempo de ejecución. Es mutuamente excluyente con description (valor proporcionado por el LLM), constant_value e is_omitted.
- `constant_value` (list of any, optional) — Cuando se configura, toda la matriz usa este valor constante en tiempo de ejecución. Es mutuamente excluyente con description (matriz proporcionada por el LLM), dynamic_variable e is_omitted.
- `is_omitted` (boolean, optional, default: false) — Si es true, este parámetro se omitirá por completo de la solicitud. Solo es válido para parámetros opcionales. Es mutuamente excluyente con description, dynamic_variable y constant_value.
- `type` ("array", optional)
- `items` (ArrayJsonSchemaPropertyOutputItems, optional) — Esquema de los elementos de la matriz.

### RequiredConstraint

Un conjunto de campos que deben estar todos presentes para cumplir esta restricción.

- `required` (list of string, required)

### ProcedureVersionRef

- `procedure_id` (string, required) — ID del procedimiento
- `version_id` (string, required) — ID de versión de la versión del procedimiento.

### ProcedureDraftRef

- `procedure_id` (string, required) — ID del procedimiento
- `version_id` (any, optional)

### PhoneNumberTransferTransferDestination

- `type`: `phone`
  - `phone_number` (string, required)
- `type`: `phone_dynamic_variable`
  - `phone_number` (string, required)
- `type`: `sip_uri`
  - `sip_uri` (string, required)
- `type`: `sip_uri_dynamic_variable`
  - `sip_uri` (string, required)

### PhoneNumberTransferCustomSipHeadersItem

- `type`: `dynamic`
  - `key` (string, required) — El nombre de la cabecera SIP (p. ej., «X-Customer-ID»)
  - `value` (string, required) — El nombre de la variable dinámica que se va a resolver
- `type`: `static`
  - `key` (string, required) — El nombre de la cabecera SIP (p. ej., «X-Customer-ID»)
  - `value` (string, required) — El valor de la cabecera

### UuiTransferConfig

Contenedor de información de usuario a usuario para transferencias SIP REFER (RFC 7433). Las cargas útiles salientes se codifican en hexadecimal (la única codificación que define RFC 7433). El campo discriminador de protocolo permite expresar mediante configuración los formatos específicos de cada plataforma (Talkdesk, Genesys, ...) en lugar de distribuir indicadores de transferencia. Se pueden añadir otros campos (codificación ASCII, nombre de cabecera, parámetros de propósito/contenido) aquí sin modificar el modelo de transferencia.

- `data` (string, required) — Carga útil UUI que se envía en transferencias SIP REFER. Admite variables dinámicas en línea y se codifica en hexadecimal en el momento de la transferencia.
- `protocol_discriminator` (string, optional) — Discriminador de protocolo opcional de un octeto (dos dígitos hexadecimales, por ejemplo, '00'). Es necesario para plataformas como Genesys Cloud, que de otro modo eliminan el primer octeto de la carga útil. Déjalo sin establecer para plataformas como Talkdesk que esperan una carga útil hexadecimal sin prefijo.
- `protocol_discriminator_mode` (enum, optional, default: prefix) — Cómo adjuntar protocol\_discriminator. 'prefix' antepone el octeto a la carga útil hexadecimal (User-to-User=XX\<hex>;encoding=hex). 'pd\_parameter' lo envía como un parámetro independiente (User-to-User=\<hex>;pd=XX;encoding=hex). Se ignora si protocol\_discriminator no está establecido.
  - Allowed values: `prefix`, `pd_parameter`

### PhoneNumberTransferPostDialDigits

- `type`: `dynamic`
  - `value` (string, required) — El nombre de la variable dinámica que se va a resolver
- `type`: `static`
  - `value` (string, required) — Dígitos DTMF que se enviarán tras conectar la llamada (por ejemplo, 'ww1234' para una extensión)

### LiteralJsonSchemaPropertyType

### AllowedValues

- `dynamic_variable` (string, required) — Nombre de una variable dinámica que debe resolverse en una matriz JSON de valores permitidos, por ejemplo, ["ws_alpha", "ws_beta"]. Las variables del sistema solo funcionan si se resuelven en una lista.

### LiteralJsonSchemaPropertyConstantValue

Un valor constante que se utilizará para esta propiedad. Es mutuamente excluyente con description, dynamic_variable, is_system_provided e is_omitted.

### WorkflowToolNestedToolsStepModelInputResultsItem

### ArrayJsonSchemaPropertyOutputItems

Esquema de los elementos de la matriz.

## Examples

**Request**

```json
{
  "simulation_specification": {
    "simulated_user_config": {
      "first_message": "Hello, how can I help you today?",
      "language": "en",
      "disable_first_message_interruptions": false
    }
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/simulate-conversation/stream"

payload = { "simulation_specification": { "simulated_user_config": {
            "first_message": "Hello, how can I help you today?",
            "language": "en",
            "disable_first_message_interruptions": False
        } } }
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/simulate-conversation/stream';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"simulation_specification":{"simulated_user_config":{"first_message":"Hello, how can I help you today?","language":"en","disable_first_message_interruptions":false}}}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/simulate-conversation/stream"

	payload := strings.NewReader("{\n  \"simulation_specification\": {\n    \"simulated_user_config\": {\n      \"first_message\": \"Hello, how can I help you today?\",\n      \"language\": \"en\",\n      \"disable_first_message_interruptions\": false\n    }\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/simulate-conversation/stream")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"simulation_specification\": {\n    \"simulated_user_config\": {\n      \"first_message\": \"Hello, how can I help you today?\",\n      \"language\": \"en\",\n      \"disable_first_message_interruptions\": false\n    }\n  }\n}"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/simulate-conversation/stream")
  .header("Content-Type", "application/json")
  .body("{\n  \"simulation_specification\": {\n    \"simulated_user_config\": {\n      \"first_message\": \"Hello, how can I help you today?\",\n      \"language\": \"en\",\n      \"disable_first_message_interruptions\": false\n    }\n  }\n}")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/simulate-conversation/stream', [
  'body' => '{
  "simulation_specification": {
    "simulated_user_config": {
      "first_message": "Hello, how can I help you today?",
      "language": "en",
      "disable_first_message_interruptions": false
    }
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/simulate-conversation/stream");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"simulation_specification\": {\n    \"simulated_user_config\": {\n      \"first_message\": \"Hello, how can I help you today?\",\n      \"language\": \"en\",\n      \"disable_first_message_interruptions\": false\n    }\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = ["simulation_specification": ["simulated_user_config": [
      "first_message": "Hello, how can I help you today?",
      "language": "en",
      "disable_first_message_interruptions": false
    ]]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/simulate-conversation/stream")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```