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

# Skapa en utgående kampanj

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

Skapa en utgående kampanj som ringer upp eller skickar meddelanden till varje mottagare med agenten, inom policyns samtalsfönster, med nya försök och uppföljningar enligt vad som tillåts. Returnerar `201` för en ny kampanj. En upprepad begäran, som matchas via `idempotency_key` eller annars via sin brödtext, returnerar den befintliga kampanjen med `created` satt till false.

Reference: https://elevenlabs.io/docs/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 a SubmitCampaignRequest.

- `call_name` (string, required) — Kampanjens namn.
- `agent_id` (string, required) — Agenten som genomför samtalen.
- `recipients` (list of SubmitCampaignRecipient, required) — Vem som ska ringas. Varje mottagare blir ett lead i kampanjen.
- `channel_config` (SubmitCampaignRequestChannelConfig, required)
- `scheduled_time_unix` (integer, optional, nullable) — När uppringningen ska börja; utelämna för att börja nu. Samtal väntar fortfarande på nästa tidsfönster för uppringning.
- `timezone` (string, optional, nullable) — IANA-tidszon att läsa samtalsfönstren i, som åsidosätter policyns.
- `branch_id` (string, optional, nullable) — Agentgrenen att ringa med.
- `environment` (string, optional, nullable) — Miljön där agentens miljövariabler ska lösas.
- `target_concurrency_limit` (integer, optional, nullable) — Det högsta antalet samtal att genomföra samtidigt.
- `idempotency_key` (string, optional, nullable) — Gör begäran säker att försöka igen: en upprepning med samma nyckel returnerar kampanjen den skapade.
- `outcome` (SubmitCampaignRequestOutcome, optional, nullable) — Resultatet som räknas som lyckat för kampanjens samtal.
- `policy` (PolicyConfig-Input, optional, nullable) — Policy att spara som en ögonblicksbild för kampanjen. När den anges har den företräde framför arbetsytans standard och eventuella åsidosättningar per agent; när den utelämnas måste arbetsytans konfiguration finnas och tillhandahåller policyn.
- `variant` (enum, optional, nullable) — `simple` gör ett försök per mottagare med alltid öppna samtalsfönster och utan att samla in något, och kan inte kombineras med `policy`. `advanced` använder `policy` eller arbetsytans konfiguration och är standard för telefonkampanjer.
  - Allowed values: `simple`, `advanced`

## Response

### 200

Lyckat svar

- `campaign` (CampaignResponse, required)
- `created` (boolean, required) — False när begäran upprepade en tidigare begäran och returnerade dess kampanj.
- `within_calling_window` (boolean, required) — Om uppringningen börjar direkt i stället för vid nästa tidsfönster för uppringning.

## Errors

### 422 Unprocessable Entity Error

Valideringsfel

- `detail` (list of ValidationError, optional)

## Types

### SubmitCampaignRecipient

- `phone_number` (string, optional, nullable) — Numret att ringa, i E.164-format, till exempel `+14155550100`.
- `phone_numbers` (list of string, optional, nullable) — Fler nummer att ringa upp, i ordning efter `phone_number`. Leadet går vidare till nästa när samtal till det aktuella numret fortsätter att misslyckas.
- `whatsapp_user_id` (string, optional, nullable) — Kontaktens WhatsApp-användar-ID. WhatsApp-kampanjer använder det i stället för telefonnumren.
- `id` (string, optional, nullable) — Din identifierare för mottagaren, som returneras som leadets `recipient_id`.
- `conversation_initiation_client_data` (ConversationInitiationClientDataRequest-Input, optional, nullable) — Dynamiska variabler och åsidosättningar för den här mottagarens samtal.

### SubmitCampaignRequestChannelConfig

- `channel`: `phone` (PhoneChannelConfig)
  - `agent_phone_number_id` (string, required) — Telefonnumret att ringa från.
  - `mode_config` (PhoneVoiceConfig-Input, optional)
- `channel`: `whatsapp` (SubmitWhatsAppChannelConfig)
  - `mode_config` (SubmitWhatsAppChannelConfigModeConfig, required)
  - `whatsapp_phone_number_id` (string, required) — WhatsApp-telefonnumret att ringa eller skicka meddelanden från.

