reason_codes is a list of short identifiers explaining why a scan
received its recommendation. Codes can be combined; treat the list as
an unordered set and as open-ended. New codes may be added over
time, so code defensively against unknown codes — never assume the list
is exhaustive or in a fixed order.
Categorical codes
Emitted when matching keywords or domains are found.
| Code | Meaning |
|---|
PROHIBITED_DOMAIN | A direct link to a domain on Tumban’s prohibited list. |
ADULT_KEYWORDS | Adult-content keywords detected in profile text. |
ADULT_CONTENT_LINK | Link to an adult-content platform or service. |
ADULT_SERVICES_KEYWORDS | Adult-services keywords (escort, in-person services). |
EXTERNAL_ADULT_CONTEXT | Profile is mentioned on adult sites elsewhere on the web. |
PIRACY_KEYWORDS | Piracy / unlicensed-streaming keywords detected. |
PIRACY_INDICATORS | Contextual signals of piracy (IPTV, cracked accounts, shared subscriptions). |
GAMBLING_KEYWORDS | Gambling / wagering keywords detected. |
GAMBLING_INDICATORS | Contextual signals of gambling. |
COUNTERFEIT_KEYWORDS | Counterfeit-goods keywords detected. |
COUNTERFEIT_INDICATORS | Contextual signals of counterfeit goods. |
ACCOUNT_SHARING_KEYWORDS | Account-sharing or subscription-sharing keywords detected. |
Pattern codes
Emitted when Tumban’s analysis identifies a violation pattern.
| Code | Meaning |
|---|
SUSPICIOUS_LINK_CHAIN | Link path leads to a prohibited destination through one or more redirects. |
EVASION_PATTERN | High proportion of login-gated links combined with promotional language. |
DARK_FUNNEL_PATTERN | Profile pushes users to private messaging channels with vague promotion. |
Exculpatory and clean codes
| Code | Meaning |
|---|
EXCULPATORY_CONTEXT | Prohibited keywords appear, but in journalism, education, advocacy, or past-tense framing. The score is suppressed. |
CLEAN_PROFILE | Tumban’s analysis explicitly cleared the profile. |
Content safety codes
Emitted when Tumban’s content classification flagged text or an image.
| Code | Meaning |
|---|
TEXT_FLAGGED | Profile text was flagged by the safety classifier. |
IMAGE_FLAGGED | Profile or banner image was flagged by the safety classifier. |
UNSAFE_CONTENT_BLOCKED | Upstream safety guardrails refused to analyze the input — treated as a finding, not an error. |
VIOLENCE_CONTENT | Violence flagged by the safety classifier. |
HATE_CONTENT | Hate speech flagged by the safety classifier. |
SELF_HARM_CONTENT | Self-harm content flagged by the safety classifier. |
Adjudication codes
Emitted when a follow-up review pass evaluated a borderline score and
changed it. A pass that leaves the score unchanged emits no
adjudication code.
| Code | Meaning |
|---|
SECONDARY_REVIEW_CONFIRMED | Follow-up review pass raised the score, escalating it to at least review_medium. |
SECONDARY_REVIEW_DOWNGRADED | Follow-up review pass downgraded the initial score. |
Failure codes
| Code | Meaning |
|---|
ANALYSIS_ERROR | Contextual analysis step failed due to an infrastructure error (timeout, network, upstream 5xx). Scores 10 (neutral). |
PARSE_ERROR | Contextual analysis returned a malformed response. Conservative fallback score 50. |
SCAN_FAILED | The scan as a whole could not produce a triage report. Webhook payload only — see the error field. |
New codes may be added over time. Treat unknown codes as
informational rather than failing your integration on them.