Skip to main content
The Why-Not API performs on-demand diagnostic analysis of the decision pipeline for a specific customer-offer pair. It evaluates all decisioning gates and contact policies, returning a detailed breakdown with pass/block/skip status and human-readable reasons for each.
For a specific past request, use /recommend with explain: true instead: its rejectedOffers[] (also persisted on DecisionTrace.rejectedOffers) lists a structured reason for every candidate any stage dropped — including stages this endpoint doesn’t re-evaluate, such as consent, suppression rules, tenant-wide frequency caps, the maturity-ramp cold-start floor, guardrails, channel-coupling cascade, and the rank cut. See Recommend and Decision Traces.
See the Action Analysis (Why-Not) feature page for business context, interpretation guidance, and common workflows.

Base Path


GET /api/v1/customers//why-not/

Run a Why-Not analysis explaining why a specific offer is eligible or blocked for a specific customer. Roles: any authenticated user (no specific role required)

Path Parameters

Response 200

Top-Level Response Fields

Qualification Object

Qualification Detail Fields

Contact Policy Object

Same structure as the qualification object, with these detail fields:

Customer Data Object

Interaction History Object


Error Codes

Example — Offer Not Found


Example


See Also