### SubmitCampaignRequestOutcome

Resultatet som räknas som lyckat för kampanjens samtal.

- `type`: `data_collection` (DataCollectionOutcome)
  - `data_collection_id` (string, required) — Agentens datainsamlingsobjekt som ett lyckat samtal anger.
  - `equals` (list of CampaignResponseOutcomeDiscriminatorMappingDataCollectionEqualsItems, required) — Värden som räknas som lyckade, alla av objektets typ.
- `type`: `evaluation_criteria` (EvaluationCriterionOutcome)
  - `criteria_id` (string, required) — Agentens utvärderingskriterium som ett lyckat samtal uppfyller.

### PolicyConfig-Input

- `timezone` (string, optional, default: UTC) — IANA-tidszon som samtalsperioderna läses i.
- `retry` (RetryPolicy, optional)
- `calling_periods` (list of CallingPeriod, optional) — De veckovisa tidsfönster då samtal kan ringas.
- `data_collection` (DataCollectionConfig, optional) — Agentens datainsamlingsobjekt som styr uppföljningssamtal. Varje objekt har som standard det inbyggda objektet för sitt syfte; `null` stänger av det.
- `followup_context` (FollowupContextPolicy, optional) — Vilka dynamiska variabler för `campaign__` som uppföljningssamtal får.

### CampaignResponse

- `campaign_id` (string, required)
- `call_name` (string, required) — Kampanjens namn.
- `agent_id` (string, required)
- `channel_config` (CampaignResponseChannelConfig, required)
- `status` (enum, required) — `attention` innebär att ett öppet uppmärksamhetsobjekt håller tillbaka vissa av kampanjens samtal medan övriga fortsätter. `stopping` innebär att köade samtal avbryts och att redan uppringda samtal avslutas.
  - Allowed values: `active`, `paused`, `stopping`, `stopped`, `completed`, `failed`, `attention`
- `policy` (CampaignPolicySnapshot, required) — Den policy som kampanjen använde när den skapades.
- `variant` (enum, required)
  - Allowed values: `simple`, `advanced`
- `source` (enum, required, nullable) — Om kampanjen skapades i appen eller via API:et.
  - Allowed values: `ui`, `api`
- `outcome` (CampaignResponseOutcome, required, nullable) — Resultatet som räknas som lyckat för kampanjens samtal.
- `created_at_unix` (integer, required)
- `scheduled_time_unix` (integer, required, nullable) — När kampanjen börjar ringa; lämna tomt för att starta när den har skapats.
- `updated_at_unix` (integer, required)
- `branch_id` (string, required, nullable) — Agentgrenen som kampanjen ringer med.
- `environment` (string, required, nullable) — Miljön där agentens miljövariabler löses.
- `target_concurrency_limit` (integer, required, nullable) — Det högsta antalet samtal kampanjen genomför samtidigt.
- `channel` (enum, required)
  - Allowed values: `phone`, `whatsapp`
- `mode` (enum, required)
  - Allowed values: `voice`, `message`
- `counts` (CampaignSummaryCounts, required)
- `agent_name` (string, required, default: )

### ValidationError

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

### ConversationInitiationClientDataRequest-Input

- `conversation_config_override` (ConversationConfigClientOverride-Input, optional)
- `custom_llm_extra_body` (map from string to any, optional)
- `user_id` (string, optional, nullable) — ID för slutanvändaren som deltar i den här konversationen (för identifiering av agentägarens användare)
- `source_info` (ConversationInitiationSourceInfo, optional) — Information om källan till att konversationen startades
- `branch_id` (string, optional, nullable) — ID för den agentgren som ska användas för den här konversationen
- `environment` (string, optional, nullable) — Miljö att använda för att lösa miljövariabler
- `starting_workflow_node_id` (string, optional, nullable) — Om angivet startar workflowet vid detta nod-ID i stället för standardingången
- `procedure_ids` (list of string, optional, nullable) — Om angivet är endast dessa procedurer tillgängliga för startagenten. Varje ID måste vara kopplat till agenten; okända ID:n gör att konversationen inte kan starta. En tom lista inaktiverar alla agentens procedurer. Tillämpas inte efter en agentöverföring. Kräver enable_procedure_ids_from_client.
- `start_procedure_ids` (list of string, optional, nullable) — Om de anges startar dessa fria procedurer när konversationen börjar. Högst fem ID:n accepteras. Varje ID måste vara tillgängligt efter att procedure_ids har tillämpats. Okända ID:n och strukturerade procedurer gör att konversationsstarten misslyckas. Kräver enable_procedure_ids_from_client.
- `dynamic_variables` (map from string to any, optional)

