---
title: "List campaign customers"
method: GET
path: "/campaign/{campaignId}/customers"
tags: ["Campaign Customers"]
---

# List campaign customers

`GET /campaign/{campaignId}/customers`

## Request

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

Returns customers for a campaign with retry status, property keys, pagination, and exports.

## Path parameters

- `campaignId` string, uuid, required: Campaign ID

## Query parameters

- `workspaceId` string, uuid, required: Workspace ID
- `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`

Customers with pagination

- object
  - `success` true, required
  - `data` object, required
    - `message` string, required
    - `result` CampaignCustomersResponse, required
      - `customers` CampaignCustomerRow[], required
        - `id` string, required
        - `phoneNumber` string, required
        - `properties` object, nullable, required
        - `retryStatus` RetryStatus, required
          - `status` 'pending' | 'in_progress' | 'retrying' | 'success' | 'failed' | 'canceled' | 'null', nullable, required
          - `attempts` number, required
          - `lastAttemptAt` string, date-time, nullable, required
          - `nextRetryAt` string, date-time, nullable, required
          - `callIds` string[], required
        - `callCount` number, required
        - `createdAt` string, required
      - `propertyKeys` string[], required: Available property keys for dynamic columns
      - `pagination` Pagination, required
        - `total` number, required
        - `limit` number, required
        - `offset` number, required
      - `statusCounts` object, required

## Other responses

- `400`: Validation error
- `401`: Missing or invalid token
- `404`: Campaign not found
- `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)
