---
title: "List Outbound Campaigns"
method: GET
path: "/v1/convai/outbound-campaigns/campaigns"
tags: ["Agents Platform"]
---

# List Outbound Campaigns

`GET /v1/convai/outbound-campaigns/campaigns`

## 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/campaigns`
- Auth: none declared
- TypeScript: <https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/docs/v1/convai/outbound-campaigns/campaigns/get.ts> (a function with typed inputs; its response is checked against the schema)

List the workspace's outbound campaigns, newest first.

## Query parameters

- `page_size` integer: How many items to return at most.
- `status` CampaignStatus[], nullable: Only campaigns in one of these statuses.
- `agent_id` string, nullable: Only campaigns run by this agent.
- `channel` 'phone' | 'whatsapp'
- `mode` 'voice' | 'message', nullable: Only voice or only message campaigns.
- `search` string, nullable: Only campaigns whose name contains this text.
- `cursor` string, nullable: Used for fetching next page. Cursor is returned in the response.

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

## Response `200`

Successful Response

- CampaignPageResponse
  - `campaigns` CampaignResponse[], required
    - `campaign_id` string, required
    - `call_name` string, required: The campaign's name.
    - `agent_id` string, required
    - `channel_config` union, required
      - PhoneChannelConfigOutput
        - `channel` 'phone'
        - `agent_phone_number_id` string, required: The phone number to call from.
        - `mode_config` PhoneVoiceConfigOutput
          - `ringing_timeout_secs` integer: How long to ring the recipient before giving up, in seconds. Note that this will also be limited by the provider's own constraints.
          - `twilio_call_recording_enabled` boolean: Whether to record the call using Twilio call recording. Ignored for non-Twilio providers. Recordings are stored in your Twilio account.
          - `twilio_machine_detection` TwilioMachineDetectionConfig: How to run Twilio's carrier-level answering machine detection (AMD) on a call.
            - `mode` 'enable' | 'detect_message_end': Which Twilio answering-machine-detection (AMD) mode to request for a call. `enable` returns a verdict as soon as Twilio can tell a human from a machine. `detect_message_end` additionally waits for the greeting to finish, which is what distinguishes the `machine_end_*` verdicts, at the cost of a later result.
            - `actions` TwilioMachineDetectionRule[]: Actions to take on the call per AMD verdict. Each action can appear in at most one rule, so list all of its verdicts together. Verdicts without a rule leave the call running.
              - …
          - `mode` 'voice'
      - WhatsAppChannelConfig
        - `channel` 'whatsapp'
        - `whatsapp_phone_number_id` string, required: The WhatsApp phone number to call or message from.
        - `mode_config` union, required
          - WhatsAppVoiceConfig
            - `mode` 'voice'
            - `whatsapp_call_permission_request_template_name` string, required: The approved template that asks the contact for permission to call.
            - `whatsapp_call_permission_request_template_language_code` string, required: The language code of that template.
          - WhatsAppMessageConfig
            - `mode` 'message'
            - `template` WhatsAppTemplate, required
              - …
    - `status` 'active' | 'paused' | 'stopping' | 'stopped' | 'completed' | 'failed' | 'attention', required
    - `policy` CampaignPolicySnapshot, required: The policy the campaign took when it was created, laid out like a submitted `policy`.
      - `timezone` string, required
      - `retry` RetryPolicy, required
        - `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` CallingPeriodPolicy[], required
        - `weekdays` integer[], required
        - `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` DataCollectionPolicy, required
        - `callback_time` string, nullable
        - `redirect_phone_number` string, nullable
        - `stop` string, nullable
        - `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, required: 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`.
    - `variant` 'simple' | 'advanced', required
    - `source` 'ui' | 'api', required
    - `created_at_unix` integer, required
    - `scheduled_time_unix` integer, nullable, required: When the campaign starts calling; unset to start once created.
    - `updated_at_unix` integer, required
    - `branch_id` string, nullable, required: The agent branch the campaign calls with.
    - `environment` string, nullable, required: The environment the agent's environment variables resolve in.
    - `target_concurrency_limit` integer, nullable, required: The most calls the campaign places at once.
    - `channel` 'phone' | 'whatsapp', required
    - `mode` 'voice' | 'message', required
    - `counts` CampaignSummaryCounts, required
      - `leads` integer, required
      - `terminal_leads` integer, required: Leads that won't be called again.
      - `open_attention` integer, required: Attention items not yet resolved.
      - `delivery` RecipientDeliveryCounts
        - `sent` integer
        - `delivered` integer
        - `read` integer
        - `replied` integer
        - `failed` integer
    - `agent_name` string, required
  - `next_cursor` string, nullable, required
  - `has_more` boolean, required

## Other responses

- `422`: Validation Error

## Changes

- **2026-11-10** `5803fbabfb60`: 1 breaking
  - removed the required property `campaigns/items/outcome` from the response with the `200` status
- **2026-11-10** `49e0431bea4c`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/elevenlabs/apis/elevenlabs-api-documentation/changes/v1/convai/outbound-campaigns/campaigns/get.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/fcdef62e353b?raw)