### PhoneVoiceConfig-Input

- `ringing_timeout_secs` (integer, optional, default: 60) — Hur länge mottagaren ska ringas innan försöket avbryts, i sekunder. Observera att detta även begränsas av leverantörens egna begränsningar.
- `twilio_call_recording_enabled` (boolean, optional, default: false) — Om samtalet ska spelas in med Twilios samtalsinspelning. Ignoreras för leverantörer som inte är Twilio. Inspelningar lagras på ditt Twilio-konto.
- `twilio_machine_detection` (TwilioMachineDetectionConfig, optional, nullable) — Konfiguration för Twilios operatörsnivåbaserade detektering av telefonsvarare (AMD). Utelämna eller ange null för att inaktivera den. Ignoreras för leverantörer som inte är Twilio och för inkommande samtal. Resultatet levereras som en egen webhook-händelse, `answering_machine_detection`, vilket kräver att händelsen är aktiverad i inställningarna för workspace- eller agentwebhookar; den ingår inte i samtalet eller webhooken efter samtalet. Detekteringen körs asynkront och fördröjer därför aldrig starten av samtalet, och resultatet kan komma när som helst under samtalet – med `detect_message_end`, även efter att det har avslutats. Twilio fakturerar AMD separat.
- `mode` ("voice", optional, default: voice)

### SubmitWhatsAppChannelConfigModeConfig

- `mode`: `message` (SubmitWhatsAppMessageConfig)
  - `template` (SubmitWhatsAppTemplateRef, required) — Anger namnet på den godkända Meta-mall som ska skickas. Servern läser in mallen själv, så klienten anger aldrig dess komponenter.
- `mode`: `voice` (WhatsAppVoiceConfig)
  - `whatsapp_call_permission_request_template_language_code` (string, required) — Språkkoden för den mallen.
  - `whatsapp_call_permission_request_template_name` (string, required) — Den godkända mallen som ber kontakten om tillstånd att ringa.

### CampaignResponseOutcomeDiscriminatorMappingDataCollectionEqualsItems

- string
- integer
- double
- boolean

### RetryPolicy

- `retry_delay_seconds` (integer, optional, default: 600) — Hur länge du ska vänta före ett kort nytt försök.
- `max_short_retries` (integer, optional, default: 1) — Nya försök som ett samtalsfönster tillåter efter ett misslyckat samtal. När de har använts väntar nästa försök på följande fönster, som börjar om från början.
- `max_total_calls` (integer, optional, default: 6) — Det högsta antalet samtal ett lead får, inklusive det första.
- `max_callbacks` (integer, optional, default: 2) — Det högsta antalet återuppringningar att hantera för ett nummer.
- `max_redirects` (integer, optional, default: 2) — Det högsta antalet gånger ett lead följer en begäran om att ringa ett annat nummer.
- `interval_placement` (enum, optional, default: start) — Var i ett senare tidsfönster för uppringning ett framflyttat samtal hamnar: vid dess `start`, vid en `random` tid eller `rotate`d `rotate_step_seconds` efter där det senaste samtalet i det fönstret misslyckades.
  - Allowed values: `start`, `random`, `rotate`
- `rotate_step_seconds` (integer, optional, default: 900) — Hur långt `rotate`-placering flyttar varje samtal. Används endast av `rotate`.
- `max_consecutive_failures_per_number` (integer, optional, nullable) — Samtal till ett nummer som får misslyckas i följd innan leadet går vidare till nästa nummer i listan, eller avslutas om det inte finns något. Ett besvarat samtal eller en omdirigering till ett nytt nummer startar om räkningen. Om det inte anges används bara `max_total_calls`.

### CallingPeriod

