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

# Crear borrador de agente

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

Crea un nuevo borrador para un agente

Reference: https://elevenlabs.io/docs/eleven-agents/api-reference/agents/drafts/create

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

### Query parameters

- `branch_id` (string, required) — El ID de la rama del agente que se usará

### Body (application/json)

This endpoint expects an object.

- `conversation_config` (map from string to any, required) — Configuración de conversación para el borrador
- `platform_settings` (map from string to any, required) — Configuración de plataforma para el borrador
- `workflow` (AgentWorkflowRequestModel, required) — Workflow del borrador
- `name` (string, required) — Nombre del borrador
- `tags` (list of string, optional) — Etiquetas para ayudar a clasificar y filtrar el agente.

## Response

### 200

Respuesta correcta.

- `any`

## Errors

### 422 Drafts Create Request Unprocessable Entity Error

Error de validación

- `detail` (list of ValidationError, optional)

## Types

### AgentWorkflowRequestModel

- `edges` (map from string to WorkflowEdgeModelInput, optional)
- `nodes` (map from string to AgentWorkflowRequestModelNodesValue, optional)
- `prevent_subagent_loops` (boolean, optional, default: false) — Si se evitan los bucles en la ejecución del workflow.

### ValidationError

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

### WorkflowEdgeModelInput

- `source` (string, required) — ID del nodo de origen.
- `target` (string, required) — ID del nodo de destino.
- `forward_condition` (WorkflowEdgeModelInputForwardCondition, optional) — Condición que debe cumplirse para recorrer la arista en dirección directa (del origen al destino).
- `backward_condition` (WorkflowEdgeModelInputBackwardCondition, optional) — Condición que debe cumplirse para recorrer la arista en dirección inversa (del destino al origen).

### AgentWorkflowRequestModelNodesValue

- `type`: `end`
  - `edge_order` (list of string, optional) — Los ID de las conexiones salientes en el orden en que deben evaluarse.
  - `outcome` (enum, optional, default: success) — Indica si al llegar a este nodo End la conversación finaliza correctamente o con un fallo.
    - Allowed values: `success`, `failure`
  - `position` (PositionInput, optional) — Posición del nodo en el workflow.
- `type`: `override_agent`
  - `label` (string, required) — Etiqueta legible para humanos del nodo, utilizada en toda la interfaz.
  - `additional_knowledge_base` (list of KnowledgeBaseLocator, optional) — Documentos adicionales de la base de conocimientos a los que tiene acceso el subagente. Se usarán además de los documentos del agente principal.
  - `additional_prompt` (string, optional) — Objetivo específico de este subagente. Se añadirá al prompt del sistema y puede utilizarse para perfeccionar aún más el comportamiento del agente en este contexto concreto.
  - `additional_tool_ids` (list of string, optional) — ID de herramientas adicionales a las que tiene acceso el subagente. Se usarán además de las herramientas del agente principal.
  - `conversation_config` (ConversationalConfigApiModelWorkflowOverrideInput, optional) — Anulaciones de configuración aplicadas mientras el subagente lleva a cabo la conversación.
  - `edge_order` (list of string, optional) — Los ID de las conexiones salientes en el orden en que deben evaluarse.
  - `entry_behavior` (enum, optional, default: auto) — Determina si este nodo debe generar una respuesta de inmediato al acceder a él o esperar la entrada del usuario. Cuando se establece en "auto", el comportamiento se decidirá según el tipo de nodo anterior: "wait_for_user" después de los nodos "say" y "start", y "generate_immediately" en los demás casos.
    - Allowed values: `generate_immediately`, `wait_for_user`, `auto`
  - `position` (PositionInput, optional) — Posición del nodo en el workflow.
