---
title: "Get Campaign Stats"
method: GET
path: "/v1/campaigns/{id}/stats"
tags: ["Campaigns"]
---

# Get Campaign Stats

`GET /v1/campaigns/{id}/stats`

Get aggregate engagement stats for a sent campaign (sends, deliveries, opens, clicks, unsubscribes, bounces, and rates). Stats are sourced from the tracking worker and may be cached and slightly stale. botOpens, botClicks, and mppOpens reflect Apple Mail Privacy Protection and bot detection when available. Requires API key with campaign:read.

## Path parameters

- `id` string, required

## Response `200`

Campaign stats

- ApiResponseCampaignStats
  - `success` boolean, required
  - `data` object, nullable — Aggregate engagement stats for a campaign. Sourced from the tracking worker; may be cached and slightly stale.
    - `totalSent` integer, required
    - `totalDelivered` integer, required
    - `uniqueOpens` integer, required
    - `totalOpens` integer, required
    - `uniqueClicks` integer, required
    - `totalClicks` integer, required
    - `unsubscribes` integer, required
    - `bounces` integer, required
    - `openRate` number, required — Unique opens divided by delivered.
    - `clickRate` number, required — Unique clicks divided by delivered.
    - `lastUpdated` string, date-time, required — When these stats were last refreshed from the tracking worker.
    - `botOpens` integer — Opens attributed to bots or automated scanners, when detected.
    - `botClicks` integer — Clicks attributed to bots or automated scanners, when detected.
    - `mppOpens` integer — Opens attributed to Apple Mail Privacy Protection, when detected.
    - `conversion` object — Conversion outcomes attributed to this campaign (last click within five days, single credit). Omitted entirely when no conversion source has reported for the campaign; never returned as zeros. revenue is the signed net including refunds.
      - `conversions` integer — Count of attributed sales.
      - `revenue` number — Signed net revenue across sales, refunds, and chargebacks.
      - `currency` string, nullable — ISO code when all entries share one currency, otherwise null.
      - `source` 'connector' | 'api' | 'mixed'
  - `error` string, nullable

## Other responses

- `401` — Unauthorized
- `404` — Resource not found

---

[API](https://skmtc.net/migma/apis/migma-ai-api-v1.md) · [All operations](https://skmtc.net/migma/apis/migma-ai-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/migma/migma-ai-api-v1/revisions/2d06ad0e0bc3/schema)
