---
title: "List Outbound Communication Campaigns"
method: GET
path: "/api/v1/outbound/campaigns"
tags: ["outbound.campaigns"]
---

# List Outbound Communication Campaigns

`GET /api/v1/outbound/campaigns`

## Query parameters

- `page` integer, nullable — The page number from which to start (0-based)
- `limit` integer — The maximum number of items to return
- `search_fields` CampaignProperties[] — String names of fields to search. Correspond by index to search field values
- `search_field_values` string[] — Values of fields to search. Correspond by index to search fields. Unless field name contains "list", an individual search field value cannot be a list
- `order_by` 'id' | 'campaign_name' | 'campaign_variables' | 'daily_start_time' | 'daily_end_time' | 'source' | 'mode' | 'caller_id' | 'updated_at' | 'label' | 'labels' | 'voicemail_detection'
- `order_by_direction` 'asc' | 'desc' — The direction in which to order list results, either ascending or descending.
- `fields` CampaignProperties[], nullable — The fields to include in the response
- `start_datetime` string, nullable — The start datetime for filtering results
- `end_datetime` string, nullable — The end datetime for filtering results

## Response `200`

Successful Response

- ListResponseOutboundCampaign
  - `items` OutboundCampaign[], required — List of items returned from the query
    - `campaign_name` string, required — Human readable name of campaign
    - `description` string, nullable — Description of campaign
    - `mode` string, nullable — Mode of the campaign (e.g. voice, sms, email)
    - `sms_session_ttl` integer, nullable — Time to live for SMS session in minutes
    - `label` string, nullable — Label for campaign (DEPRECATED - use labels instead)
    - `labels` string[], nullable — Labels for campaign
    - `campaign_variables` object, required — Variables for campaign
    - `daily_start_time` string, nullable — Start time of campaign each day
    - `daily_end_time` string, nullable — End time of campaign each day
    - `source` string, nullable — Source phone number, email, or SMS number
    - `caller_id` string, nullable, required — Caller ID for call
    - `hourly_rate` integer — Target number of outreach calls per hour
    - `max_daily_calls` integer, nullable — Maximum number of outreach calls per day
    - `retry_count` integer — Number of retries per target
    - `retry_interval` string, nullable — How long to wait before retrying
    - `active_days` DaysOfWeek[], required — Days of the week when campaign is active
    - `voicemail_detection` VoicemailDetectionConfig — Voicemail detection config stored on outbound_campaign.voicemail_detection. `mode` selects the (mutually-exclusive) strategy; the remaining fields are detection timeouts. Unknown keys are preserved (`extra='allow'`) so the schema stays backwards compatible with blobs written before fields were added. See ZOO-7818.
      - `mode` 'v1' | 'v2', nullable — Voicemail-detection strategy: 'v1' (original check_voicemail/leave_voicemail) or 'v2' (Voicemail Detection 2, which suppresses the turn-0 greeting and uses the greeting tool). The two modes are mutually exclusive. Omitted/null on legacy v1 campaigns is treated as v1.
      - `voicemail_detection_overall_timeout` number, nullable
      - `voicemail_detection_pre_speech_timeout` number, nullable
      - `voicemail_detection_post_speech_timeout` number, nullable
      - `voicemail_detection_speech_threshold` number, nullable
    - `allowed_line_types` LineTypeBucket[], nullable — Line-type buckets this campaign is allowed to dial. Empty or omitted means no filter (all line types are dialed).
    - `include_unknown_line_types` boolean — When a line-type filter is active, whether to also dial numbers whose line type is unknown or could not be classified. Has no effect when allowed_line_types is empty.
    - `target_filters` TargetFilters — Generic target filter for an outbound campaign: a flat list of rules over request enrichment. A request is *dialable* when it matches the ruleset (``match='all'`` -> every rule; ``'any'`` -> at least one rule); non-matching requests are skipped. ``on_unknown`` decides the fate of requests whose enrichment never resolved (no lookup / lookup failed). An empty ``rules`` list means no filter (all numbers dialed), matching the pre-filter behavior.
      - `match` 'all' | 'any' — How to combine rules: 'all' (AND) or 'any' (OR).
      - `on_unknown` 'include' | 'exclude' — Whether to dial requests whose enrichment is unresolved (no lookup data).
      - `rules` TargetFilterRule[] — Predicates over request enrichment attributes. Empty means no filter.
        - `field` string, required — Enrichment attribute to match on (a key in the request enrichment payload).
        - `op` 'in' | 'not_in' | 'eq' | 'neq' | 'exists' | 'not_exists', required — Comparison operator for a single target-filter rule.
        - `values` string[] — Values to compare against. Ignored for exists / not_exists.
    - `id` integer, required — Unique ID for campaign
    - `agent_id` integer, nullable — ID of agent assigned to campaign
    - `created_at` string, date-time — Timestamp of campaign creation
    - `updated_at` string, date-time — Timestamp of campaign update
    - `last_updated_by` string, required — Email of user who last updated campaign
    - `webhooks` OutboundCampaignWebhookResponse[], nullable — Webhooks for campaign
      - `trigger_statuses` ChannelManagerStatus[], required — Condition expression evaluated when the trigger fires
      - `url` string, required — HTTPS URL to which to send the webhook payload
      - `request_method` string, required — HTTP method for the outbound request (POST, PUT, or PATCH)
      - `id` integer, required — Unique ID for webhook
      - `auth_value_keys` string[], nullable — Auth value keys (values omitted for security); only hmac_secret is currently supported
  - `page` integer, required — The page number of the results (0-based)
  - `page_size` integer, required — The number of items returned per page
  - `total_pages` integer, nullable — The total number of pages of results given the indicated page size
  - `total_count` integer, nullable — The total number of items returned from the query

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/asksyllable/apis/syllablesdk.md) · [All operations](https://skmtc.net/asksyllable/apis/syllablesdk/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/asksyllable/syllablesdk/versions/ac3228f980bb/schema)