- `type`: `phone_number`
  - `transfer_destination` (WorkflowPhoneNumberNodeModelInputTransferDestination, required)
  - `custom_sip_headers` (list of WorkflowPhoneNumberNodeModelInputCustomSipHeadersItem, 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.
  - `edge_order` (list of string, optional) — Los ID de las conexiones salientes en el orden en que deben evaluarse.
  - `position` (PositionInput, optional) — Posición del nodo en el workflow.
  - `post_dial_digits` (WorkflowPhoneNumberNodeModelInputPostDialDigits, 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.
  - `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.
  - `transfer_type` (enum, optional, default: conference)
    - Allowed values: `blind`, `conference`, `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.
- `type`: `standalone_agent`
  - `agent_id` (string, optional) — El ID del agente al que se transferirá la conversación. None indica una transferencia dentro del agente actual.
  - `branch_id` (string, optional) — ID de rama opcional para el agente de destino. None sigue el despliegue de tráfico del agente de destino o usa su rama principal cuando se establece node_id.
  - `delay_ms` (integer, optional, default: 0) — Retraso artificial en milisegundos aplicado antes de transferir la conversación.
  - `edge_order` (list of string, optional) — Los ID de las conexiones salientes en el orden en que deben evaluarse.
  - `enable_transferred_agent_first_message` (boolean, optional, default: false) — Indica si se debe permitir que el agente transferido envíe su primer mensaje configurado después de la transferencia.
  - `node_id` (string, optional) — ID opcional del nodo de destino en el workflow del agente de destino. Cuando se establece, la transferencia comienza en este nodo en lugar de en el nodo de entrada predeterminado.
  - `position` (PositionInput, optional) — Posición del nodo en el workflow.
  - `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.
  - `transfer_message` (string, optional) — Mensaje opcional enviado al usuario antes de iniciar la transferencia.
- `type`: `start`
  - `edge_order` (list of string, optional) — Los ID de las conexiones salientes en el orden en que deben evaluarse.
  - `position` (PositionInput, optional) — Posición del nodo en el workflow.
- `type`: `tool`
  - `edge_order` (list of string, optional) — Los ID de las conexiones salientes en el orden en que deben evaluarse.
  - `position` (PositionInput, optional) — Posición del nodo en el workflow.
  - `tools` (list of WorkflowToolLocator, optional) — Lista de herramientas que ejecutar en paralelo. El nodo completo se considera correcto si todas las herramientas se ejecutan correctamente.
- `type`: `say`
  - `label` (string, required) — Etiqueta legible para humanos del nodo, utilizada en toda la interfaz.
  - `message` (WorkflowSayNodeModelInputMessage, required) — Mensaje que pronuncia este nodo. Usa `literal` para texto exacto o `prompt` para que el LLM genere el mensaje a partir de una descripción.
  - `additional_knowledge_base` (list of KnowledgeBaseLocator, optional) — Documentos de la base de conocimientos disponibles para el LLM mientras este nodo genera su mensaje, además de los documentos del agente.
  - `additional_prompt` (string, optional) — Se acepta para mantener la coherencia con los nodos de subagentes, pero no se utiliza. Describe el mensaje en `message.prompt` o sustituye el prompt del sistema por `conversation_config.agent.prompt.prompt`.
  - `additional_tool_ids` (list of string, optional) — Se acepta para mantener la coherencia con los nodos de subagentes, pero no se utiliza. Un nodo de mensaje no puede llamar a herramientas.
  - `conversation_config` (ConversationalConfigApiModelWorkflowOverrideInput, optional) — Anulaciones de configuración que se aplican mientras este nodo habla, como la voz o, en los mensajes de prompt, el LLM y el prompt del sistema.
  - `edge_order` (list of string, optional) — Los ID de las conexiones salientes en el orden en que deben evaluarse.
  - `position` (PositionInput, optional) — Posición del nodo en el workflow.
  - `wait_for_speech_completion` (boolean, optional, default: false) — Cuando es true, el workflow solo pasa al siguiente nodo después de que el mensaje se haya pronunciado por completo.
  - `wait_for_user_response` (boolean, optional, default: false) — Cuando es true, el nodo pronuncia su mensaje y después espera a que el usuario responda antes de evaluar las conexiones salientes, de modo que estas puedan ramificarse según la respuesta. Si el usuario permanece en silencio, el workflow avanza cuando se agota el tiempo de espera del turno.
- `type`: `update_state`
  - `label` (string, required) — Etiqueta legible para humanos del nodo, utilizada en toda la interfaz.
  - `updates` (list of WorkflowStateUpdateInput, required) — Actualizaciones de estado que se aplican cuando el workflow llega a este nodo. Un nodo admite un máximo de 50 actualizaciones.
  - `edge_order` (list of string, optional) — Los ID de las conexiones salientes en el orden en que deben evaluarse.
  - `position` (PositionInput, optional) — Posición del nodo en el workflow.

### ValidationErrorLocItem

### WorkflowEdgeModelInputForwardCondition

- `type`: `expression`
  - `expression` (AstNodeInput, required) — Expresión que se debe evaluar.
  - `label` (string, optional) — Etiqueta opcional legible para humanos de la condición, utilizada en toda la interfaz.
- `type`: `llm`
  - `condition` (string, required) — Condición que evaluar
  - `label` (string, optional) — Etiqueta opcional legible para humanos de la condición, utilizada en toda la interfaz.
- `type`: `result`
  - `successful` (boolean, required) — Indica si todas las herramientas del nodo de herramientas ejecutado anteriormente se ejecutaron correctamente.
  - `label` (string, optional) — Etiqueta opcional legible para humanos de la condición, utilizada en toda la interfaz.
- `type`: `unconditional`
  - `label` (string, optional) — Etiqueta opcional legible para humanos de la condición, utilizada en toda la interfaz.

### WorkflowEdgeModelInputBackwardCondition

- `type`: `expression`
  - `expression` (AstNodeInput, required) — Expresión que se debe evaluar.
  - `label` (string, optional) — Etiqueta opcional legible para humanos de la condición, utilizada en toda la interfaz.
- `type`: `llm`
  - `condition` (string, required) — Condición que evaluar
  - `label` (string, optional) — Etiqueta opcional legible para humanos de la condición, utilizada en toda la interfaz.
- `type`: `result`
  - `successful` (boolean, required) — Indica si todas las herramientas del nodo de herramientas ejecutado anteriormente se ejecutaron correctamente.
  - `label` (string, optional) — Etiqueta opcional legible para humanos de la condición, utilizada en toda la interfaz.
- `type`: `unconditional`
  - `label` (string, optional) — Etiqueta opcional legible para humanos de la condición, utilizada en toda la interfaz.

### PositionInput

- `x` (double, optional, default: 0)
- `y` (double, optional, default: 0)

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

### ConversationalConfigApiModelWorkflowOverrideInput

- `asr` (AsrConversationalConfigWorkflowOverride, optional) — Configuración de la transcripción conversacional
- `turn` (TurnConfigWorkflowOverride, optional) — Configuración de la detección de turnos
- `tts` (TtsConversationalConfigWorkflowOverrideInput, optional) — Configuración de Texto a Voz conversacional
- `conversation` (ConversationConfigWorkflowOverrideInput, optional) — Configuración de eventos conversacionales
- `language_presets` (map from string to LanguagePresetInput, optional) — Preajustes de idioma para conversaciones
- `vad` (VadConfigWorkflowOverride, optional) — Configuración de la detección de actividad de voz
- `agent` (AgentConfigApiModelWorkflowOverrideInput, optional) — Configuración específica del agente

### WorkflowPhoneNumberNodeModelInputTransferDestination

- `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)

### WorkflowPhoneNumberNodeModelInputCustomSipHeadersItem

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

### WorkflowPhoneNumberNodeModelInputPostDialDigits

- `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)

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

### WorkflowToolLocator

- `tool_id` (string, required)
- `schema_overrides` (map from string to WorkflowToolLocatorSchemaOverridesValue, optional) — Anulaciones de parámetros por nodo aplicadas sobre la configuración de la propia herramienta. Las claves son rutas de parámetros separadas por puntos (las herramientas webhook añaden a las claves los prefijos path_params./query_params./request_body.). Tienen prioridad sobre cualquier anulación ya definida en la propia herramienta.

### WorkflowSayNodeModelInputMessage

Mensaje que pronuncia este nodo. Usa `literal` para texto exacto o `prompt` para que el LLM genere el mensaje a partir de una descripción.

- `type`: `literal`
  - `text` (string, required) — Texto exacto que pronuncia el agente. Admite marcadores de posición de variables dinámicas `{{variable_name}}`.
  - `text_translations` (map from string to TranslatedString, optional) — Traducciones de `text`, indexadas por código de idioma. Cuando el idioma de la conversación tiene una entrada, se pronuncia su valor en lugar de `text`.
- `type`: `prompt`
  - `prompt` (string, required) — Descripción del mensaje que debe generar el LLM. Se añade al prompt del sistema del agente mientras este nodo está activo.

### WorkflowStateUpdateInput

- `variable_name` (string, required) — Nombre de la variable dinámica que se va a asignar.
- `expression` (AstNodeInput, required) — Expresión cuyo resultado se asigna a la variable. Puede combinar constantes, otras variables dinámicas, valores extraídos por el LLM y operadores.
- `type` ("dynamic_variable", optional)
- `required` (boolean, optional, default: true) — Cuando es false, el LLM puede omitir los valores de los que depende esta actualización. En ese caso, la actualización se omite y la variable conserva su valor actual.

### AstNodeInput

- `type`: `add_operator`
  - `left` (AstNodeInput, required) — Operando izquierdo del operador binario.
  - `right` (AstNodeInput, required) — Operando derecho del operador binario.
- `type`: `and_operator`
  - `children` (list of AstNodeInput, required) — Nodos secundarios del operador lógico.
- `type`: `boolean_literal`
  - `value` (boolean, required) — Valor de este literal.
- `type`: `conditional_operator`
  - `condition` (AstNodeInput, required) — Condición que determina qué expresión se debe seleccionar.
  - `falseExpression` (AstNodeInput, required) — Expresión seleccionada si la condición es false.
  - `trueExpression` (AstNodeInput, required) — Expresión seleccionada si la condición es true.
- `type`: `div_operator`
  - `left` (AstNodeInput, required) — Operando izquierdo del operador binario.
  - `right` (AstNodeInput, required) — Operando derecho del operador binario.
- `type`: `dynamic_variable`
  - `name` (string, required) — El nombre de la variable dinámica.
- `type`: `eq_operator`
  - `left` (AstNodeInput, required) — Operando izquierdo del operador binario.
  - `right` (AstNodeInput, required) — Operando derecho del operador binario.
- `type`: `gt_operator`
  - `left` (AstNodeInput, required) — Operando izquierdo del operador binario.
  - `right` (AstNodeInput, required) — Operando derecho del operador binario.
- `type`: `gte_operator`
  - `left` (AstNodeInput, required) — Operando izquierdo del operador binario.
  - `right` (AstNodeInput, required) — Operando derecho del operador binario.
- `type`: `llm`
  - `value_schema` (LlmLiteralJsonSchemaProperty, optional) — Esquema JSON que describe el valor que debe extraer el LLM.
  - `prompt` (string, optional, deprecated) — El prompt que se debe evaluar como un valor booleano. Obsoleto. Usa un esquema booleano en su lugar.
- `type`: `lt_operator`
  - `left` (AstNodeInput, required) — Operando izquierdo del operador binario.
  - `right` (AstNodeInput, required) — Operando derecho del operador binario.
- `type`: `lte_operator`
  - `left` (AstNodeInput, required) — Operando izquierdo del operador binario.
  - `right` (AstNodeInput, required) — Operando derecho del operador binario.
- `type`: `mul_operator`
  - `left` (AstNodeInput, required) — Operando izquierdo del operador binario.
  - `right` (AstNodeInput, required) — Operando derecho del operador binario.
- `type`: `neq_operator`
  - `left` (AstNodeInput, required) — Operando izquierdo del operador binario.
  - `right` (AstNodeInput, required) — Operando derecho del operador binario.
- `type`: `null_literal`
- `type`: `number_literal`
  - `value` (AstNumberNodeInputValue, required) — Valor de este literal.
- `type`: `or_operator`
  - `children` (list of AstNodeInput, required) — Nodos secundarios del operador lógico.
- `type`: `string_literal`
  - `value` (string, required) — Valor de este literal.
- `type`: `sub_operator`
  - `left` (AstNodeInput, required) — Operando izquierdo del operador binario.
  - `right` (AstNodeInput, required) — Operando derecho del operador binario.

### AsrConversationalConfigWorkflowOverride

- `quality` ("high", optional) — La calidad de la transcripción
- `provider` (enum, optional, default: scribe_realtime) — El proveedor del servicio de transcripción
  - Allowed values: `elevenlabs`, `scribe_realtime`, `scribe_v2_turbo`
- `user_input_audio_format` (enum, optional, default: pcm_16000) — El formato del audio que se va a transcribir
  - Allowed values: `pcm_8000`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_44100`, `pcm_48000`, `ulaw_8000`
- `keywords` (list of string, optional) — Palabras clave para aumentar la probabilidad de predicción de

### TurnConfigWorkflowOverride

- `turn_timeout` (double, optional) — Tiempo máximo de espera de la respuesta del usuario antes de volver a interactuar con él
- `initial_wait_time` (double, optional) — Cuánto tiempo esperará el agente a que el usuario inicie la conversación si el primer mensaje está vacío. Si no se establece, se usa el turn_timeout normal.
- `silence_end_call_timeout` (double, optional) — Tiempo máximo de espera desde que el usuario habló por última vez antes de finalizar la llamada
- `turn_eagerness` (enum, optional, default: normal) — Controla la rapidez con la que el agente responde. Bajo = menos rápido (espera más), Estándar = rapidez predeterminada, Alto = más rápido (responde antes)
  - Allowed values: `patient`, `normal`, `eager`
- `spelling_patience` (enum, optional, default: auto) — Controla si el agente debe ser más paciente cuando el usuario está deletreando números y entidades con nombre propio. Auto = según el modelo, Off = nunca espera más tiempo
  - Allowed values: `auto`, `off`
- `speculative_turn` (boolean, optional) — Cuando está activado, empieza a generar respuestas del LLM durante el silencio antes de alcanzar una confianza total en el turno, lo que reduce la latencia percibida. Puede aumentar los costes del LLM.
- `retranscribe_on_turn_timeout` (boolean, optional) — Cuando se activa, si VAD no detecta voz, intenta volver a transcribir el audio acumulado cuando se agota el tiempo del turno. Desactiva la facturación con descuento por silencio mientras está activado para el agente o nodo de workflow activo.
- `turn_model` (enum, optional, default: turn_v3) — Versión del modelo de detección de turnos que se debe usar.
  - Allowed values: `turn_v2`, `turn_v3`
- `interruption_ignore_terms` (list of string, optional) — Lista de términos que no deben desencadenar una interrupción cuando los pronuncie el usuario (p. ej., 'gotcha', 'understood'). Utiliza coincidencia exacta sin distinguir mayúsculas de minúsculas.
- `interruption_ignore_term_languages` (list of string, optional) — Códigos de idioma para los que se han activado categorías predefinidas de términos que se deben ignorar. Se almacenan explícitamente para que la visualización no se infiera a partir de la coincidencia de términos.
- `merge_with_default_ignore_terms` (boolean, optional) — Cuando está activado, se usan los términos predeterminados seleccionados para interruption_ignore_term_languages además de interruption_ignore_terms.
- `transcribe_on_disabled_interruptions` (boolean, optional) — Cuando las interrupciones están desactivadas, transcribe igualmente lo que dice el usuario para incluirlo en el siguiente turno. Si está desactivado, se ignora el habla del usuario durante un turno no interrumpible y no activa un turno.
- `soft_timeout_config` (SoftTimeoutConfigWorkflowOverride, optional) — Configuración de la función de tiempo de espera flexible. Proporciona comentarios inmediatos durante respuestas más largas del LLM.

### TtsConversationalConfigWorkflowOverrideInput

- `model_id` (enum, optional, default: eleven_v4_turbo) — El modelo que se debe usar para TTS
  - Allowed values: `eleven_turbo_v2`, `eleven_turbo_v2_5`, `eleven_flash_v2`, `eleven_flash_v2_5`, `eleven_multilingual_v2`, `eleven_v3_conversational`, `eleven_v4`, `eleven_v4_turbo`
- `voice_id` (string, optional) — El ID de voz que se utilizará para TTS
- `supported_voices` (list of SupportedVoice, optional) — Voces compatibles adicionales para el agente
- `expressive_mode` (boolean, optional) — Cuando está activado, aplica el prompt de etiquetas de audio expresivas. Se desactiva automáticamente para modelos que no sean v3.
- `suggested_audio_tags` (list of SuggestedAudioTag, optional) — Etiquetas de audio sugeridas para potenciar una voz expresiva (para los modelos eleven_v3 y eleven_v3_conversational). El agente también puede usar otras etiquetas que no se incluyan aquí.
- `agent_output_audio_format` (enum, optional, default: pcm_16000) — El formato de audio que se usará para Texto a Voz
  - Allowed values: `pcm_8000`, `pcm_16000`, `pcm_22050`, `pcm_24000`, `pcm_44100`, `pcm_48000`, `ulaw_8000`
- `optimize_streaming_latency` (integer, optional) — Obsoleto: este campo no tiene efecto y se ignora.
- `stability` (double, optional) — La estabilidad de la voz generada.
- `speed` (double, optional) — La velocidad de la voz generada.
- `similarity_boost` (double, optional) — El refuerzo de similitud para la voz generada
- `text_normalisation_type` (enum, optional, default: system_prompt) — Método para convertir números en palabras antes de convertir texto en voz. Si se establece en SYSTEM_PROMPT, el prompt del sistema se actualizará para incluir instrucciones de normalización. Si se establece en ELEVENLABS, el texto se normalizará después de la generación, lo que añadirá una ligera latencia.
  - Allowed values: `system_prompt`, `elevenlabs`
- `pronunciation_dictionary_locators` (list of PydanticPronunciationDictionaryVersionLocator, optional) — Los localizadores del diccionario de pronunciación
- `enable_phoneme_tags` (boolean, optional) — Activa el procesamiento de etiquetas de fonemas SSML para los modelos V3. Al activarlo, las etiquetas de fonemas, tanto en línea como de diccionarios de pronunciación, se analizan y convierten a IPA en línea antes de enviarse al modelo.
- `audio_effects` (EffectsSpecInput, optional) — Especificación opcional de efectos de TTS: preajuste de filtro, distancia (ecualización de proximidad) y entorno (reverberación por convolución).

### ConversationConfigWorkflowOverrideInput

- `text_only` (boolean, optional) — Si se activa, el audio no se procesará y solo se utilizará texto. Úsalo para evitar los costes de audio.
- `max_duration_seconds` (integer, optional) — La duración máxima de una conversación en segundos
- `client_events` (list of enum, optional) — Los eventos que se enviarán al cliente
  - Allowed values: `conversation_initiation_metadata`, `asr_initiation_metadata`, `ping`, `audio`, `interruption`, `user_transcript`, `tentative_user_transcript`, `agent_response`, `agent_response_correction`, `client_tool_call`, `mcp_tool_call`, `mcp_connection_status`, `agent_tool_request`, `agent_tool_response`, `agent_tool_response_full_payload`, `agent_response_metadata`, `vad_score`, `agent_chat_response_part`, `client_error`, `guardrail_triggered`, `dtmf_request`, `agent_response_complete`, `context_usage`, `internal_turn_probability`, `internal_tentative_agent_response`
- `file_input` (FileInputConfigWorkflowOverride, optional) — Configuración de la entrada de archivos (subidas de imágenes o PDF) durante las conversaciones.
- `monitoring_enabled` (boolean, optional) — Activa la monitorización en tiempo real de las conversaciones mediante WebSocket
- `monitoring_events` (list of enum, optional) — Los eventos que se enviarán a las conexiones de monitorización.
  - Allowed values: `conversation_initiation_metadata`, `asr_initiation_metadata`, `ping`, `audio`, `interruption`, `user_transcript`, `tentative_user_transcript`, `agent_response`, `agent_response_correction`, `client_tool_call`, `mcp_tool_call`, `mcp_connection_status`, `agent_tool_request`, `agent_tool_response`, `agent_tool_response_full_payload`, `agent_response_metadata`, `vad_score`, `agent_chat_response_part`, `client_error`, `guardrail_triggered`, `dtmf_request`, `agent_response_complete`, `context_usage`, `internal_turn_probability`, `internal_tentative_agent_response`
- `dtmf_input_settings` (DtmfInputConfig, optional) — Configura la recopilación de entradas DTMF (teclado) durante llamadas telefónicas
- `background_sound` (BackgroundSoundConfigWorkflowOverride, optional) — Configuración del sonido de fondo durante las conversaciones.
- `source_attribution` (boolean, optional) — Cuando está activado y hay contenido en la base de conocimientos, se indica al LLM que informe de las fuentes que ha utilizado.

### LanguagePresetInput

- `overrides` (ConversationConfigClientOverrideInput, required) — Las sustituciones para el preajuste de idioma
- `first_message_translation` (LanguagePresetTranslation, optional) — La traducción del primer mensaje
- `soft_timeout_translation` (LanguagePresetTranslation, optional) — La traducción del mensaje de tiempo de espera flexible

### VadConfigWorkflowOverride

### AgentConfigApiModelWorkflowOverrideInput

- `first_message` (string, optional) — 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) — Idioma del agente, usado para ASR y TTS
- `hinglish_mode` (boolean, optional) — Cuando está activado, el agente mezcla palabras y frases en inglés en las respuestas en hindi, malayalam, telugu o canarés.
- `dynamic_variables` (DynamicVariablesConfigWorkflowOverride, optional) — Configuración de variables dinámicas
- `disable_first_message_interruptions` (boolean, optional) — Si es true, el usuario no podrá interrumpir al agente mientras se emite el primer mensaje.
- `max_conversation_duration_message` (string, optional) — 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` (PromptAgentApiModelWorkflowOverrideInput, optional) — El prompt del agente

### WorkflowToolLocatorSchemaOverridesValue

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

### TranslatedString

- `value` (string, required)

### LlmLiteralJsonSchemaProperty

- `type` (LlmLiteralJsonSchemaPropertyType, required)
- `description` (string, required)
- `enum` (list of string, optional) — List of allowed string values for string type parameters

### AstNumberNodeInputValue

Valor de este literal.

### SoftTimeoutConfigWorkflowOverride

- `timeout_seconds` (double, optional) — Tiempo en segundos antes de mostrar el mensaje predefinido mientras se espera la respuesta del LLM. Establécelo en -1 para desactivarlo.
- `message` (string, optional) — Mensaje que se mostrará cuando se alcance el primer tiempo de espera flexible mientras se espera la respuesta del LLM. Admite variables dinámicas (por ejemplo, \{\{system\_\_time}}, \{\{custom\_variable}}).
- `additional_soft_timeout_messages` (list of string, optional) — Mensajes de relleno estáticos adicionales para los siguientes tiempos de espera flexibles en la misma generación del LLM. El primer tiempo de espera usa `message`. Si se configuran menos mensajes que `max_soft_timeouts_per_generation`, se repite el último mensaje configurado; de lo contrario, se utiliza un mensaje de relleno integrado.
- `use_llm_generated_message` (boolean, optional) — Si se activa, el mensaje de tiempo de espera flexible se generará dinámicamente en lugar de utilizar el mensaje estático.
- `randomize_fillers` (boolean, optional) — Si se activa, cambia aleatoriamente el orden de los mensajes estáticos de tiempo de espera flexible una vez al inicio de cada turno. Solo se aplica cuando use_llm_generated_message es false.
- `max_soft_timeouts_per_generation` (integer, optional) — Máximo de mensajes de relleno mientras se espera una única respuesta del LLM. Se activa cada timeout_seconds hasta que el LLM transmita contenido o se alcance este límite.
- `llm_generated_message_prompt_override` (string, optional) — Prompt personalizado para generar el mensaje de relleno de espera flexible cuando use\_llm\_generated\_message está activado. El contexto reciente de la conversación se proporciona como un mensaje de usuario independiente. Si no se configura, se utilizará el prompt predeterminado. Admite variables dinámicas (p. ej., \{\{system\_\_time}}, \{\{custom\_variable}}).
- `disable_until_first_user_message` (boolean, optional) — Cuando es true, se suprimen las frases de relleno por tiempo de espera flexible hasta que la conversación tenga al menos un mensaje real del usuario. Evita frases de relleno durante el turno inicial del agente (por ejemplo, generación inmediata en un workflow o llamadas a herramientas antes de que hable el usuario).

### SupportedVoice

- `label` (string, required)
- `voice_id` (string, required)
- `description` (string, optional)
- `language` (string, optional)
- `model_family` (enum, optional)
  - Allowed values: `turbo`, `flash`, `multilingual`, `v3_conversational`, `v4`, `v4_turbo`
- `optimize_streaming_latency` (integer, optional)
- `stability` (double, optional)
- `speed` (double, optional)
- `similarity_boost` (double, optional)

### SuggestedAudioTag

- `tag` (string, required) — Etiqueta de audio que usar (para un rendimiento óptimo, 1-2 palabras; p. ej., «happy», «excited»)
- `description` (string, optional) — Descripción opcional de cuándo usar esta etiqueta

### PydanticPronunciationDictionaryVersionLocator

Un localizador para que otros documentos puedan hacer referencia a un diccionario específico y a su versión. Esta es una versión de pydantic de PronunciationDictionaryVersionLocatorDBModel. Es necesario para garantizar la compatibilidad con el resto de modelos de datos del agente.

- `pronunciation_dictionary_id` (string, required) — El ID del diccionario de pronunciación
- `version_id` (string, optional) — El ID de la versión del diccionario de pronunciación

### EffectsSpecInput

Efectos de audio aplicados a la voz generada: un ajuste preestablecido de filtro, distancia percibida, un entorno de reverberación, una capa de ruido de fondo y panoramización estéreo. Deja todos los campos con sus valores predeterminados para obtener audio sin procesar.

- `filter_preset_id` (string, optional) — ID de un ajuste preestablecido de filtro que modifica el timbre de la voz, como `phone` u `old_radio`. Consulta los ID válidos con `GET /v1/audio-effects/catalog`.
- `distance` (double, optional, default: 0) — A qué distancia del micrófono suena el hablante, de 0 (cerca, sin cambios) a 1 (lejos). Los valores más altos atenúan las frecuencias graves y agudas y, cuando se configura un entorno, desplazan el equilibrio de la voz sin efectos hacia la reverberación.
- `environment_id` (string, optional) — ID de un entorno de reverberación que sitúa la voz en un espacio, como `small_room` o `hall`. Consulta los ID válidos con `GET /v1/audio-effects/catalog`. La reverberación se procesa en estéreo y añade una cola de hasta varios segundos después de que termine la voz.
- `background_noise_id` (string, optional) — ID de una capa de ruido de fondo reproducida en bucle bajo la voz, como `cafe` o `keyboard`. Consulta los ID válidos con `GET /v1/audio-effects/catalog`.
- `send_level` (double, optional, default: 1) — Qué cantidad de voz se envía a la reverberación, de 0 (ninguna) a 1 (toda). Solo se aplica cuando se configura `environment_id`; 0 desactiva la reverberación.
- `pan` (double, optional, default: 0) — Posición estéreo de la voz, de -1 (completamente a la izquierda), pasando por 0 (centro), hasta 1 (completamente a la derecha). Solo se aplica panoramización a la voz; la reverberación y el ruido de fondo permanecen centrados.

### FileInputConfigWorkflowOverride

- `enabled` (boolean, optional) — Cuando está habilitado, usuarios pueden adjuntar imágenes, PDF o archivos de texto en el chat cuando el LLM admite entrada multimodal.
- `max_files_in_memory` (integer, optional) — Número de archivos más recientes que se conservan en memoria durante una conversación. Los archivos más antiguos se resumen y se libera su memoria.
- `max_files_per_conversation` (integer, optional) — Total de archivos que un usuario puede subir en una conversación. Las subidas se facturan por archivo. Usa -1 para no establecer límite o un valor >= max_files_in_memory.

### DtmfInputConfig

Configuración para recopilar entradas DTMF (teclado) durante llamadas telefónicas.

- `dtmf_input_timeout` (double, optional, default: 2) — Tiempo de espera, en segundos, para recibir dígitos DTMF adicionales
- `hash_terminator` (boolean, optional, default: true) — Si es true, al pulsar # se completa inmediatamente la entrada DTMF.
- `redact_input` (boolean, optional, default: false) — Si es true, sustituye las entradas DTMF (teclado) de quien llama por un marcador de ocultación en la transcripción, el registro de la conversación y el análisis. No afecta a los dígitos que el agente repite o pasa a una herramienta.

### BackgroundSoundConfigWorkflowOverride

- `source_type` ("preset", optional) — El tipo de fuente de sonido de fondo.
- `source_id` (enum, optional) — Identificador de la fuente de sonido.
  - Allowed values: `office2`, `office1`, `restaurant`, `city`, `typing`, `elevator1`, `elevator2`, `elevator3`, `elevator4`
- `volume` (double, optional) — Nivel de volumen del sonido de fondo (de 0,01 a 1,0).
- `crossfade_loop` (boolean, optional) — Aplica un fundido cruzado en el límite del bucle para evitar chasquidos audibles al repetir el sonido.

### ConversationConfigClientOverrideInput

- `asr` (AsrConversationalConfigOverride, optional) — Configuración de la transcripción conversacional
- `turn` (TurnConfigOverride, optional) — Configuración de la detección de turnos
- `tts` (TtsConversationalConfigOverride, optional) — Configuración de Texto a Voz conversacional
- `conversation` (ConversationConfigOverride, optional) — Configuración de eventos conversacionales
- `agent` (AgentConfigOverrideInput, optional) — Configuración específica del agente

### LanguagePresetTranslation

- `source_hash` (string, required)
- `text` (string, required)

### DynamicVariablesConfigWorkflowOverride

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

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

### PromptAgentApiModelWorkflowOverrideInput

- `prompt` (string, optional) — 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) — 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) — 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) — 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` (BuiltInToolsWorkflowOverrideInput, optional) — Herramientas del sistema integradas que utilizará el agente
- `enable_parallel_tool_calls` (boolean, optional) — 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` (RagConfigWorkflowOverrideInput, 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` (PromptAgentApiModelWorkflowOverrideInputBackupLlmConfig, 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) — Tiempo en segundos antes de recurrir al LLM de respaldo. Debe estar entre 2 y 15 segundos.
- `tools` (list of PromptAgentApiModelWorkflowOverrideInputToolsItem, optional) — Una lista de herramientas que el agente puede utilizar durante la conversación; usa tool_ids en su lugar

