---
title: "Get Campaign V2 Contacts"
method: GET
path: "/v2/campaign/{id}/contacts"
tags: ["Campaigns"]
---

# Get Campaign V2 Contacts

`GET /v2/campaign/{id}/contacts`

## Path parameters

- `id` string, uuid, required

## Query parameters

- `status` string[]
- `limit` number
- `sortBy` 'position' | 'status'
- `page` number

## Response `200`

- CampaignContactPaginatedResponse
  - `results` CampaignContactWithOutcome[], required
    - `id` string, required
    - `number` string, required
    - `name` string
    - `status` 'contact.pending' | 'contact.dispatched' | 'contact.completed' | 'contact.failed' | 'contact.skipped' | 'contact.predial-failed', required
    - `callId` string
    - `dispatchedAt` string, date-time
    - `endedReason` string
  - `metadata` PaginationMeta, required
    - `itemsPerPage` number, required
    - `totalItems` number, required
    - `currentPage` number, required
    - `totalPages` number
    - `hasNextPage` boolean
    - `nextCursor` string — Opaque cursor for the next page under keyset pagination (PRO-3163). Pass it back as the `cursor` query param to fetch the next page without an OFFSET scan. Present only when a further page likely exists.
    - `sortOrder` 'ASC' | 'DESC'
    - `itemsBeyondRetention` boolean
    - `createdAtLe` string, date-time
    - `createdAtGe` string, date-time

## Changes

> 57 revisions in range; 2 not diffed, 9 could not be searched.

- **2026-08-14** `f593f6367694` — 1 info
  - added the new optional `query` request parameter `sortBy`

[Change history](https://skmtc.dev/vapiai/apis/vapi-api/changes/v2/campaign/:id/contacts/get.md)

---

[API](https://skmtc.dev/vapiai/apis/vapi-api.md) · [All operations](https://skmtc.dev/vapiai/apis/vapi-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/vapiai/vapi-api/revisions/872ff45af53b/schema)
