> 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 una campaña saliente

POST https://api.elevenlabs.io/v1/convai/outbound-campaigns/campaigns/submit
Content-Type: application/json

Crea una campaña saliente que llama o envía mensajes a cada destinatario mediante el agente, dentro de las franjas de llamada de la política, con los reintentos y seguimientos que esta permita. Devuelve `201` para una campaña nueva. Una solicitud repetida, identificada mediante `idempotency_key` o, de lo contrario, por su cuerpo, devuelve la campaña existente con `created` en false.

Reference: https://elevenlabs.io/docs/eleven-agents/api-reference/campaigns/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

### Body (application/json)

This endpoint expects an object.

- `call_name` (string, required) — El nombre de la campaña.
- `agent_id` (string, required) — El agente que realiza las llamadas.
- `recipients` (list of SubmitCampaignRecipient, required) — A quién llamar. Cada destinatario se convierte en un lead de la campaña.
- `channel_config` (SubmitCampaignRequestChannelConfig, required)
- `scheduled_time_unix` (integer, optional) — Cuándo empezar a llamar; omítelo para empezar ahora. Las llamadas seguirán esperando a la siguiente franja horaria de llamadas.
- `timezone` (string, optional) — Zona horaria IANA en la que interpretar las franjas de llamada, anulando la de la política.
- `branch_id` (string, optional) — La rama del agente con la que se llamará.
- `environment` (string, optional) — El entorno en el que resolver las variables de entorno del agente.
- `target_concurrency_limit` (integer, optional) — El número máximo de llamadas que se pueden realizar a la vez.
- `idempotency_key` (string, optional) — Permite reintentar la solicitud con seguridad: una repetición con la misma clave devuelve la campaña que creó.
- `outcome` (SubmitCampaignRequestOutcome, optional) — El resultado que se considera exitoso para las llamadas de la campaña.
- `policy` (PolicyConfigInput, optional) — Política que se guardará como instantánea en la campaña. Cuando se establece, prevalece sobre el valor predeterminado del espacio de trabajo y cualquier anulación por agente; cuando se omite, debe existir la configuración del espacio de trabajo, que proporciona la política.
- `variant` (enum, optional) — `simple` realiza un intento por destinatario, con franjas de llamada siempre activas y sin recopilar datos, y no se puede combinar con `policy`. `advanced` usa `policy` o la configuración del espacio de trabajo, y es la opción predeterminada para campañas telefónicas.
  - Allowed values: `simple`, `advanced`

## Response

### 200

Respuesta correcta.

- `campaign` (CampaignResponse, required)
- `created` (boolean, required) — False cuando la solicitud repite una anterior y devuelve su campaña.
- `within_calling_window` (boolean, required) — Si las llamadas empiezan de inmediato en lugar de en la siguiente franja horaria de llamadas.

## Errors

### 422 Outbound Campaigns Create Request Unprocessable Entity Error

Error de validación

- `detail` (list of ValidationError, optional)

## Types

### SubmitCampaignRecipient

- `phone_number` (string, optional) — El número al que llamar, en formato E.164, como `+14155550100`.
- `phone_numbers` (list of string, optional) — Más números a los que llamar, en orden después de `phone_number`. El contacto pasa al siguiente cuando las llamadas a su número actual siguen fallando.
- `whatsapp_user_id` (string, optional) — El ID de usuario de WhatsApp del contacto. Las campañas de WhatsApp lo usan en lugar de los números de teléfono.
- `id` (string, optional) — Tu identificador para el destinatario, devuelto como el `recipient_id` de su lead.
- `conversation_initiation_client_data` (ConversationInitiationClientDataRequestInput, optional) — Variables dinámicas y anulaciones para las llamadas de este destinatario.

### SubmitCampaignRequestChannelConfig

- `channel`: `phone`
  - `agent_phone_number_id` (string, required) — El número de teléfono desde el que llamar.
  - `mode_config` (PhoneVoiceConfigInput, optional)
- `channel`: `whatsapp`
  - `mode_config` (SubmitWhatsAppChannelConfigModeConfig, required)
  - `whatsapp_phone_number_id` (string, required) — El número de teléfono de WhatsApp desde el que llamar o enviar mensajes.

### SubmitCampaignRequestOutcome