- `weekdays` (list of integer, required) — Dagar som intervallen gäller, från `0` (måndag) till `6` (söndag).
- `intervals` (list of CallingIntervalPolicy, required) — Tidsfönster för var och en av dessa dagar. De får inte överlappa under någon dag.

### DataCollectionConfig

Agentens datainsamlingsobjekt som styr uppföljningssamtal. Varje objekt har som standard det inbyggda objektet för sitt syfte; `null` stänger av det.

- `callback_time` (string, optional, nullable, default: __system_data_collection_callback_time) — Objektet som innehåller när kontakten bad att bli återuppringd.
- `redirect_phone_number` (string, optional, nullable, default: __system_data_collection_redirect_phone_number) — Objektet som innehåller ett annat nummer som kontakten bad att bli uppringd på.
- `stop` (string, optional, nullable, default: __system_data_collection_do_not_call) — Objektet som är true när kontakten bad att inte bli uppringd igen.
- `mappings` (map from string to string, optional) — Kopierar resultat från datainsamling till dynamiska variabler för senare samtal: varje nyckel är ett ID för ett datainsamlingsobjekt och dess värde är variabelns namn.

### FollowupContextPolicy

Vilka dynamiska variabler för `campaign__` som uppföljningssamtal får.

- `call_type` (boolean, optional, default: true) — Skicka samtalstypen som `campaign__call_type`.
- `previous_conversation_id` (boolean, optional, default: true) — Skicka den senaste konversationens ID som `campaign__previous_conversation_id`.
- `previous_summary` (boolean, optional, default: true) — Skicka den senaste konversationens sammanfattning som `campaign__previous_summary`.
- `previous_transcript` (boolean, optional, default: true) — Skicka den senaste konversationens transkription som `campaign__previous_transcript`.

### CampaignResponseChannelConfig

- `channel`: `phone` (PhoneChannelConfig)
  - `agent_phone_number_id` (string, required) — Telefonnumret att ringa från.
  - `mode_config` (PhoneVoiceConfig-Output, optional)
- `channel`: `whatsapp` (WhatsAppChannelConfig)
  - `mode_config` (WhatsAppChannelConfigModeConfig, required)
  - `whatsapp_phone_number_id` (string, required) — WhatsApp-telefonnumret att ringa eller skicka meddelanden från.

### CampaignPolicySnapshot

Den policy som kampanjen använde när den skapades, utformad som en inskickad `policy`.

- `timezone` (string, required)
- `retry` (RetryPolicy, required)
- `calling_periods` (list of CallingPeriodPolicy, required)
- `data_collection` (DataCollectionPolicy, required)
- `followup_context` (FollowupContextPolicy, required) — Vilka dynamiska variabler för `campaign__` som uppföljningssamtal får.

### CampaignResponseOutcome

Resultatet som räknas som lyckat för kampanjens samtal.

- `type`: `data_collection` (DataCollectionOutcome)
  - `data_collection_id` (string, required) — Agentens datainsamlingsobjekt som ett lyckat samtal anger.
  - `equals` (list of CampaignResponseOutcomeDiscriminatorMappingDataCollectionEqualsItems, required) — Värden som räknas som lyckade, alla av objektets typ.
- `type`: `evaluation_criteria` (EvaluationCriterionOutcome)
  - `criteria_id` (string, required) — Agentens utvärderingskriterium som ett lyckat samtal uppfyller.

### CampaignSummaryCounts

- `leads` (integer, required)
- `terminal_leads` (integer, required) — Leads som inte kommer att ringas upp igen.
- `open_attention` (integer, required) — Uppmärksamhetsobjekt som ännu inte har lösts.
- `delivery` (RecipientDeliveryCounts, optional, nullable) — Hur många meddelanden som nådde varje steg; anges när en meddelandekampanj hämtas.

### ValidationErrorLocItems

- string
- integer

### ConversationConfigClientOverride-Input

- `asr` (ASRConversationalConfigOverride, optional, nullable) — Konfiguration för konversationsbaserad transkribering
- `turn` (TurnConfigOverride, optional, nullable) — Konfiguration för turdetektering
- `tts` (TTSConversationalConfigOverride, optional, nullable) — Konfiguration för konversationsbaserad Text to Speech
- `conversation` (ConversationConfigOverride, optional, nullable) — Konfiguration för samtalshändelser
- `agent` (AgentConfigOverride-Input, optional, nullable) — Agentspecifik konfiguration

