The contract.
This reference is generated from the OpenAPI documents the services are built against, so it cannot describe a shape the API does not serve. The full integration guide is served by the API itself, to your key.
Synchronous scan
-
POST/v1/exposure/scanRun a free exposure scan for a subject public -
GET/healthLiveness (does not touch Redis) public -
GET/readyReadiness (checks Redis) public
Jobs, results and webhooks
-
GET/v1/premium/statusOperational status of the engine bearer key -
GET/v1/premium/removals/completionVerified-effective completion for your own removals bearer key -
GET/v1/premium/removals/queueYour position in the statutory filing queue bearer key -
POST/v1/premium/jobsCreate a premium job (deep scan, optionally + removal) bearer key -
GET/v1/premium/jobsList the calling key's jobs (operational) bearer key -
GET/v1/premium/creditsPrepaid credit balance and remaining daily quota bearer key -
GET/v1/premium/jobs/{jobId}Get a job (status + result when done) bearer key -
DELETE/v1/premium/jobs/{jobId}Cancel a job bearer key -
GET/v1/premium/sandbox/scanDeterministic fixture scan results (no job, no credit, no customer data) bearer key -
GET/v1/premium/sandbox/webhooksWebhook fixtures including the failure modes bearer key -
GET/v1/premium/jobs/{jobId}/evidenceScreenshot evidence metadata for a job's findings bearer key -
GET/v1/premium/evidence/{evidenceId}Fetch screenshot bytes (owner-scoped) bearer key -
POST/v1/premium/jobs/{jobId}/disputesReport that one of our findings is wrong bearer key -
GET/v1/premium/jobs/{jobId}/disputesDisputes filed against this job bearer key -
GET/v1/premium/disputes/ratesOur own error rates, with denominators bearer key -
GET/v1/premium/openapi.yamlThis document bearer key -
GET/healthLiveness (does not touch Redis/Postgres) public -
GET/readyReadiness (checks Redis + Postgres) public
Read the contract before you ask us for anything.
These are the same OpenAPI documents the services are built against — not a summary of them. Every field, every enum, every error. If a response shape is not in here, we do not serve it.
/contract/premium-openapi.yamlPremium contract — jobs, evidence states, webhooks, disputes, evidence media/contract/free-openapi.yamlFree tier contract — the synchronous teaser scan
Run a response, before you integrate.
Deterministic fixtures, byte-identical to what the sandbox endpoint returns to a key. Assert against them in your own test suite — they do not move.
Start with inconclusive. It returns exposedCount: 0 and canAssertClean: false, which means unknown, not clean. Gate any reassuring copy on canAssertClean, never on a zero count — that is the one genuinely harmful way to be wrong in a privacy report.
/sandbox/inconclusive.jsonZero findings, and we will not call it clean/sandbox/clean.jsonZero findings, every source actually read/sandbox/candidates.jsonA search hit we have not validated against the live page/sandbox/exposed.jsonConfirmed findings, direct and search-validated/sandbox/blocked.jsonEvery source unreadable — we report nothing rather than zero
The full guide
The complete integration guide, including request and response schemas, error taxonomy, webhook contract and the removal state model, is served by the API to an authenticated key:
curl -H "Authorization: Bearer $KEY" \
https://api.brokerblitzer.com/v1/premium/docs
curl -H "Authorization: Bearer $KEY" \
https://api.brokerblitzer.com/v1/premium/docs.json # version + changelog
It is served from the same build as the API, so the guide can never describe a version you are not talking to. docs.json reports the version and a changelog, so you can detect a change without diffing prose.
Contract versions in this build: Free 1.0.0 · Premium 1.2.0.