### ConstantSchemaOverrideConstantValue

El valor constante que se usará

### LlmLiteralJsonSchemaPropertyType

### AsrConversationalConfigOverride

- `keywords` (list of string, optional) — Palabras clave para aumentar la probabilidad de predicción de

### TurnConfigOverride

- `soft_timeout_config` (SoftTimeoutConfigOverride, optional) — Configuración de la función de tiempo de espera flexible. Proporciona comentarios inmediatos durante respuestas más largas del LLM.

### TtsConversationalConfigOverride

- `model_id` (enum, optional, default: eleven_v4_turbo) — El modelo que se debe usar para TTS
  - Allowed values: `eleven_turbo_v2`, `eleven_turbo_v2_5`, `eleven_flash_v2`, `eleven_flash_v2_5`, `eleven_multilingual_v2`, `eleven_v3_conversational`, `eleven_v4`, `eleven_v4_turbo`
- `voice_id` (string, optional) — El ID de voz que se utilizará para TTS
- `supported_voices` (list of SupportedVoice, optional) — Voces compatibles adicionales para el agente
- `stability` (double, optional) — La estabilidad de la voz generada.
- `speed` (double, optional) — La velocidad de la voz generada.
- `similarity_boost` (double, optional) — El refuerzo de similitud para la voz generada
- `pronunciation_dictionary_locators` (list of PydanticPronunciationDictionaryVersionLocator, optional) — Los localizadores del diccionario de pronunciación

