---
title: "Replace Outbound Campaign Configuration"
method: PUT
path: "/v1/convai/outbound-campaigns/config"
tags: ["Agents Platform"]
---

# Replace Outbound Campaign Configuration

`PUT /v1/convai/outbound-campaigns/config`

## Request

- Base URL: `https://api.elevenlabs.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.elevenlabs.io/v1/convai/outbound-campaigns/config`
- Auth: none declared
- TypeScript: <https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/docs/v1/convai/outbound-campaigns/config/put.ts> (a function with typed inputs; its response is checked against the schema)

Create or replace the workspace's outbound campaign configuration. Send the `version` you last read as `expected_version`, or omit it to create the first configuration. A configuration changed since you read it is not replaced. Campaigns keep the policy they started with.

## Headers

- `xi-api-key` string, nullable: Your API key. This is required by most endpoints to access our API programmatically. You can view your xi-api-key using the 'Profile' tab on the website.

## Request body

- ReplaceWorkspaceConfigRequest
  - `expected_version` integer, nullable: The `version` of the configuration being replaced. Omit it only to create the first configuration.
  - `config` CampaignConfigInput, required
    - `policy` PolicyConfigInput
      - `timezone` string: IANA timezone the calling periods are read in.
      - `retry` RetryPolicy
        - `retry_delay_seconds` integer: How long to wait before a short retry.
        - `max_short_retries` integer: Retries a calling window allows after a failed call. Once used up, the next retry waits for the following window, which starts afresh.
        - `max_total_calls` integer: The most calls a lead gets, counting the first.
        - `max_callbacks` integer: The most callbacks to honor for one number.
        - `max_redirects` integer: The most times a lead follows a request to call another number.
        - `interval_placement` 'start' | 'random' | 'rotate'
        - `rotate_step_seconds` integer: How far `rotate` placement moves each call. Only used by `rotate`.
        - `max_consecutive_failures_per_number` integer, nullable: Calls to one number that may fail in a row before the lead moves on to its next listed number, or ends when there is none. An answered call, or a redirect to a new number, restarts the count. Unset leaves only `max_total_calls`.
      - `calling_periods` CallingPeriod[]: The weekly windows calls may be placed in.
        - `weekdays` integer[], required: Days the intervals apply on, from `0` (Monday) to `6` (Sunday).
        - `intervals` CallingIntervalPolicy[], required: Windows on each of those days. They may not overlap on any day.
          - `start` string, required: Local start time, as `HH:MM`.
          - `end` string, required: Local end time, as `HH:MM`; `24:00` ends at midnight.
      - `data_collection` DataCollectionConfig: The agent's data collection items that steer follow-up calls. Each defaults to the built-in item for its purpose; `null` turns it off.
        - `callback_time` string, nullable: The item holding when the contact asked to be called back.
        - `redirect_phone_number` string, nullable: The item holding another number the contact asked to be called on.
        - `stop` string, nullable: The item that is true when the contact asked not to be called again.
        - `mappings` object: Copies data collection results into dynamic variables for later calls: each key is a data collection item ID and its value the variable's name.
      - `followup_context` FollowupContextPolicy: Which `campaign__` dynamic variables follow-up calls get.
        - `call_type` boolean: Pass the call type as `campaign__call_type`.
        - `previous_conversation_id` boolean: Pass the last conversation's ID as `campaign__previous_conversation_id`.
        - `previous_summary` boolean: Pass the last conversation's summary as `campaign__previous_summary`.
        - `previous_transcript` boolean: Pass the last conversation's transcript as `campaign__previous_transcript`.
    - `agent_policies` object: Overrides of `policy`, keyed by agent ID.
    - `whatsapp_voice_policy` AgentPolicyOverrideInput: Each section set here replaces the whole matching section of the policy.
      - `timezone` string, nullable
      - `retry` RetryPolicy
        - `retry_delay_seconds` integer: How long to wait before a short retry.
        - `max_short_retries` integer: Retries a calling window allows after a failed call. Once used up, the next retry waits for the following window, which starts afresh.
        - `max_total_calls` integer: The most calls a lead gets, counting the first.
        - `max_callbacks` integer: The most callbacks to honor for one number.
        - `max_redirects` integer: The most times a lead follows a request to call another number.
        - `interval_placement` 'start' | 'random' | 'rotate'
        - `rotate_step_seconds` integer: How far `rotate` placement moves each call. Only used by `rotate`.
        - `max_consecutive_failures_per_number` integer, nullable: Calls to one number that may fail in a row before the lead moves on to its next listed number, or ends when there is none. An answered call, or a redirect to a new number, restarts the count. Unset leaves only `max_total_calls`.
      - `calling_periods` CallingPeriod[], nullable
        - `weekdays` integer[], required: Days the intervals apply on, from `0` (Monday) to `6` (Sunday).
        - `intervals` CallingIntervalPolicy[], required: Windows on each of those days. They may not overlap on any day.
          - `start` string, required: Local start time, as `HH:MM`.
          - `end` string, required: Local end time, as `HH:MM`; `24:00` ends at midnight.
      - `data_collection` DataCollectionConfig: The agent's data collection items that steer follow-up calls. Each defaults to the built-in item for its purpose; `null` turns it off.
        - `callback_time` string, nullable: The item holding when the contact asked to be called back.
        - `redirect_phone_number` string, nullable: The item holding another number the contact asked to be called on.
        - `stop` string, nullable: The item that is true when the contact asked not to be called again.
        - `mappings` object: Copies data collection results into dynamic variables for later calls: each key is a data collection item ID and its value the variable's name.
      - `followup_context` FollowupContextPolicy: Which `campaign__` dynamic variables follow-up calls get.
        - `call_type` boolean: Pass the call type as `campaign__call_type`.
        - `previous_conversation_id` boolean: Pass the last conversation's ID as `campaign__previous_conversation_id`.
        - `previous_summary` boolean: Pass the last conversation's summary as `campaign__previous_summary`.
        - `previous_transcript` boolean: Pass the last conversation's transcript as `campaign__previous_transcript`.

