Menu

Check whether a campaign can send

GET/v1/campaigns/{id}/eligibility

Requires an API key with the campaigns:read scope. About keys and scopes

Reports every blocker that would stop this campaign sending — unverified domain, empty audience, invalid content — without attempting a send. Campaign-wide blockers sit at the top; each selected channel reports its own reach and blockers. Sending is all or nothing, so one blocked channel sets every channel's sendableRecipientCount to 0. Call this before sending to turn a 409 into an actionable list. This is an estimate: it neither reserves quota nor guarantees delivery.

Path parameters

idstringrequired

uuid

Returns

Returns 200 OK with a CampaignEligibility in data. Otherwise returns an error; Errors lists every code and which to retry.

campaignIdstring | nullrequired

null when checked before saving (POST /campaigns/eligibility).

uuid

checkedAtstringrequired

When the check ran.

date-time

audienceCountintegerrequired

Contacts in the audience, before any channel's exclusions.

min 0 · max 9007199254740991

blockersstring[]required

Blockers for the campaign as a whole.

issuesobject[]required

What the draft still lacks, exactly as sending would refuse it (DRAFT_INCOMPLETE).

2 child attributes
pathstringrequired

The field that is incomplete, such as content.email.

messagestringrequired

What is missing, in plain words.

channelsobject[]required

One entry per selected channel.

One of 2 shapes
Email channel
6 child attributes
channel"email"required
eligibleRecipientCountintegerrequired

Contacts reachable on this channel after the exclusions.

min 0 · max 9007199254740991

sendableRecipientCountintegerrequired

eligibleRecipientCount when nothing blocks the campaign anywhere, else 0.

min 0 · max 9007199254740991

blockersstring[]required

What stops the email channel sending.

excludedobjectrequired

Contacts left out of the audience, by reason.

4 child attributes
consentMissingintegerrequired

Contacts without email consent.

min 0 · max 9007199254740991

topicUnsubscribedintegerrequired

Consented, but the campaign's topic does not reach them.

min 0 · max 9007199254740991

suppressedintegerrequired

Contacts whose address is blocked, for example after a bounce.

min 0 · max 9007199254740991

missingEmailintegerrequired

Contacts with no email address.

min 0 · max 9007199254740991

senderVerifiedbooleanrequired

Whether the sender domain is verified.

Push channel
6 child attributes
channel"push"required
eligibleRecipientCountintegerrequired

Contacts reachable on this channel after the exclusions.

min 0 · max 9007199254740991

sendableRecipientCountintegerrequired

eligibleRecipientCount when nothing blocks the campaign anywhere, else 0.

min 0 · max 9007199254740991

blockersstring[]required

What stops the push channel sending.

excludedobjectrequired

Contacts left out of the audience, by reason.

4 child attributes
consentMissingintegerrequired

Contacts without push consent.

min 0 · max 9007199254740991

topicUnsubscribedintegerrequired

Consented, but the campaign's topic does not reach them.

min 0 · max 9007199254740991

suppressedintegerrequired

Contacts blocked from push.

min 0 · max 9007199254740991

missingInstallationintegerrequired

Contacts with no registered device.

min 0 · max 9007199254740991

applicationReadybooleanrequired

Whether the push app is set up to send.