Skip to main content
POST
Check Email Copy for Spam Triggers
Analyse the plain text of a cold email for the content signals SpamAssassin flags — the engine many SMB mailboxes, hosting providers, IT shops, and education and government domains run on inbound mail. The response gives the overall score, the spam threshold (default 5.0), a verdict (clean, borderline, or likely_flagged), and the rules that fired with their points and plain-English descriptions. SpamAssassin reacts to phrasing, not strategy. To lower a score, reword the phrases behind the highest-points rules and re-check — you keep the offer, you change the wording. It’s one tool in your deliverability belt: a clean result isn’t a guarantee of inbox placement, but it’s a fast way to reverse-engineer what content filters react to before you send.

Pricing and limits

Free — no credits are deducted. Usage is bounded by 100 checks per day per account, shared with the in-dashboard spam checker (both draw down the same pool), plus the standard 20 requests per second per API key. Both limits return 429; the code field (daily_quota_exceeded vs rate_limited) and the Retry-After header tell them apart. See errors for the full reference.

Authorizations

X-API-Key
string
header
required

API key for authentication

Body

application/json

Email copy to analyse for spam-filter triggers.

content
string
required

Plain-text email body to analyse. Cold email is plain text in practice; HTML is not required.

Required string length: 1 - 10000
subject
string | null

Optional subject line. When provided, it is included in the analysis.

Maximum string length: 255

Response

Successful Response

SpamAssassin analysis of the submitted email copy.

score
number
required

Total SpamAssassin score for the copy. Higher means more spam-like.

Example:

2.6

threshold
number
required

Score at or above which mail is treated as spam (SpamAssassin default is 5.0).

Example:

5

verdict
string
required

Overall assessment: clean (well below threshold), borderline (approaching threshold), or likely_flagged (at or above threshold).

Example:

"borderline"

rules
SpamRule · object[]
required

Content rules that fired, highest-scoring first. Empty when nothing triggered.