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

# Outbound-Kampagne erstellen

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

Erstellt eine Outbound-Kampagne, die jeden Empfänger mit dem Agenten anruft oder ihm Nachrichten sendet, innerhalb der Anruffenster der Richtlinie und mit den erlaubten Wiederholungen und Nachfassaktionen. Gibt für eine neue Kampagne `201` zurück. Eine wiederholte Anfrage, die über `idempotency_key` oder andernfalls über ihren Body abgeglichen wird, gibt die bestehende Kampagne mit `created` auf false zurück.

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) — Der Name der Kampagne.
- `agent_id` (string, required) — Der Agent, der die Anrufe tätigt.
- `recipients` (list of SubmitCampaignRecipient, required) — Wer angerufen werden soll. Jeder Empfänger wird zu einem Lead der Kampagne.
- `channel_config` (SubmitCampaignRequestChannelConfig, required)
- `scheduled_time_unix` (integer, optional) — Zeitpunkt, zu dem Anrufe beginnen sollen; weglassen, um sofort zu starten. Anrufe warten weiterhin auf das nächste Anruffenster.
- `timezone` (string, optional) — IANA-Zeitzone zum Lesen der Anruffenster, die die der Richtlinie überschreibt.
- `branch_id` (string, optional) — Der Agent-Zweig, mit dem angerufen wird.
- `environment` (string, optional) — Die Umgebung, in der die Umgebungsvariablen des Agenten aufgelöst werden sollen.
- `target_concurrency_limit` (integer, optional) — Die maximale Anzahl gleichzeitig zu tätigender Anrufe.
- `idempotency_key` (string, optional) — Macht die Anfrage sicher wiederholbar: Eine Wiederholung mit demselben Schlüssel gibt die erstellte Kampagne zurück.
- `outcome` (SubmitCampaignRequestOutcome, optional) — Das Ergebnis, das für die Anrufe der Kampagne als Erfolg zählt.
- `policy` (PolicyConfigInput, optional) — Richtlinie, die für die Kampagne als Snapshot gespeichert wird. Wenn sie gesetzt ist, hat sie Vorrang vor dem Workspace-Standard und allen Überschreibungen pro Agent; wenn sie nicht gesetzt ist, muss die Workspace-Konfiguration vorhanden sein und stellt die Richtlinie bereit.
- `variant` (enum, optional) — `simple` führt einen Versuch pro Empfänger mit durchgehend offenen Anruffenstern durch und erfasst keine Daten; es kann nicht mit `policy` kombiniert werden. `advanced` verwendet `policy` oder die Workspace-Konfiguration und ist der Standard für Telefonkampagnen.
  - Allowed values: `simple`, `advanced`

## Response

### 200

Erfolgreiche Antwort

- `campaign` (CampaignResponse, required)
- `created` (boolean, required) — False, wenn die Anfrage eine frühere wiederholt und deren Kampagne zurückgegeben hat.
- `within_calling_window` (boolean, required) — Ob Anrufe sofort beginnen, statt erst im nächsten Anruffenster.

## Errors

### 422 Outbound Campaigns Create Request Unprocessable Entity Error

Validierungsfehler

- `detail` (list of ValidationError, optional)

## Types

### SubmitCampaignRecipient

- `phone_number` (string, optional) — Die anzurufende Nummer im E.164-Format, etwa `+14155550100`.
- `phone_numbers` (list of string, optional) — Weitere anzurufende Nummern in der Reihenfolge nach `phone_number`. Der Lead wechselt zur nächsten, wenn Anrufe an die aktuelle Nummer weiterhin fehlschlagen.
- `whatsapp_user_id` (string, optional) — Die WhatsApp-Benutzer-ID der Kontaktperson. WhatsApp-Kampagnen verwenden sie anstelle der Telefonnummern.
- `id` (string, optional) — Ihre Kennung für den Empfänger, die als `recipient_id` des Leads zurückgegeben wird.
- `conversation_initiation_client_data` (ConversationInitiationClientDataRequestInput, optional) — Dynamische Variablen und Überschreibungen für die Anrufe dieses Empfängers.