## Response `200`

Successful Response

- WorkspaceConfigResponse
  - `version` integer, required: Increases with every replacement; send it as `expected_version`.
  - `config` CampaignConfigOutput, required
    - `policy` PolicyConfigOutput
      - `timezone` string: IANA timezone the calling periods are read in.
      - `retry` RetryPolicy
        - `retry_delay_seconds` integer: How long to wait before a short retry.
        - `max_short_retries` integer: Retries a calling window allows after a failed call. Once used up, the next retry waits for the following window, which starts afresh.
        - `max_total_calls` integer: The most calls a lead gets, counting the first.
        - `max_callbacks` integer: The most callbacks to honor for one number.
        - `max_redirects` integer: The most times a lead follows a request to call another number.
        - `interval_placement` 'start' | 'random' | 'rotate'
        - `rotate_step_seconds` integer: How far `rotate` placement moves each call. Only used by `rotate`.
        - `max_consecutive_failures_per_number` integer, nullable: Calls to one number that may fail in a row before the lead moves on to its next listed number, or ends when there is none. An answered call, or a redirect to a new number, restarts the count. Unset leaves only `max_total_calls`.
      - `calling_periods` CallingPeriod[]: The weekly windows calls may be placed in.
        - `weekdays` integer[], required: Days the intervals apply on, from `0` (Monday) to `6` (Sunday).
        - `intervals` CallingIntervalPolicy[], required: Windows on each of those days. They may not overlap on any day.
          - `start` string, required: Local start time, as `HH:MM`.
          - `end` string, required: Local end time, as `HH:MM`; `24:00` ends at midnight.
      - `data_collection` DataCollectionConfig: The agent's data collection items that steer follow-up calls. Each defaults to the built-in item for its purpose; `null` turns it off.
        - `callback_time` string, nullable: The item holding when the contact asked to be called back.
        - `redirect_phone_number` string, nullable: The item holding another number the contact asked to be called on.
        - `stop` string, nullable: The item that is true when the contact asked not to be called again.
        - `mappings` object: Copies data collection results into dynamic variables for later calls: each key is a data collection item ID and its value the variable's name.
      - `followup_context` FollowupContextPolicy: Which `campaign__` dynamic variables follow-up calls get.
        - `call_type` boolean: Pass the call type as `campaign__call_type`.
        - `previous_conversation_id` boolean: Pass the last conversation's ID as `campaign__previous_conversation_id`.
        - `previous_summary` boolean: Pass the last conversation's summary as `campaign__previous_summary`.
        - `previous_transcript` boolean: Pass the last conversation's transcript as `campaign__previous_transcript`.
    - `agent_policies` object: Overrides of `policy`, keyed by agent ID.
    - `whatsapp_voice_policy` AgentPolicyOverrideOutput: Each section set here replaces the whole matching section of the policy.
      - `timezone` string, nullable
      - `retry` RetryPolicy
        - `retry_delay_seconds` integer: How long to wait before a short retry.
        - `max_short_retries` integer: Retries a calling window allows after a failed call. Once used up, the next retry waits for the following window, which starts afresh.
        - `max_total_calls` integer: The most calls a lead gets, counting the first.
        - `max_callbacks` integer: The most callbacks to honor for one number.
        - `max_redirects` integer: The most times a lead follows a request to call another number.
        - `interval_placement` 'start' | 'random' | 'rotate'
        - `rotate_step_seconds` integer: How far `rotate` placement moves each call. Only used by `rotate`.
        - `max_consecutive_failures_per_number` integer, nullable: Calls to one number that may fail in a row before the lead moves on to its next listed number, or ends when there is none. An answered call, or a redirect to a new number, restarts the count. Unset leaves only `max_total_calls`.
      - `calling_periods` CallingPeriod[], nullable
        - `weekdays` integer[], required: Days the intervals apply on, from `0` (Monday) to `6` (Sunday).
        - `intervals` CallingIntervalPolicy[], required: Windows on each of those days. They may not overlap on any day.
          - `start` string, required: Local start time, as `HH:MM`.
          - `end` string, required: Local end time, as `HH:MM`; `24:00` ends at midnight.
      - `data_collection` DataCollectionConfig: The agent's data collection items that steer follow-up calls. Each defaults to the built-in item for its purpose; `null` turns it off.
        - `callback_time` string, nullable: The item holding when the contact asked to be called back.
        - `redirect_phone_number` string, nullable: The item holding another number the contact asked to be called on.
        - `stop` string, nullable: The item that is true when the contact asked not to be called again.
        - `mappings` object: Copies data collection results into dynamic variables for later calls: each key is a data collection item ID and its value the variable's name.
      - `followup_context` FollowupContextPolicy: Which `campaign__` dynamic variables follow-up calls get.
        - `call_type` boolean: Pass the call type as `campaign__call_type`.
        - `previous_conversation_id` boolean: Pass the last conversation's ID as `campaign__previous_conversation_id`.
        - `previous_summary` boolean: Pass the last conversation's summary as `campaign__previous_summary`.
        - `previous_transcript` boolean: Pass the last conversation's transcript as `campaign__previous_transcript`.

## Other responses

- `422`: Validation Error

## Changes

- **2026-11-10** `49e0431bea4c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/changes/v1/convai/outbound-campaigns/config/put.md)

---

[API](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation.md) - [All operations](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/revisions/4fa3fc2e746d?raw)