### ConversationInitiationSourceInfo

Information om källan till att konversationen startades

- `source` (enum, optional, nullable, default: unknown) — Källa för konversationsinitieringen
  - 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, nullable) — SDK-versionsnumret

### TwilioMachineDetectionConfig

Hur Twilios operatörsnivåidentifiering av telefonsvarare (AMD) ska köras i ett samtal.

- `mode` (enum, optional, default: enable) — Hur noggrann identifieringen ska vara. `enable` returnerar ett besked så snart Twilio kan skilja en människa från en maskin. `detect_message_end` väntar också tills röstmeddelandets hälsning är klar, vilket ger beskeden `machine_end_*`, men returnerar ett resultat senare.
  - Allowed values: `enable`, `detect_message_end`
- `actions` (list of TwilioMachineDetectionRule, optional) — Åtgärder som ska vidtas i samtalet för varje AMD-bedömning. Varje åtgärd får förekomma i högst en regel, så ange alla dess bedömningar tillsammans. Bedömningar utan en regel låter samtalet fortsätta.

### SubmitWhatsAppTemplateRef

Anger namnet på den godkända Meta-mall som ska skickas. Servern läser in mallen själv, så klienten anger aldrig dess komponenter.

- `name` (string, required)
- `language` (string, required) — Mallens språkkod, till exempel `en_US`.

### CallingIntervalPolicy

- `start` (string, required) — Lokal starttid, som `HH:MM`.
- `end` (string, required) — Lokal sluttid, som `HH:MM`; `24:00` avslutas vid midnatt.

### PhoneVoiceConfig-Output

- `ringing_timeout_secs` (integer, optional, default: 60) — Hur länge mottagaren ska ringas innan försöket avbryts, i sekunder. Observera att detta även begränsas av leverantörens egna begränsningar.
- `twilio_call_recording_enabled` (boolean, optional, default: false) — Om samtalet ska spelas in med Twilios samtalsinspelning. Ignoreras för leverantörer som inte är Twilio. Inspelningar lagras på ditt Twilio-konto.
- `twilio_machine_detection` (TwilioMachineDetectionConfig, optional, nullable) — Konfiguration för Twilios operatörsnivåbaserade detektering av telefonsvarare (AMD). Utelämna eller ange null för att inaktivera den. Ignoreras för leverantörer som inte är Twilio och för inkommande samtal. Resultatet levereras som en egen webhook-händelse, `answering_machine_detection`, vilket kräver att händelsen är aktiverad i inställningarna för workspace- eller agentwebhookar; den ingår inte i samtalet eller webhooken efter samtalet. Detekteringen körs asynkront och fördröjer därför aldrig starten av samtalet, och resultatet kan komma när som helst under samtalet – med `detect_message_end`, även efter att det har avslutats. Twilio fakturerar AMD separat.
- `mode` ("voice", optional, default: voice)

### WhatsAppChannelConfigModeConfig

- `mode`: `message` (WhatsAppMessageConfig)
  - `template` (WhatsAppTemplate, required) — Meta-mallen som den godkändes vid inskickningen.
- `mode`: `voice` (WhatsAppVoiceConfig)
  - `whatsapp_call_permission_request_template_language_code` (string, required) — Språkkoden för den mallen.
  - `whatsapp_call_permission_request_template_name` (string, required) — Den godkända mallen som ber kontakten om tillstånd att ringa.

### CallingPeriodPolicy

- `weekdays` (list of integer, required)
- `intervals` (list of CallingIntervalPolicy, required) — Tidsfönster för var och en av dessa dagar. De får inte överlappa under någon dag.

### DataCollectionPolicy

- `callback_time` (string, optional, nullable)
- `redirect_phone_number` (string, optional, nullable)
- `stop` (string, optional, nullable)
- `mappings` (map from string to string, optional) — Kopierar resultat från datainsamling till dynamiska variabler för senare samtal: varje nyckel är ett ID för ett datainsamlingsobjekt och dess värde är variabelns namn.

### 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, nullable) — Nyckelord att öka förutsägelsesannolikheten för

### TurnConfigOverride