- `type`: `data_collection`
  - `data_collection_id` (string, required) — El elemento de recopilación de datos del agente que establece una llamada satisfactoria.
  - `equals` (list of DataCollectionOutcomeEqualsItem, required) — Valores que se consideran exitosos, todos del tipo del elemento.
- `type`: `evaluation_criteria`
  - `criteria_id` (string, required) — El criterio de evaluación del agente que cumple una llamada satisfactoria.

### PolicyConfigInput

- `timezone` (string, optional, default: UTC) — Zona horaria IANA en la que se interpretan los períodos de llamada.
- `retry` (RetryPolicy, optional)
- `calling_periods` (list of CallingPeriod, optional) — Las franjas horarias semanales en las que se pueden realizar llamadas.
- `data_collection` (DataCollectionConfig, optional) — Los elementos de recopilación de datos del agente que guían las llamadas de seguimiento. Cada uno usa de forma predeterminada el elemento integrado para su propósito; `null` lo desactiva.
- `followup_context` (FollowupContextPolicy, optional) — Qué variables dinámicas `campaign__` reciben las llamadas de seguimiento.

### CampaignResponse

- `campaign_id` (string, required)
- `call_name` (string, required) — El nombre de la campaña.
- `agent_id` (string, required)
- `channel_config` (CampaignResponseChannelConfig, required)
- `status` (enum, required) — `attention` significa que un elemento de atención abierto retiene algunas llamadas de la campaña mientras las demás continúan. `stopping` significa que se cancelan las llamadas en cola y finalizan las ya realizadas.
  - Allowed values: `active`, `paused`, `stopping`, `stopped`, `completed`, `failed`, `attention`
- `policy` (CampaignPolicySnapshot, required) — La política que adoptó la campaña al crearse.
- `variant` (enum, required)
  - Allowed values: `simple`, `advanced`
- `created_at_unix` (integer, required)
- `updated_at_unix` (integer, required)
- `channel` (enum, required)
  - Allowed values: `phone`, `whatsapp`
- `mode` (enum, required)
  - Allowed values: `voice`, `message`
- `counts` (CampaignSummaryCounts, required)
- `agent_name` (string, required, default: )
- `source` (enum, optional) — Si la campaña se creó en la app o mediante la API.
  - Allowed values: `ui`, `api`
- `outcome` (CampaignResponseOutcome, optional) — El resultado que se considera exitoso para las llamadas de la campaña.
- `scheduled_time_unix` (integer, optional) — Cuándo empieza a llamar la campaña; déjalo sin definir para que empiece al crearse.
- `branch_id` (string, optional) — La rama del agente con la que llama la campaña.
- `environment` (string, optional) — El entorno en el que se resuelven las variables de entorno del agente.
- `target_concurrency_limit` (integer, optional) — El número máximo de llamadas que realiza la campaña a la vez.

### ValidationError

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

### ConversationInitiationClientDataRequestInput

- `conversation_config_override` (ConversationConfigClientOverrideInput, optional)
- `custom_llm_extra_body` (map from string to any, optional)
- `user_id` (string, optional) — ID del usuario final que participa en esta conversación (para identificar al usuario propietario del agente)
- `source_info` (ConversationInitiationSourceInfo, optional) — Información sobre el origen del inicio de la conversación
- `branch_id` (string, optional) — ID de la rama del agente que se utilizará para esta conversación
- `environment` (string, optional) — Entorno que se utilizará para resolver las variables de entorno
- `starting_workflow_node_id` (string, optional) — Si se establece, inicia el workflow en este ID de nodo en lugar de en la entrada predeterminada.
- `procedure_ids` (list of string, optional) — Si se establece, solo estos procedimientos estarán disponibles para el agente inicial. Cada ID debe estar vinculado a ese agente; los ID desconocidos impedirán el inicio de la conversación. Una lista vacía desactiva todos los procedimientos de ese agente. No se aplica después de transferir un agente. Requiere enable_procedure_ids_from_client.
- `start_procedure_ids` (list of string, optional) — Si se establece, estos procedimientos de formato libre se inician al comenzar la conversación. Admite como máximo cinco ID. Cada ID debe estar disponible después de aplicar procedure_ids. Los ID desconocidos y los procedimientos estructurados impiden el inicio de la conversación. Requiere enable_procedure_ids_from_client.
- `dynamic_variables` (map from string to any, optional)

### PhoneVoiceConfigInput