### SubmitCampaignRequestChannelConfig

- `channel`: `phone`
  - `agent_phone_number_id` (string, required) — Die Telefonnummer, von der aus angerufen wird.
  - `mode_config` (PhoneVoiceConfigInput, optional)
- `channel`: `whatsapp`
  - `mode_config` (SubmitWhatsAppChannelConfigModeConfig, required)
  - `whatsapp_phone_number_id` (string, required) — Die WhatsApp-Telefonnummer, über die Anrufe oder Nachrichten erfolgen.

### SubmitCampaignRequestOutcome

- `type`: `data_collection`
  - `data_collection_id` (string, required) — Das Datenerfassungselement des Agenten, das ein erfolgreicher Anruf setzt.
  - `equals` (list of DataCollectionOutcomeEqualsItem, required) — Werte, die als Erfolg zählen und alle dem Typ des Elements entsprechen.
- `type`: `evaluation_criteria`
  - `criteria_id` (string, required) — Das Bewertungskriterium des Agenten, das ein erfolgreicher Anruf erfüllt.

### PolicyConfigInput

- `timezone` (string, optional, default: UTC) — IANA-Zeitzone, in der die Anrufzeiträume gelesen werden.
- `retry` (RetryPolicy, optional)
- `calling_periods` (list of CallingPeriod, optional) — Die wöchentlichen Zeitfenster, in denen Anrufe getätigt werden dürfen.
- `data_collection` (DataCollectionConfig, optional) — Die Datenerfassungselemente des Agenten, die Nachfassanrufe steuern. Jedes verwendet standardmäßig das integrierte Element für seinen Zweck; `null` deaktiviert es.
- `followup_context` (FollowupContextPolicy, optional) — Welche dynamischen Variablen `campaign__` Folgeanrufe erhalten.

### CampaignResponse

- `campaign_id` (string, required)
- `call_name` (string, required) — Der Name der Kampagne.
- `agent_id` (string, required)
- `channel_config` (CampaignResponseChannelConfig, required)
- `status` (enum, required) — `attention` bedeutet, dass ein offener Prüfpunkt einige Anrufe der Kampagne zurückhält, während die übrigen fortgesetzt werden. `stopping` bedeutet, dass geplante Anrufe abgebrochen werden und bereits gestartete Anrufe beendet werden.
  - Allowed values: `active`, `paused`, `stopping`, `stopped`, `completed`, `failed`, `attention`