### ConversationConfigOverride

- `text_only` (boolean, optional) — Si se activa, el audio no se procesará y solo se utilizará texto. Úsalo para evitar los costes de audio.
- `max_duration_seconds` (integer, optional) — La duración máxima de una conversación en segundos

### AgentConfigOverrideInput

- `first_message` (string, optional) — 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) — Idioma del agente, usado para ASR y TTS
- `max_conversation_duration_message` (string, optional) — Si no está vacío, el mensaje que enviará el agente cuando se alcance la duración máxima de la conversación.
- `prompt` (PromptAgentApiModelOverrideInput, optional) — El prompt del agente

### BuiltInToolsWorkflowOverrideInput

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

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

### RagConfigWorkflowOverrideInput

- `enabled` (boolean, optional)
- `embedding_model` (enum, optional, default: e5_mistral_7b_instruct)
  - Allowed values: `e5_mistral_7b_instruct`, `multilingual_e5_large_instruct`
- `max_vector_distance` (double, optional) — Distancia vectorial máxima de los fragmentos recuperados.
- `max_documents_length` (integer, optional) — Longitud total máxima de los fragmentos de documentos recuperados de RAG.
- `max_retrieved_rag_chunks_count` (integer, optional) — 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.

### PromptAgentApiModelWorkflowOverrideInputBackupLlmConfig

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

