← Docs
Get notified the moment a scan finishes. HMAC-signed, idempotent, with retries.
Configuration
Add webhooks at /account/webhooks. Each webhook has a URL, an event list, and an auto-generated signing secret.
Events
scan.completedScan finished (BLOCKER, FAIL, WARNING, OPTIMIZATION, or PASS). Includes score + verdict.
scan.failedScan errored out (network, parse error, etc).
scan.auto_fixedOne-click auto-fix rewrote a failed check.
credit.lowBalance dropped below 10% of monthly allocation.
credit.exhaustedBalance reached 0. Next scan will return 402.
Payload format
Every event is POSTed as JSON with an HMAC-SHA256 signature in X-Dokeo-Signature.
POST /your-endpoint
Content-Type: application/json
X-Dokeo-Signature: sha256=abc123...
X-Dokeo-Event: scan.completed
X-Dokeo-Delivery: evt_8f2k...
{
"event": "scan.completed",
"id": "evt_8f2k...",
"created_at": "2026-06-28T10:00:00Z",
"data": {
"scan_id": 1234,
"tenant": "shaikhrasul02",
"url": "https://example.com/post",
"verdict": "PASS",
"score": 87,
"credits_used": 1
}
}Verifying signatures
In your handler:
import hmac, hashlib
def verify(secret: str, header: str, body: bytes) -> bool:
# header = "sha256=abc123..."
expected = "sha256=" + hmac.new(
secret.encode(), body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, header)