AntispamResultDto
Unique id for this inspection — correlate it with the webhook delivery and your logs.
26bc4f0d-ac21-407b-bf21-bb452cd17319The authoritative classification to act on. It is NOT a plain score threshold, so key your logic off this field, not off score.
Possible values: [clean, spam, phishing]
phishingSeverity / confidence, 0–100 (higher = more dangerous). A strength indicator, NOT the decision: use verdict to act, score for how strong the signal is. Rough guide: <25 low, 25–59 elevated, ≥60 high.
Possible values: >= 0 and <= 100
46True when the full AI analysis was applied; false = a reduced analysis was used.
truePlain-language, customer-safe explanation of the verdict — safe to surface to end users.
Dangerous: this message uses a shortened link and pushes you to “verify” a delivery, a common scam. Do not click it; go to the delivery company’s official app instead.layers object[]required
Per-layer evidence behind the verdict. Each entry has a layer id, a 0–100 contribution, and human-readable signal strings.
Evidence layer identifier.
L2This layer's risk contribution, 0–100.
20Human-readable evidence signals produced by this layer.
["lang:en","url-shortener"]This layer's own classification (AI layers only).
Possible values: [clean, spam, phishing]
phishingAI rationale for this layer (L4).
False when the AI model was unreachable (the check degrades to heuristics + threat-intel).
trueWall-clock latency of this layer's model/provider call, in ms.
1969usage object
Token usage for AI layers.
ROUNDBOX AI model that produced this layer (Henrietta classifier).
henrietta-classify1655900URLs/hosts detected in the message (including any decoded from QR codes). Each is checked against ROUNDBOX threat intelligence.
["http://bit.ly/verify-now"]Detected message language (ISO-639-1).
enattachments object[]
Per-attachment reputation summary. NOTE: the antispam API inspects the message body + URLs; full malware scanning of files (including password-protected archives) is the dedicated POST /api/v1/files endpoint.
invoice.pdfSHA-256 of the attachment.
e3b0c44298fc1c14…Hash-reputation disposition of the attachment (see note on the top-level field).
Possible values: [malicious, suspicious, clean, unknown]
cleanTotal time the whole inspection took, end to end, in milliseconds.
6884filescan object[]
Per-attachment deep file-scan results (nested file-scan jobs). Present on the async poll result/webhook; pending in the sync response.
invoice.pdfSHA-256 of the attachment.
Child file-scan job id — poll GET /api/v1/files/:jobId.
Possible values: [pending, done, failed]
doneCustomer-safe file verdict, present when status=done (no cost fields).
Ids of the nested file-scan jobs spawned for attachments — poll each via GET /api/v1/files/:jobId.
["9f1c2e00-0000-0000-0000-000000000001"]True when the message was blocked by an orthogonal policy (e.g. offensive language). Key drop/allow logic off this AND verdict.
trueWhy the message was blocked. Only present when blocked is true.
Possible values: [offensive-language]
offensive-languageoffensive object
Offensive-language check result — present only when the check ran (opt-in).
Possible values: [none, low, medium, high]
highOffensive-content categories found (masked evidence only).
["profanity","insult"]How many offending items were found (count only).
2Masked, customer-safe explanation — never reprints the offending words.
Message blocked for offensive language (profanity, insult).{
"inspectionId": "26bc4f0d-ac21-407b-bf21-bb452cd17319",
"verdict": "phishing",
"score": 46,
"modelAvailable": true,
"rationale": "Dangerous: this message uses a shortened link and pushes you to “verify” a delivery, a common scam. Do not click it; go to the delivery company’s official app instead.",
"layers": [
{
"layer": "L2",
"score": 20,
"signals": [
"lang:en",
"url-shortener"
],
"label": "phishing",
"rationale": "string",
"modelAvailable": true,
"latencyMs": 1969,
"usage": {
"model": "henrietta-classify",
"inputTokens": 165,
"outputTokens": 59,
"reasoningTokens": 0,
"cachedInputTokens": 0
}
}
],
"urls": [
"http://bit.ly/verify-now"
],
"lang": "en",
"attachments": [
{
"filename": "invoice.pdf",
"sha256": "e3b0c44298fc1c14…",
"disposition": "clean"
}
],
"elapsedMs": 6884,
"filescan": [
{
"filename": "invoice.pdf",
"sha256": "string",
"jobId": "string",
"status": "done",
"verdict": {}
}
],
"filescan_job_ids": [
"9f1c2e00-0000-0000-0000-000000000001"
],
"blocked": true,
"blockReason": "offensive-language",
"offensive": {
"severity": "high",
"categories": [
"profanity",
"insult"
],
"matchedCount": 2,
"maskedRationale": "Message blocked for offensive language (profanity, insult)."
}
}