Validate an SMS campaign
GET/api/v1/sms/campaigns/{id}/validate
GET /sms/campaigns/{id}/validate
curl -X GET 'https://www.unitpost.com/api/v1/sms/campaigns/cmp_123/validate' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'User-Agent: my-app/1.0'Response · 200
{
"object": "sms_campaign_validation",
"campaign_id": "campaign_123",
"can_send": false,
"blockers": [
{
"code": "string",
"message": "string"
}
],
"total": 1,
"reachable": 0,
"skipped": 0,
"no_marketing_consent": 0,
"quiet_hours_deferred": 0,
"skipped_by_reason": [
{
"reason": "string",
"count": 1,
"remedy": "string"
}
],
"routing": "automatic",
"earliest_start": {
"at": "string",
"reason": "quiet_hours",
"countries": [
"string"
]
},
"use_case_mismatch": false,
"unresolved_variables": [
"string"
]
}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.
Parameters1 field
| Field | Type | Description |
|---|---|---|
idrequired | string · path | — |
Response · 200 fields14 fields
| Field | Type | Description |
|---|---|---|
objectrequired | string | — |
campaign_idrequired | string | — |
can_sendrequired | boolean | — |
blockersrequired | object[] | — |
totalrequired | number | — |
reachablerequired | number | — |
skippedrequired | number | — |
no_marketing_consentrequired | number | — |
quiet_hours_deferredrequired | number | — |
skipped_by_reasonrequired | object[] | — |
routingrequired | enumautomatic | fixed | pool | — |
earliest_startrequired | object | null | — |
use_case_mismatchrequired | boolean | — |
unresolved_variablesrequired | string[] | — |
200401403404409429