> ## Documentation Index
> Fetch the complete documentation index at: https://docs.verbeo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Campaign stats

> Campaign state plus a per-contact-status breakdown.

Use this when you need a real-time breakdown of how many contacts are pending, calling, completed, etc. For just the high-level state and aggregate counters, [Get campaign](/api-reference/campaigns/get) is cheaper.

## Path parameters

<ParamField path="id" type="string" required>
  UUID of the campaign.
</ParamField>

## Request

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://api.verbeo.ai/v1/campaigns/0175091d-2c3b-4aef-8c45-dbbe24f7b3ff/stats" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const res = await fetch(
    `https://api.verbeo.ai/v1/campaigns/${campaignId}/stats`,
    { headers: { Authorization: `Bearer ${process.env.VERBEO_API_KEY}` } },
  );
  const { data } = await res.json();
  ```

  ```python Python theme={null}
  res = requests.get(
      f"https://api.verbeo.ai/v1/campaigns/{campaign_id}/stats",
      headers={"Authorization": f"Bearer {os.environ['VERBEO_API_KEY']}"},
  )
  stats = res.json()["data"]
  ```
</CodeGroup>

## Response

`200 OK`.

```json theme={null}
{
  "success": true,
  "data": {
    "campaign_id": "0175091d-2c3b-4aef-8c45-dbbe24f7b3ff",
    "campaign_name": "Q2 Sales Outreach",
    "status": "running",
    "total_contacts": 250,
    "completed_calls": 41,
    "successful_calls": 38,
    "failed_calls": 3,
    "contact_status_breakdown": {
      "pending": 209,
      "calling": 0,
      "completed": 38,
      "failed": 3,
      "retry_scheduled": 0,
      "cancelled": 0
    },
    "started_at": "2026-05-04T15:00:00.000Z",
    "business_hours": null,
    "completed_at": null,
    "scheduled_at": null,
    "max_retries": 2,
    "retry_intervals": [5, 30],
    "created_at": "2026-05-04T14:55:12.000Z",
    "updated_at": "2026-05-04T15:30:01.000Z"
  }
}
```

`contact_status_breakdown` always includes the keys above, even when their count is zero. Unknown statuses (e.g. introduced server-side after this version of the docs) will appear as additional keys.

## Errors

`CAMPAIGN_NOT_FOUND` (404), `STATS_FAILED` (500). See [Campaigns overview](/api-reference/campaigns/overview#error-codes) and [Errors](/api-reference/errors).

***


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.