### PromptAgentApiModelWorkflowOverrideInputToolsItem

El tipo de herramienta

- `type`: `api_integration_webhook`
  - `api_integration_connection_id` (string, required)
  - `api_integration_id` (string, required)
  - `description` (string, required) — Descripción de cuándo se debe usar la herramienta y qué hace.
  - `name` (string, required)
  - `api_schema_overrides` (ApiIntegrationWebhookOverrides, optional) — User overrides applied on top of the base api_schema
  - `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`
  - `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`
  - `tool_version` (string, optional, default: 1.0.0) — La versión de la herramienta de integración de API
  - `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`: `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` (ObjectJsonSchemaPropertyInput, 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` (SystemToolConfigInputParams, 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` (WebhookToolApiSchemaConfigInput, 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.

### SoftTimeoutConfigOverride

- `message` (string, optional) — Mensaje que se mostrará cuando se alcance el primer tiempo de espera flexible mientras se espera la respuesta del LLM. Admite variables dinámicas (por ejemplo, \{\{system\_\_time}}, \{\{custom\_variable}}).
- `additional_soft_timeout_messages` (list of string, optional) — Mensajes de relleno estáticos adicionales para los siguientes tiempos de espera flexibles en la misma generación del LLM. El primer tiempo de espera usa `message`. Si se configuran menos mensajes que `max_soft_timeouts_per_generation`, se repite el último mensaje configurado; de lo contrario, se utiliza un mensaje de relleno integrado.

### PromptAgentApiModelOverrideInput

- `prompt` (string, optional) — 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`
- `tool_ids` (list of string, optional) — Una lista de ID de herramientas utilizadas por el agente.
- `tool_ids_strict` (boolean, optional) — 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.
- `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

### SystemToolConfigInput

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` (SystemToolConfigInputParams, 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`

### BackupLlmDefault

- `preference` ("default", optional)

### BackupLlmDisabled

- `preference` ("disabled", optional)

### BackupLlmOverride

- `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`
- `preference` ("override", optional)

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

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

### ObjectJsonSchemaPropertyInput

- `property_kind` (enum, optional, default: object)
  - Allowed values: `array`, `object`
- `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 ObjectJsonSchemaPropertyInputPropertiesValue, optional)
- `required_constraints` (RequiredConstraints, optional) — Contenedor para restricciones de composición anyOf/allOf limitadas a campos obligatorios.

### SystemToolConfigInputParams

- `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 AgentTransferInput, 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}}).

