Skip to main content
Fetch the full record for a scan, including the triage report once the scan has completed.

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
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.
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 the coverage 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.