- `policy` (CampaignPolicySnapshot, required) — Die Richtlinie, die die Kampagne bei ihrer Erstellung verwendet hat.
- `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) — Ob die Kampagne in der App oder über die API erstellt wurde.
  - Allowed values: `ui`, `api`
- `outcome` (CampaignResponseOutcome, optional) — Das Ergebnis, das für die Anrufe der Kampagne als Erfolg zählt.
- `scheduled_time_unix` (integer, optional) — Zeitpunkt, zu dem die Kampagne mit Anrufen beginnt; nicht gesetzt, um nach der Erstellung zu starten.
- `branch_id` (string, optional) — Der Agent-Zweig, mit dem die Kampagne anruft.
- `environment` (string, optional) — Die Umgebung, in der die Umgebungsvariablen des Agenten aufgelöst werden.
- `target_concurrency_limit` (integer, optional) — Die maximale Anzahl von Anrufen, die die Kampagne gleichzeitig tätigt.

### 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 des Endnutzers, der an dieser Unterhaltung teilnimmt (zur Nutzeridentifikation des Agent-Eigentümers)
- `source_info` (ConversationInitiationSourceInfo, optional) — Informationen über die Quelle der Gesprächsinitiierung
- `branch_id` (string, optional) — ID des Agent-Branches, der für diese Unterhaltung verwendet werden soll
- `environment` (string, optional) — Umgebung zum Auflösen von Umgebungsvariablen
- `starting_workflow_node_id` (string, optional) — Falls gesetzt, startet der Workflow an dieser Knoten-ID statt am Standardeinstieg.
- `procedure_ids` (list of string, optional) — Wenn gesetzt, stehen dem startenden Agenten nur diese Prozeduren zur Verfügung. Jede ID muss diesem Agenten zugeordnet sein. Unbekannte IDs verhindern den Start der Unterhaltung. Eine leere Liste deaktiviert alle Prozeduren dieses Agenten. Wird nach einer Agentenübertragung nicht angewendet. Erfordert enable_procedure_ids_from_client.
- `start_procedure_ids` (list of string, optional) — Wenn gesetzt, starten diese Freiformverfahren mit Beginn des Gesprächs. Akzeptiert höchstens fünf IDs. Jede ID muss nach Anwendung von procedure_ids verfügbar sein. Unbekannte IDs und strukturierte Verfahren führen zum Fehlschlagen des Gesprächsstarts. Erfordert enable_procedure_ids_from_client.
- `dynamic_variables` (map from string to any, optional)

### PhoneVoiceConfigInput

- `ringing_timeout_secs` (integer, optional, default: 60) — Wie lange der Empfänger vor dem Abbruch in Sekunden klingeln soll. Beachten Sie, dass dies auch durch die Einschränkungen des Anbieters begrenzt wird.
- `twilio_call_recording_enabled` (boolean, optional, default: false) — Ob der Anruf mit der Anrufaufzeichnung von Twilio aufgezeichnet werden soll. Wird für Anbieter außer Twilio ignoriert. Aufzeichnungen werden in Ihrem Twilio-Konto gespeichert.
- `twilio_machine_detection` (TwilioMachineDetectionConfig, optional) — Konfiguration für Twilios netzbetreiberseitige Anrufbeantwortererkennung (AMD). Weglassen oder auf null setzen, um sie zu deaktivieren. Wird für andere Anbieter als Twilio und für eingehende Anrufe ignoriert. Das Ergebnis wird als eigenes Webhook-Ereignis `answering_machine_detection` übermittelt. Dafür muss dieses Ereignis in den Webhook-Einstellungen des Workspace oder Agents aktiviert sein; es ist nicht Teil der Unterhaltung oder des Post-Call-Webhooks. Die Erkennung läuft asynchron und verzögert daher nie den Beginn der Unterhaltung. Das Ergebnis kann zu jedem Zeitpunkt während des Anrufs eintreffen -- mit `detect_message_end` sogar nach dessen Ende. Twilio berechnet AMD separat.
- `mode` ("voice", optional)

### SubmitWhatsAppChannelConfigModeConfig

- `mode`: `message`
  - `template` (SubmitWhatsAppTemplateRef, required) — Gibt die zu sendende genehmigte Meta-Vorlage an. Der Server lädt die Vorlage selbst, daher stellt der Client ihre Komponenten nie bereit.
- `mode`: `voice`
  - `whatsapp_call_permission_request_template_language_code` (string, required) — Der Sprachcode dieser Vorlage.
  - `whatsapp_call_permission_request_template_name` (string, required) — Die genehmigte Vorlage, die die Kontaktperson um Erlaubnis zum Anrufen bittet.

### DataCollectionOutcomeEqualsItem

- string
- integer
- double
- boolean

### RetryPolicy

- `retry_delay_seconds` (integer, optional, default: 600) — Wie lange vor einem kurzen Wiederholungsversuch gewartet wird.
- `max_short_retries` (integer, optional, default: 1) — Wiederholungsversuche, die ein Anruffenster nach einem fehlgeschlagenen Anruf erlaubt. Sobald sie aufgebraucht sind, wartet der nächste Wiederholungsversuch auf das folgende Fenster, das erneut beginnt.
- `max_total_calls` (integer, optional, default: 6) — Die maximale Anzahl von Anrufen für einen Lead, einschließlich des ersten.
- `max_callbacks` (integer, optional, default: 2) — Die maximale Anzahl von Rückrufen, die für eine Nummer berücksichtigt wird.
- `max_redirects` (integer, optional, default: 2) — Die maximale Anzahl, wie oft ein Lead einer Anfrage folgt, eine andere Nummer anzurufen.
- `interval_placement` (enum, optional, default: start) — An welcher Stelle in einem späteren Anruffenster ein verschobener Anruf erfolgt: bei `start`, zu einem `random` Zeitpunkt oder um `rotate_step_seconds` nach der Stelle versetzt, an der der letzte Anruf in diesem Fenster fehlgeschlagen ist (`rotate`).
  - Allowed values: `start`, `random`, `rotate`
- `rotate_step_seconds` (integer, optional, default: 900) — Um wie viele Positionen die Platzierung `rotate` jeden Anruf verschiebt. Wird nur von `rotate` verwendet.
- `max_consecutive_failures_per_number` (integer, optional) — Anrufe an eine Nummer, die nacheinander fehlschlagen dürfen, bevor der Lead zur nächsten angegebenen Nummer wechselt oder endet, falls keine weitere vorhanden ist. Ein angenommener Anruf oder eine Weiterleitung an eine neue Nummer setzt die Zählung zurück. Wenn nicht gesetzt, gilt nur `max_total_calls`.

### CallingPeriod

- `weekdays` (list of integer, required) — Tage, an denen die Intervalle gelten, von `0` (Montag) bis `6` (Sonntag).
- `intervals` (list of CallingIntervalPolicy, required) — Zeitfenster an jedem dieser Tage. Sie dürfen sich an keinem Tag überschneiden.

### DataCollectionConfig

Die Datenerfassungselemente des Agenten, die Nachfassanrufe steuern. Jedes verwendet standardmäßig das integrierte Element für seinen Zweck; `null` deaktiviert es.

- `callback_time` (string, optional) — Das Element, das den von der Kontaktperson gewünschten Rückrufzeitpunkt enthält.
- `redirect_phone_number` (string, optional) — Das Element, das eine andere Nummer enthält, unter der die Kontaktperson angerufen werden möchte.
- `stop` (string, optional) — Das Element, das wahr ist, wenn die Kontaktperson darum gebeten hat, nicht erneut angerufen zu werden.
- `mappings` (map from string to string, optional) — Kopiert Ergebnisse der Datenerfassung in dynamische Variablen für spätere Anrufe: Jeder Schlüssel ist eine Datenerfassungselement-ID, sein Wert der Name der Variablen.

### FollowupContextPolicy

Welche dynamischen Variablen `campaign__` Folgeanrufe erhalten.

- `call_type` (boolean, optional, default: true) — Übergeben Sie den Anruftyp als `campaign__call_type`.
- `previous_conversation_id` (boolean, optional, default: true) — Übergeben Sie die ID des letzten Gesprächs als `campaign__previous_conversation_id`.
- `previous_summary` (boolean, optional, default: true) — Übergeben Sie die Zusammenfassung des letzten Gesprächs als `campaign__previous_summary`.
- `previous_transcript` (boolean, optional, default: true) — Übergeben Sie das Transkript des letzten Gesprächs als `campaign__previous_transcript`.

### CampaignResponseChannelConfig

- `channel`: `phone`
  - `agent_phone_number_id` (string, required) — Die Telefonnummer, von der aus angerufen wird.
  - `mode_config` (PhoneVoiceConfigOutput, optional)
- `channel`: `whatsapp`
  - `mode_config` (WhatsAppChannelConfigModeConfig, required)
  - `whatsapp_phone_number_id` (string, required) — Die WhatsApp-Telefonnummer, über die Anrufe oder Nachrichten erfolgen.

### CampaignPolicySnapshot

Die Richtlinie, die die Kampagne bei ihrer Erstellung verwendet hat, dargestellt wie eine übermittelte `policy`.

- `timezone` (string, required)
- `retry` (RetryPolicy, required)
- `calling_periods` (list of CallingPeriodPolicy, required)
- `data_collection` (DataCollectionPolicy, required)
- `followup_context` (FollowupContextPolicy, required) — Welche dynamischen Variablen `campaign__` Folgeanrufe erhalten.

### CampaignSummaryCounts

- `leads` (integer, required)
- `terminal_leads` (integer, required) — Leads, die nicht erneut angerufen werden.
- `open_attention` (integer, required) — Noch nicht gelöste Prüfpunkte.
- `delivery` (RecipientDeliveryCounts, optional) — Wie viele Nachrichten jede Stufe erreicht haben; wird beim Abrufen einer einzelnen Nachrichtenkampagne gesetzt.

### CampaignResponseOutcome

- `type`: `data_collection`
  - `data_collection_id` (string, required) — Das Datenerfassungselement des Agenten, das ein erfolgreicher Anruf setzt.
  - `equals` (list of DataCollectionOutcomeEqualsItem, required) — Werte, die als Erfolg zählen und alle dem Typ des Elements entsprechen.
- `type`: `evaluation_criteria`
  - `criteria_id` (string, required) — Das Bewertungskriterium des Agenten, das ein erfolgreicher Anruf erfüllt.

### ValidationErrorLocItem

- string
- integer

### ConversationConfigClientOverrideInput

- `asr` (AsrConversationalConfigOverride, optional) — Konfiguration für Transkription in Unterhaltungen
- `turn` (TurnConfigOverride, optional) — Konfiguration für Sprecherwechselerkennung
- `tts` (TtsConversationalConfigOverride, optional) — Konfiguration für Text to Speech in Unterhaltungen
- `conversation` (ConversationConfigOverride, optional) — Konfiguration für Unterhaltungsereignisse
- `agent` (AgentConfigOverrideInput, optional) — Agent-spezifische Konfiguration

### ConversationInitiationSourceInfo

Informationen über die Quelle der Gesprächsinitiierung

- `source` (enum, optional, default: unknown) — Quelle der Gesprächsinitiierung
  - 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) — Die SDK-Versionsnummer

### TwilioMachineDetectionConfig

Wie Twilios netzbetreiberseitige Anrufbeantwortererkennung (AMD) bei einem Anruf ausgeführt wird.

- `mode` (enum, optional, default: enable) — Wie gründlich die Erkennung sein soll. `enable` gibt ein Ergebnis zurück, sobald Twilio einen Menschen von einer Maschine unterscheiden kann. `detect_message_end` wartet außerdem, bis die Mailboxansage beendet ist, wodurch die Ergebnisse `machine_end_*` erzeugt werden, liefert aber später ein Ergebnis.
  - Allowed values: `enable`, `detect_message_end`
- `actions` (list of TwilioMachineDetectionRule, optional) — Aktionen, die je AMD-Bewertung während des Anrufs ausgeführt werden. Jede Aktion kann in höchstens einer Regel erscheinen. Führen Sie daher alle zugehörigen Bewertungen gemeinsam auf. Bewertungen ohne Regel lassen den Anruf weiterlaufen.

### SubmitWhatsAppTemplateRef

Gibt die zu sendende genehmigte Meta-Vorlage an. Der Server lädt die Vorlage selbst, daher stellt der Client ihre Komponenten nie bereit.

- `name` (string, required)
- `language` (string, required) — Der Sprachcode der Vorlage, z. B. `en_US`.

### CallingIntervalPolicy

- `start` (string, required) — Lokale Startzeit im Format `HH:MM`.
- `end` (string, required) — Lokale Endzeit im Format `HH:MM`; `24:00` endet um Mitternacht.

### PhoneVoiceConfigOutput

- `ringing_timeout_secs` (integer, optional, default: 60) — Wie lange der Empfänger vor dem Abbruch in Sekunden klingeln soll. Beachten Sie, dass dies auch durch die Einschränkungen des Anbieters begrenzt wird.
- `twilio_call_recording_enabled` (boolean, optional, default: false) — Ob der Anruf mit der Anrufaufzeichnung von Twilio aufgezeichnet werden soll. Wird für Anbieter außer Twilio ignoriert. Aufzeichnungen werden in Ihrem Twilio-Konto gespeichert.
- `twilio_machine_detection` (TwilioMachineDetectionConfig, optional) — Konfiguration für Twilios netzbetreiberseitige Anrufbeantwortererkennung (AMD). Weglassen oder auf null setzen, um sie zu deaktivieren. Wird für andere Anbieter als Twilio und für eingehende Anrufe ignoriert. Das Ergebnis wird als eigenes Webhook-Ereignis `answering_machine_detection` übermittelt. Dafür muss dieses Ereignis in den Webhook-Einstellungen des Workspace oder Agents aktiviert sein; es ist nicht Teil der Unterhaltung oder des Post-Call-Webhooks. Die Erkennung läuft asynchron und verzögert daher nie den Beginn der Unterhaltung. Das Ergebnis kann zu jedem Zeitpunkt während des Anrufs eintreffen -- mit `detect_message_end` sogar nach dessen Ende. Twilio berechnet AMD separat.
- `mode` ("voice", optional)

### WhatsAppChannelConfigModeConfig

- `mode`: `message`
  - `template` (WhatsAppTemplate, required) — Die Meta-Vorlage in der bei der Übermittlung genehmigten Form.
- `mode`: `voice`
  - `whatsapp_call_permission_request_template_language_code` (string, required) — Der Sprachcode dieser Vorlage.
  - `whatsapp_call_permission_request_template_name` (string, required) — Die genehmigte Vorlage, die die Kontaktperson um Erlaubnis zum Anrufen bittet.

### CallingPeriodPolicy

- `weekdays` (list of integer, required)
- `intervals` (list of CallingIntervalPolicy, required) — Zeitfenster an jedem dieser Tage. Sie dürfen sich an keinem Tag überschneiden.

### DataCollectionPolicy

- `callback_time` (string, optional)
- `redirect_phone_number` (string, optional)
- `stop` (string, optional)
- `mappings` (map from string to string, optional) — Kopiert Ergebnisse der Datenerfassung in dynamische Variablen für spätere Anrufe: Jeder Schlüssel ist eine Datenerfassungselement-ID, sein Wert der Name der Variablen.

### 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) — Schlüsselwörter, deren Vorhersagewahrscheinlichkeit erhöht werden soll

### TurnConfigOverride

- `soft_timeout_config` (SoftTimeoutConfigOverride, optional) — Konfiguration für die Soft-Timeout-Funktion. Liefert sofortiges Feedback bei längeren LLM-Antworten.
- `noisy_environment_message` (string, optional) — Was der Agent sagt, wenn er eine laute Umgebung erkennt.

### TtsConversationalConfigOverride

- `model_id` (enum, optional, default: eleven_v4_turbo) — Das für TTS zu verwendende Modell
  - 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) — Die für TTS zu verwendende Stimmen-ID
- `supported_voices` (list of SupportedVoice, optional) — Zusätzlich unterstützte Stimmen für den Agenten
- `stability` (double, optional) — Die Stabilität der generierten Sprache
- `speed` (double, optional) — Die Geschwindigkeit der generierten Sprache
- `similarity_boost` (double, optional) — Der Ähnlichkeits-Boost für generierte Sprache
- `pronunciation_dictionary_locators` (list of PydanticPronunciationDictionaryVersionLocator, optional) — Die Referenzen auf Aussprachewörterbücher

### ConversationConfigOverride

- `text_only` (boolean, optional) — Wenn aktiviert, wird Audio nicht verarbeitet und nur Text verwendet. Verwenden Sie dies, um Audiokosten zu vermeiden.
- `max_duration_seconds` (integer, optional) — Die maximale Dauer einer Unterhaltung in Sekunden

### AgentConfigOverrideInput

- `first_message` (string, optional) — Wenn nicht leer, die erste Nachricht, die der Agent sagt. Wenn leer, wartet der Agent, bis der Nutzer die Unterhaltung beginnt.
- `language` (string, optional) — Sprache des Agenten – verwendet für ASR und TTS
- `max_conversation_duration_message` (string, optional) — Wenn nicht leer, die Nachricht, die der Agent sendet, wenn die maximale Gesprächsdauer erreicht ist.
- `prompt` (PromptAgentApiModelOverrideInput, optional) — Der Prompt für den Agenten

### TwilioMachineDetectionRule

Aktion, die bei einem aktiven Anruf für die angegebenen AMD-Bewertungen ausgeführt wird.

- `action` ("hang_up", required)
- `answered_by` (list of enum, required) — Bewertungen, die die Aktion auslösen.
  - 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) — Nachricht, die angezeigt wird, wenn beim Warten auf die LLM-Antwort der erste weiche Timeout erreicht wird. Unterstützt dynamische Variablen (z. B. \{\{system\_\_time}}, \{\{custom\_variable}}).
- `additional_soft_timeout_messages` (list of string, optional) — Zusätzliche statische Füllnachrichten für nachfolgende Soft-Timeouts in derselben LLM-Generierung. Das erste Timeout verwendet `message`. Wenn weniger Nachrichten als `max_soft_timeouts_per_generation` konfiguriert sind, wird die zuletzt konfigurierte Nachricht wiederholt; andernfalls wird eine integrierte Füllnachricht verwendet.

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

Eine Referenz, damit andere Dokumente auf ein bestimmtes Wörterbuch und dessen Version verweisen können. Dies ist eine Pydantic-Version von PronunciationDictionaryVersionLocatorDBModel. Erforderlich, um die Kompatibilität mit den übrigen Agent-Datenmodellen sicherzustellen.

- `pronunciation_dictionary_id` (string, required) — Die ID des Aussprachewörterbuchs
- `version_id` (string, optional) — Die ID der Version des Aussprachewörterbuchs

### PromptAgentApiModelOverrideInput

- `prompt` (string, optional) — Der Prompt für den Agenten
- `llm` (enum, optional) — Das LLM, das mit dem Prompt und dem Chatverlauf abgefragt wird. Bei Verwendung von Datenresidenz muss das LLM in der Datenresidenzumgebung unterstützt werden.
  - 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) — Eine Liste der IDs von Tools, die der Agent verwendet
- `tool_ids_strict` (boolean, optional) — Gilt nur als Überschreibung für eine Unterhaltung und ist zulässig, wenn tool_ids überschrieben werden dürfen. Wenn true, enthält die überschreibende tool_ids die vollständige Liste der in der Unterhaltung erlaubten Tools, einschließlich der Tools in Workflow-Knoten. Wird ignoriert, wenn es für den Agenten festgelegt ist.
- `native_mcp_server_ids` (list of string, optional) — Eine Liste der nativen MCP-Server-IDs, die der Agent verwenden soll
- `knowledge_base` (list of KnowledgeBaseLocator, optional) — Eine Liste der Wissensdatenbanken, die der Agent verwenden soll

### WhatsAppTemplateComponent

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

### KnowledgeBaseLocator

- `type` (enum, required) — Der Typ der Wissensdatenbank
  - Allowed values: `file`, `url`, `text`, `folder`
- `name` (string, required) — Der Name der Wissensdatenbank
- `id` (string, required) — Die ID der Wissensdatenbank
- `usage_mode` (enum, optional, default: auto) — Der Nutzungsmodus der Wissensdatenbank
  - 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()
```