Path parameters
string
required
The
scan_id returned by
POST /api/v2/scan/deep (or /scan/quick) or
one of the per-profile ids from a batch.Response
The response is the scan record. Fields you should rely on:string
required
Same value as
scan_id. Tumban tracks scans and profile records
under the same identifier.string
required
The batch id. Single scans (submitted via
POST /api/v2/scan/deep or /scan/quick) get a
synthetic single_<scan_id> batch id for internal bookkeeping; match
on the single_ prefix to distinguish single-scan submissions from
batched ones.string
required
The submitted profile URL.
string
required
See Status values.
string
Which mode the scan ran in:
deep or quick. A quick scan skips
link traversal, social-media scraping, and external context search;
the coverage object on the triage report
reflects the skipped steps. May be absent on legacy scans submitted
before scan modes existed (treat absent as deep).string
required
ISO 8601 UTC timestamp of when the scan was submitted.
string
When pipeline processing actually began.
null while waiting for a
concurrency slot.string
When pipeline processing finished.
null while still processing.boolean
Optional. Absent until the ban-checker has evaluated this profile
— the key is omitted (not
null) on fresh scans — then true if the
creator has been banned by the upstream platform (e.g. 404 / 410 /
redirect on the profile URL) or false if the profile is still live.
Test for it with "is_banned" in response, not
response["is_banned"] is None. Useful for skipping enforcement on
already-banned creators.string
The callback URL the scan was submitted with (or the org default if
not provided), as a string. Empty when no callback was configured.
object
The metadata you submitted with the scan, echoed back unchanged.
string
Present when
status is failed. Brief description of what went
wrong.string
ISO 8601 UTC timestamp of successful webhook delivery. Absent when
no callback was configured or delivery has not (yet) succeeded.
object
Present once
status reaches a terminal value with a usable result
(completed). Shape below.triage_report
string
required
One of
no_flags, review_low, review_medium, review_high. See
Recommendation values.integer
required
0–100. See Recommendations.
string
required
low, medium, or high. See Confidence.string[]
required
Machine-readable codes explaining the decision. See
Reason codes.
string
required
Human-readable summary of what was found.
string[]
required
URLs your reviewers should look at first.
string
required
Short label describing the path Tumban followed (e.g.
Profile -> External site).object[]
Per-URL evidence Tumban cited in support of the decision. See
Evidence index.
Coverage
Poll responses include thecoverage object too
— it lives at triage_report.coverage on GET /api/v2/scans/{scan_id}.
On the webhook payload the same object is delivered
as a top-level coverage key. Same fields either way; only the
placement differs. The scan’s status is completed even when
individual steps were skipped — read coverage to see what ran.
Example
The response also includes internal fields not listed above. These
reflect the underlying scan record and are subject to change. Do not
rely on their names, types, or presence; treat them as opaque.
Errors
Using the dashboard
Click any non-processing scan row from the Home page or the Scan page to open the scan detail. The page renders these read-only sections:- Summary — profile URL, scan id, status, submitted/completed timestamps, webhook delivery timestamp, error.
- Triage — recommendation badge, risk score, confidence, reason codes, reason summary.
- Coverage — which analysis steps ran, login-blocked URLs, referrer match counts.
- Raw JSON — collapsible “Show full document” panel that exposes the entire scan record.

