Skip to main content

POST /v1/scanner/scan

Scan a single domain. Returns in 2–5 seconds for most sites. Scope required: scan   Cost: 1 credit
Request fields: Response is a full MerchantScan object. The response includes a request_id field (also echoed in the X-Request-ID response header) — the same id appears as source: "request:<uuid>" on the credit ledger row that paid for the scan, so you can join consume rows back to scan results. See audit trail. The response also includes an X-Credits-Remaining header so you can track your balance without an extra call. The TypeScript SDK reads it automatically — see the SDK reference.

Errors

Validation typos and server errors are automatically refunded — see auto-refund on 4xx and 5xx. Common errors:

GET /v1/scanner/scan/:id

Retrieve a specific scan by UUID. Scope required: read   Cost: 0

GET /v1/scanner/scans/by-domain/:domain

Look up the freshest scan across the shared corpus for a given domain. Scope required: read   Cost: 0
Returns 404 if no scan exists for the domain.

GET /v1/scanner/scans

List scans with filters. Returns rows across all tenants — the shared scan corpus. Scope required: read   Cost: 0 Query parameters: Response:

GET /v1/scanner/scans/stats

Aggregate stats across the shared corpus.

GET /v1/scanner/scans/protocol-adoption

Detected/functional adoption rates per protocol.