- `ringing_timeout_secs` (integer, optional, default: 60) — Durante cuántos segundos sonará la llamada al destinatario antes de desistir. Ten en cuenta que también estará limitado por las restricciones del proveedor.
- `twilio_call_recording_enabled` (boolean, optional, default: false) — Si se graba la llamada mediante la grabación de llamadas de Twilio. Se ignora para proveedores que no sean Twilio. Las grabaciones se almacenan en tu cuenta de Twilio.
- `twilio_machine_detection` (TwilioMachineDetectionConfig, optional) — Configuración de la detección de contestadores automáticos (AMD) de Twilio a nivel de operador. Omítela o establécela en null para desactivarla. Se ignora para proveedores que no sean Twilio y para llamadas entrantes. El resultado se entrega como su propio evento de webhook `answering_machine_detection`, lo que requiere habilitar ese evento en la configuración de webhooks del espacio de trabajo o del agente; no forma parte de la conversación ni del webhook posterior a la llamada. La detección se ejecuta de forma asíncrona, por lo que nunca retrasa el inicio de la conversación, y el resultado puede llegar en cualquier momento durante la llamada -- con `detect_message_end`, incluso después de que haya finalizado. Twilio factura AMD por separado.
- `mode` ("voice", optional)

### SubmitWhatsAppChannelConfigModeConfig

- `mode`: `message`
  - `template` (SubmitWhatsAppTemplateRef, required) — Indica el nombre de la plantilla de Meta aprobada que se enviará. El servidor carga la propia plantilla, por lo que el cliente nunca proporciona sus componentes.
- `mode`: `voice`
  - `whatsapp_call_permission_request_template_language_code` (string, required) — El código de idioma de esa plantilla.
  - `whatsapp_call_permission_request_template_name` (string, required) — La plantilla aprobada que solicita al contacto permiso para llamar.

### DataCollectionOutcomeEqualsItem

- string
- integer
- double
- boolean

### RetryPolicy

- `retry_delay_seconds` (integer, optional, default: 600) — Cuánto esperar antes de un reintento breve.
- `max_short_retries` (integer, optional, default: 1) — Reintentos que permite una franja de llamada tras una llamada fallida. Cuando se agotan, el siguiente reintento espera a la siguiente franja, que comienza de nuevo.
- `max_total_calls` (integer, optional, default: 6) — El número máximo de llamadas que recibe un contacto, incluida la primera.
- `max_callbacks` (integer, optional, default: 2) — El número máximo de devoluciones de llamada que se atenderán para un número.
- `max_redirects` (integer, optional, default: 2) — El número máximo de veces que un contacto sigue una solicitud para llamar a otro número.
- `interval_placement` (enum, optional, default: start) — En qué punto de una franja horaria posterior se realizará una llamada aplazada: en su `start`, en un momento `random` o con `rotate`, `rotate_step_seconds` después de donde falló la última llamada en esa franja.
  - Allowed values: `start`, `random`, `rotate`
- `rotate_step_seconds` (integer, optional, default: 900) — Cuánto desplaza cada llamada la asignación `rotate`. Solo se usa con `rotate`.
- `max_consecutive_failures_per_number` (integer, optional) — Llamadas consecutivas a un número que pueden fallar antes de que el contacto pase al siguiente número de su lista o finalice si no hay otro. Una llamada contestada o una redirección a un número nuevo reinicia el recuento. Si no se establece, solo se aplica `max_total_calls`.

### CallingPeriod

- `weekdays` (list of integer, required) — Días en que se aplican los intervalos, de `0` (lunes) a `6` (domingo).
- `intervals` (list of CallingIntervalPolicy, required) — Franjas horarias en cada uno de esos días. No pueden solaparse en ningún día.

### DataCollectionConfig

Los elementos de recopilación de datos del agente que guían las llamadas de seguimiento. Cada uno usa de forma predeterminada el elemento integrado para su propósito; `null` lo desactiva.

- `callback_time` (string, optional) — El elemento que indica cuándo el contacto solicitó una devolución de llamada.
- `redirect_phone_number` (string, optional) — El elemento que contiene otro número al que el contacto solicitó que se le llamara.
- `stop` (string, optional) — El elemento que es true cuando el contacto solicitó no volver a recibir llamadas.
- `mappings` (map from string to string, optional) — Copia los resultados de recopilación de datos en variables dinámicas para llamadas posteriores: cada clave es un ID de elemento de recopilación de datos y su valor es el nombre de la variable.

