Skip to main content
When a scan reaches a terminal status (completed or failed), Tumban issues a POST to the scan’s callback_url with a JSON body. Headers:
  • Content-Type: application/json
  • X-Tumban-Signature, X-Tumban-Signature-V2, X-Tumban-Timestamp, X-Tumban-Org-Id — when the organization has a webhook secret. See Signature verification for the full header reference and verifier snippets.

Body

string
required
The scan id you received when submitting.
string
required
The submitted profile URL.
string
required
completed or failed. See Status values for the full reference.
string
required
ISO 8601 UTC timestamp.
string
required
See Recommendation values. On a failed scan, Tumban defaults this to review_high so the profile lands in your queue for manual triage.
integer
required
0–100. On a failed scan, defaults to 50.
string
required
low, medium, or high. On a failed scan, defaults to low.
string[]
required
See Reason codes. On a failed scan, this is ["SCAN_FAILED"].
string
required
Human-readable summary. On a failed scan, this contains the error message.
string[]
required
URLs your reviewers should look at first. On a failed scan, this is ["manual_investigation_required"].
Short label describing the path Tumban followed (e.g. Profile -> External site). Empty string on a failed scan.
object
required
Which analysis steps ran. See Coverage.
object
required
The metadata you submitted with the scan, echoed back unchanged. Always present: defaults to {} when the scan was submitted without a metadata body field.
object[]
Per-URL evidence Tumban cited in support of the decision. May be [] when Tumban reached its decision without a per-URL citation to surface. See Evidence index.
string
Present when status is failed. Brief description of what went wrong.

Example — completed

Example — failed

Acknowledging a webhook

Tumban considers a webhook delivered when your endpoint responds with a 2xx status. Other statuses are retried — see Delivery and retries.