- `soft_timeout_config` (SoftTimeoutConfigOverride, optional, nullable) — Konfiguration för mjuk timeout. Ger omedelbar återkoppling under längre LLM-svar.
- `noisy_environment_message` (string, optional, nullable) — Vad agenten säger när den upptäcker en bullrig miljö.

### TTSConversationalConfigOverride

- `model_id` (enum, optional, nullable, default: eleven_v4_turbo) — Modellen som ska användas för 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, nullable) — Röst-ID:t som ska användas för TTS
- `supported_voices` (list of SupportedVoice, optional, nullable) — Ytterligare röster som stöds för agenten
- `stability` (double, optional, nullable) — Stabiliteten hos genererat tal
- `speed` (double, optional, nullable) — Hastigheten på genererat tal
- `similarity_boost` (double, optional, nullable) — Likhetsförstärkningen för genererat tal
- `pronunciation_dictionary_locators` (list of PydanticPronunciationDictionaryVersionLocator, optional, nullable) — Uttalsordbokens lokaliserare

### ConversationConfigOverride

- `text_only` (boolean, optional, nullable) — Om den är aktiverad bearbetas inte ljudet och endast text används. Använd detta för att undvika ljudprissättning.
- `max_duration_seconds` (integer, optional, nullable) — En konversations maximala längd i sekunder

### AgentConfigOverride-Input

- `first_message` (string, optional, nullable) — Om det inte är tomt är detta det första meddelandet agenten säger. Om det är tomt väntar agenten på att användaren ska inleda samtalet.
- `language` (string, optional, nullable) — Agentens språk – används för ASR och TTS
- `max_conversation_duration_message` (string, optional, nullable) — Om det inte är tomt är detta meddelandet agenten skickar när den maximala samtalslängden har uppnåtts.
- `prompt` (PromptAgentAPIModelOverride-Input, optional, nullable) — Prompten för agenten

### TwilioMachineDetectionRule

Åtgärd som ska vidtas i ett pågående samtal för de angivna AMD-bedömningarna.

- `action` (enum, required)
  - Allowed values: `hang_up`
- `answered_by` (list of enum, required) — Bedömningar som utlöser åtgärden.
  - 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, nullable) — https://developers.facebook.com/docs/graph-api/reference/whats-app-business-account/message_templates/

### SoftTimeoutConfigOverride

- `message` (string, optional, nullable) — Meddelande att visa när den första mjuka tidsgränsen nås medan du väntar på ett LLM-svar. Stöder dynamiska variabler (till exempel \{\{system\_\_time}}, \{\{custom\_variable}}).
- `additional_soft_timeout_messages` (list of string, optional, nullable) — Ytterligare statiska utfyllnadsmeddelanden för efterföljande mjuka tidsgränser i samma LLM-generering. Den första tidsgränsen använder `message`. Om färre meddelanden är konfigurerade än `max_soft_timeouts_per_generation` upprepas det senast konfigurerade meddelandet. Annars används en inbyggd utfyllnadstext.

### SupportedVoice

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

### PydanticPronunciationDictionaryVersionLocator

En pekare så att andra dokument kan referera till ett specifikt lexikon och dess version. Det här är en pydantic-version av PronunciationDictionaryVersionLocatorDBModel. Krävs för kompatibilitet med övriga datamodeller för agenter.

- `pronunciation_dictionary_id` (string, required) — ID:t för uttalsordlistan
- `version_id` (string, required, nullable) — ID:t för versionen av uttalsordlistan

### PromptAgentAPIModelOverride-Input

- `prompt` (string, optional, nullable) — Prompten för agenten
- `llm` (enum, optional, nullable) — Den LLM som ska frågas med prompten och chatthistoriken. Vid användning av dataresidens måste LLM:en stödjas i dataresidensmiljön.
  - 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, nullable) — En lista över ID:n för verktyg som används av agenten
- `tool_ids_strict` (boolean, optional, nullable) — Gäller endast som en åsidosättning för konversationer och är tillåten när tool_ids får åsidosättas. När värdet är true är de åsidosatta tool_ids den fullständiga listan över verktyg som är tillåtna i konversationen, inklusive verktyg på workflow-noder. Ignoreras när det anges på agenten.
- `native_mcp_server_ids` (list of string, optional, nullable) — En lista med Native MCP-server-ID:n som agenten ska använda
- `knowledge_base` (list of KnowledgeBaseLocator, optional, nullable) — En lista med kunskapsbaser som agenten ska använda