### FollowupContextPolicy

Qué variables dinámicas `campaign__` reciben las llamadas de seguimiento.

- `call_type` (boolean, optional, default: true) — Pasa el tipo de llamada como `campaign__call_type`.
- `previous_conversation_id` (boolean, optional, default: true) — Pasa el ID de la última conversación como `campaign__previous_conversation_id`.
- `previous_summary` (boolean, optional, default: true) — Pasa el resumen de la última conversación como `campaign__previous_summary`.
- `previous_transcript` (boolean, optional, default: true) — Pasa la transcripción de la última conversación como `campaign__previous_transcript`.

### CampaignResponseChannelConfig

- `channel`: `phone`
  - `agent_phone_number_id` (string, required) — El número de teléfono desde el que llamar.
  - `mode_config` (PhoneVoiceConfigOutput, optional)
- `channel`: `whatsapp`
  - `mode_config` (WhatsAppChannelConfigModeConfig, required)
  - `whatsapp_phone_number_id` (string, required) — El número de teléfono de WhatsApp desde el que llamar o enviar mensajes.

### CampaignPolicySnapshot

La política que adoptó la campaña al crearse, con la misma estructura que una `policy` enviada.

- `timezone` (string, required)
- `retry` (RetryPolicy, required)
- `calling_periods` (list of CallingPeriodPolicy, required)
- `data_collection` (DataCollectionPolicy, required)
- `followup_context` (FollowupContextPolicy, required) — Qué variables dinámicas `campaign__` reciben las llamadas de seguimiento.

### CampaignSummaryCounts

- `leads` (integer, required)
- `terminal_leads` (integer, required) — Contactos a los que no se volverá a llamar.
- `open_attention` (integer, required) — Elementos de atención aún no resueltos.
- `delivery` (RecipientDeliveryCounts, optional) — Cuántos mensajes han alcanzado cada fase; se establece al obtener una campaña de mensajes.

### CampaignResponseOutcome

- `type`: `data_collection`
  - `data_collection_id` (string, required) — El elemento de recopilación de datos del agente que establece una llamada satisfactoria.
  - `equals` (list of DataCollectionOutcomeEqualsItem, required) — Valores que se consideran exitosos, todos del tipo del elemento.
- `type`: `evaluation_criteria`
  - `criteria_id` (string, required) — El criterio de evaluación del agente que cumple una llamada satisfactoria.

### ValidationErrorLocItem

- string
- integer

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

### ConversationInitiationSourceInfo

Información sobre el origen del inicio de la conversación

- `source` (enum, optional, default: unknown) — Origen del inicio de la conversación
  - Allowed values: `unknown`, `android_sdk`, `node_js_sdk`, `react_native_sdk`, `react_sdk`, `js_sdk`, `python_sdk`, `widget`, `sip_trunk`, `twilio`, `exotel`, `genesys`, `avaya`, `audiocodes`, `swift_sdk`, `whatsapp`, `twilio_sms`, `flutter_sdk`, `zendesk_integration`, `slack_integration`, `telegram_integration`, `intercom_integration`, `freshdesk_integration`, `salesforce_integration`, `template_preview`, `genesys_bot_connector`, `subagent_tool`
- `version` (string, optional) — El número de versión del SDK

### TwilioMachineDetectionConfig

Cómo ejecutar la detección de contestadores automáticos (AMD) a nivel de operador de Twilio en una llamada.

- `mode` (enum, optional, default: enable) — El grado de exhaustividad de la detección. `enable` devuelve un veredicto en cuanto Twilio puede distinguir a una persona de una máquina. `detect_message_end` también espera a que termine el saludo del buzón de voz, lo que produce los veredictos `machine_end_*`, pero devuelve el resultado más tarde.
  - Allowed values: `enable`, `detect_message_end`
- `actions` (list of TwilioMachineDetectionRule, optional) — Acciones que se deben realizar en la llamada según el veredicto de AMD. Cada acción puede aparecer como máximo en una regla, así que incluye todos sus veredictos juntos. Los veredictos sin regla dejan la llamada en curso.

### SubmitWhatsAppTemplateRef

