Reference/ Reason codes
Reference

Reason codes

Every code the API can return, what it means, what to do about it, and wording you can show to people.

Codes are stable strings. New ones may be added; none are renamed or reused. reasons is never empty, and codes appear in evaluation order, so the first one is usually the one to show.

Hard rules

Stage rules, always spam. These are bots; drop them silently.

codemeaningwording for people
HONEYPOT_FILLEDThe hidden trap field had a value. Humans cannot see it.A hidden field was filled in.
FAST_SUBMITThe form was submitted under two seconds after it loaded.The form was submitted faster than a person can type.
URL_IN_NAMEThe name field contains a URL.The name field contained a web address.
MANY_URLSThree or more URLs in the message. Legitimate messages occasionally hit this; a review folder is safer than dropping.The message contained several links.

Memory

Stage rules.

codemeaningwording for people
DUP_KNOWN_SPAMNear-identical to a message already classified as spam on any site. Always spam.The same message was sent to other sites recently.
DUP_KNOWN_HAMIdentical to a message you marked legitimate. Always ham.You marked this message as legitimate before.

Sender reputation

Stage rules when decisive, otherwise a soft signal alongside a model code.

codemeaningwording for people
IP_REPUTATION_BADThe visitor’s IP address has a recent history of spam.This sender’s address has sent spam recently.
EMAIL_REPUTATION_BADThe email address has.This email address has sent spam recently.
EMAIL_DOMAIN_REPUTATION_BADThe address’s domain has. Free-mail domains are never scored this way.This sender’s domain has sent spam recently.
EMAIL_REPUTATION_GOODThe address has a recent history of legitimate messages; the score was scaled down.This sender has written legitimately before.

Reputation from one site affects only that site until two independent sites agree. Counters halve every 14 days.

Soft signals

Contribute to the score and appear next to a model or language-model code. None of them is spam on its own.

codemeaning
URLS_PRESENTOne or two URLs in the message.
SCRIPT_MISMATCHCyrillic or CJK text on a site whose locale uses the Latin script.
DISPOSABLE_EMAILAddress at a known throwaway provider.
RISKY_TLDA top-level domain with a high spam share, such as .ru, .xyz, .top, .click.
RANDOM_EMAIL, RANDOM_NAMEMachine-looking identifiers: digit density, consonant runs, case switching.
NAME_EMAIL_MISMATCHNo part of the name appears in the address and the domain is not a free-mail provider.
SPAM_PHRASEOne or more learned high-precision spam phrases matched.
KEYWORD_STUFFINGVery low vocabulary diversity in a long message.

Classifier and language model

codestagemeaningwording for people
ML_SPAMmlThe classifier decided with at least 99 percent zone precision.Looks like an unsolicited pitch.
ML_HAMmlThe classifier is confident the message is legitimate.
LLM_SPAMllmGray-zone case; the language model judged it unwanted for this site.Not the kind of message this site is for.
LLM_HAMllmGray-zone case; the language model judged it legitimate.
LLM_UNAVAILABLEmlThe language-model call failed or timed out.
LLM_SKIPPEDmlThe request used mode: "fast", so the language model was not consulted. Re-classify in full mode if you want its opinion.
ML_GRAY_FALLBACKmlGray-zone case labelled by the classifier’s nearest side because the language model was skipped or unavailable. Treat as the review bucket.Borderline; worth a look.
↑↓ navigate↵ openDocs and blog