### WebhookToolApiSchemaConfigInput

- `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 WebhookToolApiSchemaConfigInputRequestHeadersValue, 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` (QueryParamsJsonSchemaInput, 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` (ObjectJsonSchemaPropertyInput, 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` (ObjectJsonSchemaPropertyInput, 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` (WebhookToolApiSchemaConfigInputAuthConnection, optional) — Conexión de autenticación opcional que se usará para autenticarse con este webhook

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

### ObjectJsonSchemaPropertyInputPropertiesValue

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

### AgentTransferInput

- `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)

### WebhookToolApiSchemaConfigInputRequestHeadersValue

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

### QueryParamsJsonSchemaInput

- `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'.

### WebhookToolApiSchemaConfigInputAuthConnection

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

### ArrayJsonSchemaPropertyInput

- `property_kind` (enum, optional, default: array)
  - Allowed values: `array`, `object`
- `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` (ArrayJsonSchemaPropertyInputItems, 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

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

### ArrayJsonSchemaPropertyInputItems

Esquema de los elementos de la matriz.

## Examples

**Request**

```json
{
  "conversation_config": {
    "key": "value"
  },
  "platform_settings": {
    "key": "value"
  },
  "workflow": {
    "edges": {
      "entry_to_tool_a": {
        "source": "entry_node",
        "target": "tool_node_a",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "start_to_entry": {
        "source": "start_node",
        "target": "entry_node",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "tool_a_to_failure": {
        "source": "tool_node_a",
        "target": "failure_node",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "tool_a_to_tool_b": {
        "source": "tool_node_a",
        "target": "tool_node_b",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "tool_b_to_agent_transfer": {
        "source": "tool_node_b",
        "target": "success_transfer",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "tool_b_to_conversation": {
        "source": "tool_node_b",
        "target": "success_conversation",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "tool_b_to_end": {
        "source": "tool_node_b",
        "target": "success_end",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "tool_b_to_phone": {
        "source": "tool_node_b",
        "target": "success_phone",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      }
    },
    "nodes": {
      "entry_node": {
        "type": "end"
      },
      "failure_node": {
        "type": "end"
      },
      "start_node": {
        "type": "end"
      },
      "success_conversation": {
        "type": "end"
      },
      "success_end": {
        "type": "end"
      },
      "success_phone": {
        "type": "end"
      },
      "success_transfer": {
        "type": "end"
      },
      "tool_node_a": {
        "type": "end"
      },
      "tool_node_b": {
        "type": "end"
      }
    }
  },
  "name": "name"
}
```

**Response**

```json
{
  "key": "value"
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/drafts"

querystring = {"branch_id":"agtbrch_8901k4t9z5defmb8vh3e9361y7nj"}

payload = {
    "conversation_config": { "key": "value" },
    "platform_settings": { "key": "value" },
    "workflow": {
        "edges": {
            "entry_to_tool_a": {
                "source": "entry_node",
                "target": "tool_node_a",
                "forward_condition": {
                    "type": "expression",
                    "expression": {
                        "type": "and_operator",
                        "children": []
                    }
                }
            },
            "start_to_entry": {
                "source": "start_node",
                "target": "entry_node",
                "forward_condition": {
                    "type": "expression",
                    "expression": {
                        "type": "and_operator",
                        "children": []
                    }
                }
            },
            "tool_a_to_failure": {
                "source": "tool_node_a",
                "target": "failure_node",
                "forward_condition": {
                    "type": "expression",
                    "expression": {
                        "type": "and_operator",
                        "children": []
                    }
                }
            },
            "tool_a_to_tool_b": {
                "source": "tool_node_a",
                "target": "tool_node_b",
                "forward_condition": {
                    "type": "expression",
                    "expression": {
                        "type": "and_operator",
                        "children": []
                    }
                }
            },
            "tool_b_to_agent_transfer": {
                "source": "tool_node_b",
                "target": "success_transfer",
                "forward_condition": {
                    "type": "expression",
                    "expression": {
                        "type": "and_operator",
                        "children": []
                    }
                }
            },
            "tool_b_to_conversation": {
                "source": "tool_node_b",
                "target": "success_conversation",
                "forward_condition": {
                    "type": "expression",
                    "expression": {
                        "type": "and_operator",
                        "children": []
                    }
                }
            },
            "tool_b_to_end": {
                "source": "tool_node_b",
                "target": "success_end",
                "forward_condition": {
                    "type": "expression",
                    "expression": {
                        "type": "and_operator",
                        "children": []
                    }
                }
            },
            "tool_b_to_phone": {
                "source": "tool_node_b",
                "target": "success_phone",
                "forward_condition": {
                    "type": "expression",
                    "expression": {
                        "type": "and_operator",
                        "children": []
                    }
                }
            }
        },
        "nodes": {
            "entry_node": { "type": "end" },
            "failure_node": { "type": "end" },
            "start_node": { "type": "end" },
            "success_conversation": { "type": "end" },
            "success_end": { "type": "end" },
            "success_phone": { "type": "end" },
            "success_transfer": { "type": "end" },
            "tool_node_a": { "type": "end" },
            "tool_node_b": { "type": "end" }
        }
    },
    "name": "name"
}
headers = {"Content-Type": "application/json"}

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

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"conversation_config":{"key":"value"},"platform_settings":{"key":"value"},"workflow":{"edges":{"entry_to_tool_a":{"source":"entry_node","target":"tool_node_a","forward_condition":{"type":"expression","expression":{"type":"and_operator","children":[]}}},"start_to_entry":{"source":"start_node","target":"entry_node","forward_condition":{"type":"expression","expression":{"type":"and_operator","children":[]}}},"tool_a_to_failure":{"source":"tool_node_a","target":"failure_node","forward_condition":{"type":"expression","expression":{"type":"and_operator","children":[]}}},"tool_a_to_tool_b":{"source":"tool_node_a","target":"tool_node_b","forward_condition":{"type":"expression","expression":{"type":"and_operator","children":[]}}},"tool_b_to_agent_transfer":{"source":"tool_node_b","target":"success_transfer","forward_condition":{"type":"expression","expression":{"type":"and_operator","children":[]}}},"tool_b_to_conversation":{"source":"tool_node_b","target":"success_conversation","forward_condition":{"type":"expression","expression":{"type":"and_operator","children":[]}}},"tool_b_to_end":{"source":"tool_node_b","target":"success_end","forward_condition":{"type":"expression","expression":{"type":"and_operator","children":[]}}},"tool_b_to_phone":{"source":"tool_node_b","target":"success_phone","forward_condition":{"type":"expression","expression":{"type":"and_operator","children":[]}}}},"nodes":{"entry_node":{"type":"end"},"failure_node":{"type":"end"},"start_node":{"type":"end"},"success_conversation":{"type":"end"},"success_end":{"type":"end"},"success_phone":{"type":"end"},"success_transfer":{"type":"end"},"tool_node_a":{"type":"end"},"tool_node_b":{"type":"end"}}},"name":"name"}'
};

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/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj"

	payload := strings.NewReader("{\n  \"conversation_config\": {\n    \"key\": \"value\"\n  },\n  \"platform_settings\": {\n    \"key\": \"value\"\n  },\n  \"workflow\": {\n    \"edges\": {\n      \"entry_to_tool_a\": {\n        \"source\": \"entry_node\",\n        \"target\": \"tool_node_a\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"start_to_entry\": {\n        \"source\": \"start_node\",\n        \"target\": \"entry_node\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_a_to_failure\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"failure_node\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_a_to_tool_b\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"tool_node_b\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_agent_transfer\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_transfer\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_conversation\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_conversation\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_end\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_end\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_phone\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_phone\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      }\n    },\n    \"nodes\": {\n      \"entry_node\": {\n        \"type\": \"end\"\n      },\n      \"failure_node\": {\n        \"type\": \"end\"\n      },\n      \"start_node\": {\n        \"type\": \"end\"\n      },\n      \"success_conversation\": {\n        \"type\": \"end\"\n      },\n      \"success_end\": {\n        \"type\": \"end\"\n      },\n      \"success_phone\": {\n        \"type\": \"end\"\n      },\n      \"success_transfer\": {\n        \"type\": \"end\"\n      },\n      \"tool_node_a\": {\n        \"type\": \"end\"\n      },\n      \"tool_node_b\": {\n        \"type\": \"end\"\n      }\n    }\n  },\n  \"name\": \"name\"\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/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj")

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  \"conversation_config\": {\n    \"key\": \"value\"\n  },\n  \"platform_settings\": {\n    \"key\": \"value\"\n  },\n  \"workflow\": {\n    \"edges\": {\n      \"entry_to_tool_a\": {\n        \"source\": \"entry_node\",\n        \"target\": \"tool_node_a\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"start_to_entry\": {\n        \"source\": \"start_node\",\n        \"target\": \"entry_node\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_a_to_failure\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"failure_node\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_a_to_tool_b\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"tool_node_b\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_agent_transfer\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_transfer\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_conversation\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_conversation\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_end\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_end\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_phone\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_phone\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      }\n    },\n    \"nodes\": {\n      \"entry_node\": {\n        \"type\": \"end\"\n      },\n      \"failure_node\": {\n        \"type\": \"end\"\n      },\n      \"start_node\": {\n        \"type\": \"end\"\n      },\n      \"success_conversation\": {\n        \"type\": \"end\"\n      },\n      \"success_end\": {\n        \"type\": \"end\"\n      },\n      \"success_phone\": {\n        \"type\": \"end\"\n      },\n      \"success_transfer\": {\n        \"type\": \"end\"\n      },\n      \"tool_node_a\": {\n        \"type\": \"end\"\n      },\n      \"tool_node_b\": {\n        \"type\": \"end\"\n      }\n    }\n  },\n  \"name\": \"name\"\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/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj")
  .header("Content-Type", "application/json")
  .body("{\n  \"conversation_config\": {\n    \"key\": \"value\"\n  },\n  \"platform_settings\": {\n    \"key\": \"value\"\n  },\n  \"workflow\": {\n    \"edges\": {\n      \"entry_to_tool_a\": {\n        \"source\": \"entry_node\",\n        \"target\": \"tool_node_a\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"start_to_entry\": {\n        \"source\": \"start_node\",\n        \"target\": \"entry_node\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_a_to_failure\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"failure_node\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_a_to_tool_b\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"tool_node_b\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_agent_transfer\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_transfer\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_conversation\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_conversation\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_end\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_end\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_phone\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_phone\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      }\n    },\n    \"nodes\": {\n      \"entry_node\": {\n        \"type\": \"end\"\n      },\n      \"failure_node\": {\n        \"type\": \"end\"\n      },\n      \"start_node\": {\n        \"type\": \"end\"\n      },\n      \"success_conversation\": {\n        \"type\": \"end\"\n      },\n      \"success_end\": {\n        \"type\": \"end\"\n      },\n      \"success_phone\": {\n        \"type\": \"end\"\n      },\n      \"success_transfer\": {\n        \"type\": \"end\"\n      },\n      \"tool_node_a\": {\n        \"type\": \"end\"\n      },\n      \"tool_node_b\": {\n        \"type\": \"end\"\n      }\n    }\n  },\n  \"name\": \"name\"\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/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj', [
  'body' => '{
  "conversation_config": {
    "key": "value"
  },
  "platform_settings": {
    "key": "value"
  },
  "workflow": {
    "edges": {
      "entry_to_tool_a": {
        "source": "entry_node",
        "target": "tool_node_a",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "start_to_entry": {
        "source": "start_node",
        "target": "entry_node",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "tool_a_to_failure": {
        "source": "tool_node_a",
        "target": "failure_node",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "tool_a_to_tool_b": {
        "source": "tool_node_a",
        "target": "tool_node_b",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "tool_b_to_agent_transfer": {
        "source": "tool_node_b",
        "target": "success_transfer",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "tool_b_to_conversation": {
        "source": "tool_node_b",
        "target": "success_conversation",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "tool_b_to_end": {
        "source": "tool_node_b",
        "target": "success_end",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      },
      "tool_b_to_phone": {
        "source": "tool_node_b",
        "target": "success_phone",
        "forward_condition": {
          "type": "expression",
          "expression": {
            "type": "and_operator",
            "children": []
          }
        }
      }
    },
    "nodes": {
      "entry_node": {
        "type": "end"
      },
      "failure_node": {
        "type": "end"
      },
      "start_node": {
        "type": "end"
      },
      "success_conversation": {
        "type": "end"
      },
      "success_end": {
        "type": "end"
      },
      "success_phone": {
        "type": "end"
      },
      "success_transfer": {
        "type": "end"
      },
      "tool_node_a": {
        "type": "end"
      },
      "tool_node_b": {
        "type": "end"
      }
    }
  },
  "name": "name"
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"conversation_config\": {\n    \"key\": \"value\"\n  },\n  \"platform_settings\": {\n    \"key\": \"value\"\n  },\n  \"workflow\": {\n    \"edges\": {\n      \"entry_to_tool_a\": {\n        \"source\": \"entry_node\",\n        \"target\": \"tool_node_a\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"start_to_entry\": {\n        \"source\": \"start_node\",\n        \"target\": \"entry_node\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_a_to_failure\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"failure_node\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_a_to_tool_b\": {\n        \"source\": \"tool_node_a\",\n        \"target\": \"tool_node_b\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_agent_transfer\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_transfer\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_conversation\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_conversation\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_end\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_end\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      },\n      \"tool_b_to_phone\": {\n        \"source\": \"tool_node_b\",\n        \"target\": \"success_phone\",\n        \"forward_condition\": {\n          \"type\": \"expression\",\n          \"expression\": {\n            \"type\": \"and_operator\",\n            \"children\": []\n          }\n        }\n      }\n    },\n    \"nodes\": {\n      \"entry_node\": {\n        \"type\": \"end\"\n      },\n      \"failure_node\": {\n        \"type\": \"end\"\n      },\n      \"start_node\": {\n        \"type\": \"end\"\n      },\n      \"success_conversation\": {\n        \"type\": \"end\"\n      },\n      \"success_end\": {\n        \"type\": \"end\"\n      },\n      \"success_phone\": {\n        \"type\": \"end\"\n      },\n      \"success_transfer\": {\n        \"type\": \"end\"\n      },\n      \"tool_node_a\": {\n        \"type\": \"end\"\n      },\n      \"tool_node_b\": {\n        \"type\": \"end\"\n      }\n    }\n  },\n  \"name\": \"name\"\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "conversation_config": ["key": "value"],
  "platform_settings": ["key": "value"],
  "workflow": [
    "edges": [
      "entry_to_tool_a": [
        "source": "entry_node",
        "target": "tool_node_a",
        "forward_condition": [
          "type": "expression",
          "expression": [
            "type": "and_operator",
            "children": []
          ]
        ]
      ],
      "start_to_entry": [
        "source": "start_node",
        "target": "entry_node",
        "forward_condition": [
          "type": "expression",
          "expression": [
            "type": "and_operator",
            "children": []
          ]
        ]
      ],
      "tool_a_to_failure": [
        "source": "tool_node_a",
        "target": "failure_node",
        "forward_condition": [
          "type": "expression",
          "expression": [
            "type": "and_operator",
            "children": []
          ]
        ]
      ],
      "tool_a_to_tool_b": [
        "source": "tool_node_a",
        "target": "tool_node_b",
        "forward_condition": [
          "type": "expression",
          "expression": [
            "type": "and_operator",
            "children": []
          ]
        ]
      ],
      "tool_b_to_agent_transfer": [
        "source": "tool_node_b",
        "target": "success_transfer",
        "forward_condition": [
          "type": "expression",
          "expression": [
            "type": "and_operator",
            "children": []
          ]
        ]
      ],
      "tool_b_to_conversation": [
        "source": "tool_node_b",
        "target": "success_conversation",
        "forward_condition": [
          "type": "expression",
          "expression": [
            "type": "and_operator",
            "children": []
          ]
        ]
      ],
      "tool_b_to_end": [
        "source": "tool_node_b",
        "target": "success_end",
        "forward_condition": [
          "type": "expression",
          "expression": [
            "type": "and_operator",
            "children": []
          ]
        ]
      ],
      "tool_b_to_phone": [
        "source": "tool_node_b",
        "target": "success_phone",
        "forward_condition": [
          "type": "expression",
          "expression": [
            "type": "and_operator",
            "children": []
          ]
        ]
      ]
    ],
    "nodes": [
      "entry_node": ["type": "end"],
      "failure_node": ["type": "end"],
      "start_node": ["type": "end"],
      "success_conversation": ["type": "end"],
      "success_end": ["type": "end"],
      "success_phone": ["type": "end"],
      "success_transfer": ["type": "end"],
      "tool_node_a": ["type": "end"],
      "tool_node_b": ["type": "end"]
    ]
  ],
  "name": "name"
] 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/drafts?branch_id=agtbrch_8901k4t9z5defmb8vh3e9361y7nj")! 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()
```