### WhatsAppTemplateComponent

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

### KnowledgeBaseLocator

- `type` (enum, required) — Typen av kunskapsbas
  - Allowed values: `file`, `url`, `text`, `folder`
- `name` (string, required) — Namnet på kunskapsbasen
- `id` (string, required) — ID:t för kunskapsbasen
- `usage_mode` (enum, optional, default: auto) — Användningsläget för kunskapsbasen
  - Allowed values: `prompt`, `auto`

### WhatsAppTemplateComponentButton

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

## Examples

**Request**

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

**Response**

```json
{
  "campaign": {
    "campaign_id": "string",
    "call_name": "string",
    "agent_id": "string",
    "channel_config": {
      "channel": "phone",
      "agent_phone_number_id": "string",
      "mode_config": {
        "ringing_timeout_secs": 60,
        "twilio_call_recording_enabled": false,
        "twilio_machine_detection": {
          "mode": "enable",
          "actions": [
            {
              "action": "hang_up",
              "answered_by": [
                "human"
              ]
            }
          ]
        },
        "mode": "voice"
      }
    },
    "status": "active",
    "policy": {
      "timezone": "string",
      "retry": {
        "retry_delay_seconds": 600,
        "max_short_retries": 1,
        "max_total_calls": 6,
        "max_callbacks": 2,
        "max_redirects": 2,
        "interval_placement": "start",
        "rotate_step_seconds": 900,
        "max_consecutive_failures_per_number": 1
      },
      "calling_periods": [
        {
          "weekdays": [
            1
          ],
          "intervals": [
            {
              "start": "string",
              "end": "string"
            }
          ]
        }
      ],
      "data_collection": {
        "callback_time": "string",
        "redirect_phone_number": "string",
        "stop": "string",
        "mappings": {}
      },
      "followup_context": {
        "call_type": true,
        "previous_conversation_id": true,
        "previous_summary": true,
        "previous_transcript": true
      }
    },
    "variant": "simple",
    "source": "ui",
    "outcome": {
      "type": "evaluation_criteria",
      "criteria_id": "string"
    },
    "created_at_unix": 1,
    "scheduled_time_unix": 1,
    "updated_at_unix": 1,
    "branch_id": "string",
    "environment": "string",
    "target_concurrency_limit": 1,
    "channel": "phone",
    "mode": "voice",
    "counts": {
      "leads": 1,
      "terminal_leads": 1,
      "open_attention": 1,
      "delivery": {
        "sent": 0,
        "delivered": 0,
        "read": 0,
        "replied": 0,
        "failed": 0
      }
    },
    "agent_name": ""
  },
  "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": "string",
    "agent_id": "string",
    "recipients": [{}],
    "channel_config": { "agent_phone_number_id": "string" }
}
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":"string","agent_id":"string","recipients":[{}],"channel_config":{"agent_phone_number_id":"string"}}'
};

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\": \"string\",\n  \"agent_id\": \"string\",\n  \"recipients\": [\n    {}\n  ],\n  \"channel_config\": {\n    \"agent_phone_number_id\": \"string\"\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\": \"string\",\n  \"agent_id\": \"string\",\n  \"recipients\": [\n    {}\n  ],\n  \"channel_config\": {\n    \"agent_phone_number_id\": \"string\"\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\": \"string\",\n  \"agent_id\": \"string\",\n  \"recipients\": [\n    {}\n  ],\n  \"channel_config\": {\n    \"agent_phone_number_id\": \"string\"\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": "string",
  "agent_id": "string",
  "recipients": [
    {}
  ],
  "channel_config": {
    "agent_phone_number_id": "string"
  }
}',
  '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\": \"string\",\n  \"agent_id\": \"string\",\n  \"recipients\": [\n    {}\n  ],\n  \"channel_config\": {\n    \"agent_phone_number_id\": \"string\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "call_name": "string",
  "agent_id": "string",
  "recipients": [[]],
  "channel_config": ["agent_phone_number_id": "string"]
] 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()
```