---
title: "Validate an SMS campaign"
method: GET
path: "/sms/campaigns/{id}/validate"
tags: ["SMS campaigns"]
---

# Validate an SMS campaign

`GET /sms/campaigns/{id}/validate`

## Request

- Base URL: `https://www.unitpost.com/api/v1`
- URL: `https://www.unitpost.com/api/v1/sms/campaigns/{id}/validate`
- Auth: HTTP bearer

Check whether an SMS campaign could send now and who it would reach, without sending anything: `can_send`, the `blockers` a send would be refused for, the `reachable` count, the skip breakdown (`no_marketing_consent`, `quiet_hours_deferred`, and the rest in `skipped_by_reason`), when a quiet-hours hold would let it start, and whether a sender's use case or a missing template variable would block the send. Rate-limited per workspace. Requires the `campaigns:read` capability.

## Response `200`

The validation report.

- SmsCampaignValidation
  - `object` 'sms_campaign_validation', required
  - `campaign_id` string, required
  - `can_send` boolean, required
  - `blockers` object[], required
    - `code` string, required
    - `message` string, required
  - `total` number, required
  - `reachable` number, required
  - `skipped` number, required
  - `no_marketing_consent` number, required
  - `quiet_hours_deferred` number, required
  - `skipped_by_reason` object[], required
    - `reason` string, required
    - `count` number, required
    - `remedy` string, required
  - `routing` 'automatic' | 'fixed' | 'pool', required
  - `earliest_start` object, nullable, required
    - `at` string, required
    - `reason` 'quiet_hours', required
    - `countries` string[], required
  - `use_case_mismatch` boolean, required
  - `unresolved_variables` string[], required

## Other responses

- `202`: Accepted: the campaign has a large audience and its recipients are being counted in the background (a `job`). Poll this endpoint; it answers `200` with the report once the job completes.
- `401`: Missing or invalid API key.
- `403`: Insufficient scope, or SMS is not on this plan.
- `404`: SMS campaign not found, or SMS is not enabled.
- `409`: The campaign is archived (restore it first).
- `429`: Too many validation requests.

---

[API](https://skmtc.dev/unitpost/apis/unitpost-api.md) · [All operations](https://skmtc.dev/unitpost/apis/unitpost-api/llms.txt) · [OpenAPI document](https://skmtc.dev/unitpost/apis/unitpost-api/revisions/86ff7c890967?raw)
