POST /sending/spam-check is available on Business and Enterprise plans (and to platform administrators). Free, Starter and Pay-as-you-go accounts receive 403 Forbidden.
The short answer
Always trust the returned
isSpam boolean when making an automated decision. It is calculated as score >= threshold, and the threshold field is the current server value (currently 5.0).
What each number means
score— penalty points added by every triggered rule. Lower is better. A score of0is clean.threshold— the cut-off forisSpam(currently5.0). Do not hard-code it; read it from the response.isSpam—truewhenscore >= threshold. This is the authoritative pass/fail signal.rating—low_risk,moderate_riskorhigh_risk.badgeColor—green,yelloworred, for dashboards.deliverabilityScore— the inverse health score from0to100. Higher is better. It is calculated as roughly(10 - min(score, 10)) / 10 * 100, so:- score
0.0→100 - score
1.2→88 - score
2.0→80 - score
5.0→50 - score
10.0+→0
- score
rules— the individual findings. Each hascode,points,title,descriptionand a plain-Englishrecommendation.summary— a human-readable sentence combining the risk label and score.
What to fix first
- Sort
rulesbypointsdescending. - Fix the highest-point rules first; they move the score the most.
- Re-run the check until
isSpamisfalseand the score is in the green band (< 2.0). - For a yellow result (
2.0 – 4.9), decide based on the rule types. Missing unsubscribe, deceptive links or missing plain text are worth fixing even though the result is not blocked. - Never treat a green score as a delivery guarantee. Domain authentication, sender reputation and recipient engagement still matter.
Common high-point rules
SDK examples
TypeScript
Python
PHP
Rust