Indica el nombre de la plantilla de Meta aprobada que se enviará. El servidor carga la propia plantilla, por lo que el cliente nunca proporciona sus componentes.

- `name` (string, required)
- `language` (string, required) — El código de idioma de la plantilla, como `en_US`.

### CallingIntervalPolicy

- `start` (string, required) — Hora local de inicio, como `HH:MM`.
- `end` (string, required) — Hora local de finalización, como `HH:MM`; `24:00` finaliza a medianoche.

### PhoneVoiceConfigOutput

- `ringing_timeout_secs` (integer, optional, default: 60) — Durante cuántos segundos sonará la llamada al destinatario antes de desistir. Ten en cuenta que también estará limitado por las restricciones del proveedor.
- `twilio_call_recording_enabled` (boolean, optional, default: false) — Si se graba la llamada mediante la grabación de llamadas de Twilio. Se ignora para proveedores que no sean Twilio. Las grabaciones se almacenan en tu cuenta de Twilio.
- `twilio_machine_detection` (TwilioMachineDetectionConfig, optional) — Configuración de la detección de contestadores automáticos (AMD) de Twilio a nivel de operador. Omítela o establécela en null para desactivarla. Se ignora para proveedores que no sean Twilio y para llamadas entrantes. El resultado se entrega como su propio evento de webhook `answering_machine_detection`, lo que requiere habilitar ese evento en la configuración de webhooks del espacio de trabajo o del agente; no forma parte de la conversación ni del webhook posterior a la llamada. La detección se ejecuta de forma asíncrona, por lo que nunca retrasa el inicio de la conversación, y el resultado puede llegar en cualquier momento durante la llamada -- con `detect_message_end`, incluso después de que haya finalizado. Twilio factura AMD por separado.
- `mode` ("voice", optional)

### WhatsAppChannelConfigModeConfig

- `mode`: `message`
  - `template` (WhatsAppTemplate, required) — La plantilla de Meta tal como se aprobó en el momento del envío.
- `mode`: `voice`
  - `whatsapp_call_permission_request_template_language_code` (string, required) — El código de idioma de esa plantilla.
  - `whatsapp_call_permission_request_template_name` (string, required) — La plantilla aprobada que solicita al contacto permiso para llamar.

### CallingPeriodPolicy

- `weekdays` (list of integer, required)
- `intervals` (list of CallingIntervalPolicy, required) — Franjas horarias en cada uno de esos días. No pueden solaparse en ningún día.

### DataCollectionPolicy

- `callback_time` (string, optional)
- `redirect_phone_number` (string, optional)
- `stop` (string, optional)
- `mappings` (map from string to string, optional) — Copia los resultados de recopilación de datos en variables dinámicas para llamadas posteriores: cada clave es un ID de elemento de recopilación de datos y su valor es el nombre de la variable.

### RecipientDeliveryCounts

- `sent` (integer, optional, default: 0)
- `delivered` (integer, optional, default: 0)
- `read` (integer, optional, default: 0)
- `replied` (integer, optional, default: 0)
- `failed` (integer, optional, default: 0)

### 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.
- `noisy_environment_message` (string, optional) — Lo que dice el agente cuando detecta un entorno ruidoso.

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

### TwilioMachineDetectionRule

Acción que se debe realizar en una llamada en curso para los veredictos de AMD indicados.

- `action` ("hang_up", required)
- `answered_by` (list of enum, required) — Veredictos que activan la acción.
  - Allowed values: `human`, `fax`, `unknown`, `machine_start`, `machine_end_beep`, `machine_end_silence`, `machine_end_other`

### WhatsAppTemplate

- `name` (string, required)
- `language` (string, required) — https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/supported-languages
- `components` (list of WhatsAppTemplateComponent, required)
- `parameter_format` (enum, optional, default: POSITIONAL)
  - Allowed values: `POSITIONAL`, `NAMED`
- `category` (string, optional) — https://developers.facebook.com/docs/graph-api/reference/whats-app-business-account/message_templates/

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

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

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

### 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-6.1-terra`, `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

### WhatsAppTemplateComponent

- `type` (string, required)
- `format` (string, optional)
- `text` (string, optional)
- `buttons` (list of WhatsAppTemplateComponentButton, optional)

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

### WhatsAppTemplateComponentButton

- `type` (string, required)
- `text` (string, optional)
- `url` (string, optional)

## Examples

**Request**

