---
title: "List campaigns"
method: GET
path: "/campaign"
tags: ["Campaigns"]
---

# List campaigns

`GET /campaign`

## Request

- Base URL: `https://app.freyavoice.ai/api/v2`
- URL: `https://app.freyavoice.ai/api/v2/campaign`
- Auth: HTTP bearer

Returns campaigns for a workspace with filters, sorting, pagination, and export support.

## Query parameters

- `workspaceId` string, uuid, required: Workspace identifier
- `limit` string: Page size
- `offset` string: Offset for pagination
- `filters` string: Base64-encoded filter state
- `search` string: Global search term
- `sortBy` string: Sort field name
- `sortOrder` 'asc' | 'desc': Sort direction
- `export` string: Set to 'true' to return a file export
- `exportFormat` 'csv' | 'xlsx' | 'markdown': Export file format
- `exportColumns` string: JSON array of column definitions {id,label}

## Response `200`

Campaigns with pagination and status counts

- object
  - `success` true, required
  - `data` object, required
    - `message` string, required
    - `result` CampaignListResponse, required
      - `campaigns` CampaignListItem[], required
        - `id` string, required
        - `assistantId` string, nullable
        - `phoneNumberId` string, nullable
        - `name` string, required
        - `description` string, nullable
        - `status` 'draft' | 'scheduled' | 'active' | 'completed' | 'partially_completed'
        - `startDate` string, date, nullable: When campaign starts (YYYY-MM-DD)
        - `startTime` string, nullable: Time on start date + retry window start (HH:MM)
        - `timezone` string: IANA timezone for all times
        - `endTime` string, nullable: Daily retry window end (HH:MM)
        - `activeDays` integer[]: Days retries can happen (0=Monday, 6=Sunday)
        - `phoneNumber` string, nullable
        - `callRetries` integer
        - `retryDelaySeconds` integer: Delay between retries in seconds
        - `retryDelayMode` 'fixed' | 'next_day'
        - `retryConditions` string[]: Array of call outcome values to retry on (SipCodeCategory + special endedReason values)
        - `endDate` string, date, nullable: @deprecated - No longer used
        - `schedulingMode` 'even' | 'fixed': @deprecated - No longer used
        - `callIntervalSeconds` integer: @deprecated - No longer used
        - `maxConcurrency` integer: Internal parameter (hardcoded to 5)
        - `webhookUrl` string, nullable
        - `customers` CampaignCustomer[]
          - `phoneNumber` string, required
          - `properties` object, nullable: Custom properties to pass to the agent
        - `callIds` string[]
        - `roomNames` string[]
        - `events` CampaignEvent[]
          - `event` string, required
          - `timestamp` string, date-time, required
          - `metadata` object, required
          - `message` string, required
          - `data` unknown
        - `version` 'v1' | 'v2'
        - `workspaceId` string, required
        - `createdAt` string, required
        - `updatedAt` string, required
        - `customerCount` number
        - `callCount` number
      - `pagination` Pagination, required
        - `total` number, required
        - `limit` number, required
        - `offset` number, required
      - `statusCounts` CampaignStatusCounts
        - `all` number, required
        - `active` number, required
        - `scheduled` number, required
        - `completed` number, required
        - `partiallyCompleted` number, required
        - `draft` number, required

## Other responses

- `400`: Validation error
- `401`: Missing or invalid token
- `500`: Server error

---

[API](https://skmtc.dev/freyavoice/apis/freyavoice-api.md) - [All operations](https://skmtc.dev/freyavoice/apis/freyavoice-api/llms.txt) - [OpenAPI document](https://skmtc.dev/freyavoice/apis/freyavoice-api/revisions/153d120f0c73?raw)
