---
title: "Get SMS campaign stats"
method: GET
path: "/campaigns/sms/{campaign_id}/stats/"
tags: ["campaigns"]
---

# Get SMS campaign stats

`GET /campaigns/sms/{campaign_id}/stats/`

## Request

- Base URL: `https://api.hive.co/v2`
- URL: `https://api.hive.co/v2/campaigns/sms/{campaign_id}/stats/`
- Auth: HTTP bearer

Engagement and revenue stats for a single SMS campaign. `stats` is null until the campaign's cached stats have been computed. SMS has no open tracking, so clicks are the engagement signal.

## Path parameters

- `campaign_id` string, required

## Headers

- `X-Partner-Id` string, required

## Response `200`

- SMSCampaignStatsResponse
  - `campaign_id` string, required
  - `stats_refreshed_at` string, date-time, nullable, required
  - `stats` SMSCampaignStats, required: Explicit, versioned view over the stats dict assembled by SMSCampaignsService. The cached subdocuments are never passed through, so internal key changes can't break API consumers.
    - `counts` SMSCampaignEngagementCounts
      - `sent` integer
      - `delivered` integer
      - `clicked` integer
      - `failed` integer
      - `opted_out` integer
      - `opted_in` integer
      - `undeliverable` integer
    - `rates` SMSCampaignEngagementRates
      - `delivery_rate` number, double
      - `click_rate` number, double
      - `opt_out_rate` number, double
      - `failed_rate` number, double
    - `revenue` SMSCampaignRevenue
      - `ecommerce` CampaignChannelRevenue
        - `num_orders` integer
        - `total_revenue` number, double
      - `ticketing` CampaignChannelRevenue
        - `num_orders` integer
        - `total_revenue` number, double
      - `total` CampaignChannelRevenue
        - `num_orders` integer
        - `total_revenue` number, double

## Other responses

- `404`: Campaign not found.

---

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