```json
{
  "call_name": "call_name",
  "agent_id": "agent_id",
  "recipients": [
    {}
  ],
  "channel_config": {
    "channel": "phone",
    "agent_phone_number_id": "agent_phone_number_id"
  }
}
```

**Response**

```json
{
  "campaign": {
    "campaign_id": "campaign_id",
    "call_name": "call_name",
    "agent_id": "agent_id",
    "channel_config": {
      "channel": "phone",
      "agent_phone_number_id": "agent_phone_number_id"
    },
    "status": "active",
    "policy": {
      "timezone": "timezone",
      "retry": {},
      "calling_periods": [
        {
          "weekdays": [
            1
          ],
          "intervals": [
            {
              "start": "start",
              "end": "end"
            }
          ]
        }
      ],
      "data_collection": {},
      "followup_context": {}
    },
    "variant": "simple",
    "created_at_unix": 1,
    "updated_at_unix": 1,
    "channel": "phone",
    "mode": "voice",
    "counts": {
      "leads": 1,
      "terminal_leads": 1,
      "open_attention": 1
    },
    "agent_name": "agent_name",
    "source": "ui",
    "outcome": {
      "type": "data_collection",
      "data_collection_id": "data_collection_id",
      "equals": [
        "equals"
      ]
    },
    "scheduled_time_unix": 1,
    "branch_id": "branch_id",
    "environment": "environment",
    "target_concurrency_limit": 1
  },
  "created": true,
  "within_calling_window": true
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/convai/outbound-campaigns/campaigns/submit"

payload = {
    "call_name": "call_name",
    "agent_id": "agent_id",
    "recipients": [{}],
    "channel_config": {
        "channel": "phone",
        "agent_phone_number_id": "agent_phone_number_id"
    }
}
headers = {"Content-Type": "application/json"}

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

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/convai/outbound-campaigns/campaigns/submit';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"call_name":"call_name","agent_id":"agent_id","recipients":[{}],"channel_config":{"channel":"phone","agent_phone_number_id":"agent_phone_number_id"}}'
};

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/outbound-campaigns/campaigns/submit"

	payload := strings.NewReader("{\n  \"call_name\": \"call_name\",\n  \"agent_id\": \"agent_id\",\n  \"recipients\": [\n    {}\n  ],\n  \"channel_config\": {\n    \"channel\": \"phone\",\n    \"agent_phone_number_id\": \"agent_phone_number_id\"\n  }\n}")

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

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

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

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

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

}
```

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

url = URI("https://api.elevenlabs.io/v1/convai/outbound-campaigns/campaigns/submit")

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  \"call_name\": \"call_name\",\n  \"agent_id\": \"agent_id\",\n  \"recipients\": [\n    {}\n  ],\n  \"channel_config\": {\n    \"channel\": \"phone\",\n    \"agent_phone_number_id\": \"agent_phone_number_id\"\n  }\n}"

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

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

HttpResponse<String> response = Unirest.post("https://api.elevenlabs.io/v1/convai/outbound-campaigns/campaigns/submit")
  .header("Content-Type", "application/json")
  .body("{\n  \"call_name\": \"call_name\",\n  \"agent_id\": \"agent_id\",\n  \"recipients\": [\n    {}\n  ],\n  \"channel_config\": {\n    \"channel\": \"phone\",\n    \"agent_phone_number_id\": \"agent_phone_number_id\"\n  }\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/convai/outbound-campaigns/campaigns/submit', [
  'body' => '{
  "call_name": "call_name",
  "agent_id": "agent_id",
  "recipients": [
    {}
  ],
  "channel_config": {
    "channel": "phone",
    "agent_phone_number_id": "agent_phone_number_id"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/convai/outbound-campaigns/campaigns/submit");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"call_name\": \"call_name\",\n  \"agent_id\": \"agent_id\",\n  \"recipients\": [\n    {}\n  ],\n  \"channel_config\": {\n    \"channel\": \"phone\",\n    \"agent_phone_number_id\": \"agent_phone_number_id\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "call_name": "call_name",
  "agent_id": "agent_id",
  "recipients": [[]],
  "channel_config": [
    "channel": "phone",
    "agent_phone_number_id": "agent_phone_number_id"
  ]
] as [String : Any]

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

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/convai/outbound-campaigns/campaigns/submit")! 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()
```