Campaigns
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
idstringrequireduuid
Returns
Returns 200 OK with a CampaignEligibility in data. Otherwise returns an error; Errors lists every code and which to retry.
campaignIdstring | nullrequirednullwhen checked before saving (POST /campaigns/eligibility).uuid
checkedAtstringrequiredWhen the check ran.
date-time
audienceCountintegerrequiredContacts in the audience, before any channel's exclusions.
min 0 · max 9007199254740991
blockersstring[]requiredBlockers for the campaign as a whole.
issuesobject[]requiredWhat the draft still lacks, exactly as sending would refuse it (
DRAFT_INCOMPLETE).2 child attributes
pathstringrequiredThe field that is incomplete, such as
content.email.messagestringrequiredWhat is missing, in plain words.
channelsobject[]requiredOne entry per selected channel.
One of 2 shapes
- Email channel
6 child attributes
channel"email"requiredeligibleRecipientCountintegerrequiredContacts reachable on this channel after the exclusions.
min 0 · max 9007199254740991
sendableRecipientCountintegerrequiredeligibleRecipientCountwhen nothing blocks the campaign anywhere, else 0.min 0 · max 9007199254740991
blockersstring[]requiredWhat stops the email channel sending.
excludedobjectrequiredContacts left out of the audience, by reason.
4 child attributes
consentMissingintegerrequiredContacts without email consent.
min 0 · max 9007199254740991
topicUnsubscribedintegerrequiredConsented, but the campaign's topic does not reach them.
min 0 · max 9007199254740991
suppressedintegerrequiredContacts whose address is blocked, for example after a bounce.
min 0 · max 9007199254740991
missingEmailintegerrequiredContacts with no email address.
min 0 · max 9007199254740991
senderVerifiedbooleanrequiredWhether the sender domain is verified.
- Push channel
6 child attributes
channel"push"requiredeligibleRecipientCountintegerrequiredContacts reachable on this channel after the exclusions.
min 0 · max 9007199254740991
sendableRecipientCountintegerrequiredeligibleRecipientCountwhen nothing blocks the campaign anywhere, else 0.min 0 · max 9007199254740991
blockersstring[]requiredWhat stops the push channel sending.
excludedobjectrequiredContacts left out of the audience, by reason.
4 child attributes
consentMissingintegerrequiredContacts without push consent.
min 0 · max 9007199254740991
topicUnsubscribedintegerrequiredConsented, but the campaign's topic does not reach them.
min 0 · max 9007199254740991
suppressedintegerrequiredContacts blocked from push.
min 0 · max 9007199254740991
missingInstallationintegerrequiredContacts with no registered device.
min 0 · max 9007199254740991
applicationReadybooleanrequiredWhether the push app is set up to send.