---
title: "Get Campaign Statistics"
method: GET
path: "/v2/campaigns/{campaignId}/stats"
tags: ["Campaigns"]
---

# Get Campaign Statistics

`GET /v2/campaigns/{campaignId}/stats`

## Request

- Base URL: `https://api.carecycle.ai`
- URL: `https://api.carecycle.ai/v2/campaigns/{campaignId}/stats`
- Auth: API key in header `x-api-key`

Get a campaign's numbers: customer statuses, outcomes, redials, and call attempts.

## Path parameters

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

## Response `200`

GET /v2/campaigns/:campaignId/stats Positive response

- GetV2CampaignsCampaignIdStatsPositiveResponse
  - `campaignId` string, uuid, required
  - `totalCustomers` number, required
  - `statusDistribution` object[], required
    - `status` string, required: Customer campaign status
    - `count` number, required: Count of customers with this status
    - `percentage` string, required: Percentage of total customers
  - `pendingBreakdown` object, required
    - `available` number, required: Pending customers with no contact attempts (attempts=0)
    - `inDistribution` number, required: Pending customers with at least one contact attempt (attempts>0)
    - `availablePercentage` string, required: Percentage of total customers that are available
    - `inDistributionPercentage` string, required: Percentage of total customers in distribution
  - `successBreakdown` object, required
    - `total` number, required: Total completed customers
    - `transferred` number, required: Completed via transfer
    - `appointmentBooked` number, required: Completed via appointment booking
    - `appointmentsAttended` number, required: Appointments that were attended
  - `attemptDistribution` object[], required
    - `attempts` number, nullable, required
    - `status` string, required: Final status after these attempts
    - `count` number, required: Number of customers
  - `failureReasons` object[], required: Why customers were skipped/failed, rolled up by client-safe reason
    - `code` string, required: Canonical client-facing reason code
    - `category` string, required: Reason category (compliance, data_quality, unreachable, …)
    - `label` string, required: Client-safe reason label
    - `description` string, required: Client-safe reason description
    - `count` number, required: Customers skipped/failed for this reason
  - `exitsByCall` object[], required: Exits bucketed by call attempt, each segmented by terminal disposition
    - `key` string, required
    - `label` string, required: Attempt bucket label (e.g. First call)
    - `detail` string, required: Attempt bucket sublabel (e.g. 2–3 attempts)
    - `total` number, required: Customers who exited in this attempt bucket
    - `segments` object[], required: Disposition mix within this bucket
      - `disposition` string, required: Terminal disposition / outcome-type of the exit
      - `count` number, required
  - `successByCall` object[], required: Successful outcomes bucketed by call attempt, segmented by disposition
    - `key` string, required
    - `label` string, required: Attempt bucket label (e.g. First call)
    - `detail` string, required: Attempt bucket sublabel (e.g. 2–3 attempts)
    - `total` number, required: Customers who exited in this attempt bucket
    - `segments` object[], required: Disposition mix within this bucket
      - `disposition` string, required: Terminal disposition / outcome-type of the exit
      - `count` number, required
  - `missingRequiredFields` object[], required: Which required fields were missing (and for how many customers)
    - `field` string, required
    - `count` number, required
  - `summary` object, required
    - `totalCustomers` number, required: Total customers in campaign
    - `completed` number, required: Completed customers
    - `failed` number, required: Failed customers
    - `pending` number, required: Pending customers
    - `conversionRate` string, required: Conversion rate percentage
    - `failureRate` string, required: Failure rate percentage
  - `outreachOverview` object, required
    - `readyNow` number, required: Customers ready for outreach now
    - `inProgress` number, required: Customers currently being worked
    - `completed` number, required: Customers who already reached the goal
    - `needsAttention` number, required: Customers that may need review
    - `attentionBreakdown` object, required
      - `unsuccessful` number, required: Customers with unsuccessful or exhausted outcomes
      - `stalled` number, required: Customers that have not progressed recently

## Other responses

- `400`: GET /v2/campaigns/:campaignId/stats Negative response 400
- `401`: GET /v2/campaigns/:campaignId/stats Negative response 401
- `403`: GET /v2/campaigns/:campaignId/stats Negative response 403
- `404`: GET /v2/campaigns/:campaignId/stats Negative response 404
- `409`: GET /v2/campaigns/:campaignId/stats Negative response 409
- `422`: GET /v2/campaigns/:campaignId/stats Negative response 422
- `429`: GET /v2/campaigns/:campaignId/stats Negative response 429
- `500`: GET /v2/campaigns/:campaignId/stats Negative response 500
- `502`: GET /v2/campaigns/:campaignId/stats Negative response 502
- `503`: GET /v2/campaigns/:campaignId/stats Negative response 503

---

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