CrawlCheck Trace API
The Trace API from CrawlCheck — 2 operation(s) for trace.
Operations 3
GET
/api/trace/coverage
Trace coverage: per scan, how many findings and claims link their own rule…
#
The Trace API from CrawlCheck — 2 operation(s) for trace.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/crawlcheck-io:crawlcheck-io-trace-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Crawlcheck Io Trace API
version: '1'
contact:
name: CrawlCheck
url: https://crawlcheck.io/policy
email: hello@crawlcheck.io
license:
name: Terms
url: https://crawlcheck.io/policy
x-core-contract:
promise: 'These operations are the core contract. They stay at /api/v1 and keep answering for at least 180 days after any /api/v2 is announced; their stable fields change only in a new major version, and their provisional fields only after 30 days'' notice, per /docs/api/compatibility. Verifying what they return needs none of these calls: crawlcheck-verify.mjs checks a document on your machine against the published keys (/.well-known/http-message-signatures-directory) and the rotation record, read once with --online or saved for --keys. Everything else documented here is useful but secondary, and may change with the notice its fields'' tags promise.'
operations:
- method: GET
path: /api/v1/resolve
operationId: resolveDomainV1
- method: POST
path: /api/v1/resolve
operationId: resolveBatchV1
- method: POST
path: /api/v1/preflight
operationId: preflightV1
- method: GET
path: /api/v1/decisions/{sha256}
operationId: decisionCheckV1
- method: GET
path: /api/v1/revocations
operationId: revocations
- method: GET
path: /api/v1/visitor
operationId: visitorResolveV1
- method: POST
path: /api/v1/visitor
operationId: visitorResolveBatchV1
- method: GET
path: /api/v1/mcp/scan
operationId: mcpScanUrl
- method: POST
path: /api/v1/mcp/lock/check
operationId: mcpLockCheck
list: https://crawlcheck.io/api/v1/core
description: 'Operations tagged Trace across 2 of this provider''s published API definitions: crawlcheck-io-openapi.json, crawlcheck-io-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://crawlcheck.io
tags:
- name: Trace
paths:
/api/trace/coverage:
get:
operationId: traceCoverage
summary: 'Trace coverage: per scan, how many findings and claims link their own rule…'
parameters:
- name: id
in: query
schema:
type: string
responses:
'200':
description: crawlcheck-trace-coverage or crawlcheck-trace-coverage-record
content:
application/json:
examples:
worked:
summary: Captured from production on 2026-10-02; the last stored scans; ?id= narrows to one.
value:
ok: true
kind: crawlcheck-trace-coverage
scans: 34
complete: 34
findings:
total: 102
linked: 102
pct: 100
claims:
total: 36
linked: 36
pct: 100
broken_parent_links: 0
malformed_ids: 0
dropped_spans: 0
stage_errors:
total: 0
linked: 0
joined_a_caller_trace: 1
ci:
at: '2026-10-02T05:47:12.697Z'
green: true
traces: 19
failures: []
run: https://github.com/emmanuelorta/crawlcheck/actions/runs/36970459837
per_scan:
- id: iwmx7wvzss
domain: brandwatch.com
at: '2026-10-02T13:22:24.603Z'
spans: 53
findings: 4
linked: 4
claims: 1
claims_linked: 1
errors: 0
errors_linked: 0
broken: 0
malformed: 0
dropped: 0
joined: false
complete: true
coverage: https://crawlcheck.io/api/trace/coverage?id=iwmx7wvzss
- id: 6obgbksg1k
domain: braintrust.dev
at: '2026-10-02T13:21:07.229Z'
spans: 49
findings: 2
linked: 2
claims: 2
claims_linked: 2
errors: 0
errors_linked: 0
broken: 0
malformed: 0
dropped: 0
joined: false
complete: true
coverage: https://crawlcheck.io/api/trace/coverage?id=6obgbksg1k
- id: efg7olqtwc
domain: bolt.new
at: '2026-10-02T13:19:42.931Z'
spans: 54
findings: 2
linked: 2
claims: 1
claims_linked: 1
errors: 0
errors_linked: 0
broken: 0
malformed: 0
dropped: 0
joined: false
complete: true
coverage: https://crawlcheck.io/api/trace/coverage?id=efg7olqtwc
method: computed by trCoverage on each record when it is stored (the last 300 scans); /api/trace/coverage?id= recomputes it for any record from its stored trace
schema: https://crawlcheck.io/api/v1/schema#TraceV1
schema:
type:
- object
- 'null'
properties:
ok:
type:
- boolean
- 'null'
kind:
type:
- string
- 'null'
scans:
type:
- number
- 'null'
complete:
type:
- number
- 'null'
findings:
type:
- object
- 'null'
properties:
total:
type:
- number
- 'null'
linked:
type:
- number
- 'null'
pct:
type:
- number
- 'null'
additionalProperties: true
claims:
type:
- object
- 'null'
properties:
total:
type:
- number
- 'null'
linked:
type:
- number
- 'null'
pct:
type:
- number
- 'null'
additionalProperties: true
broken_parent_links:
type:
- number
- 'null'
malformed_ids:
type:
- number
- 'null'
dropped_spans:
type:
- number
- 'null'
stage_errors:
type:
- object
- 'null'
properties:
total:
type:
- number
- 'null'
linked:
type:
- number
- 'null'
additionalProperties: true
joined_a_caller_trace:
type:
- number
- 'null'
ci:
type:
- object
- 'null'
properties:
at:
type:
- string
- 'null'
green:
type:
- boolean
- 'null'
traces:
type:
- number
- 'null'
failures:
type:
- array
- 'null'
items: {}
run:
type:
- string
- 'null'
additionalProperties: true
per_scan:
type:
- array
- 'null'
items:
type:
- object
- 'null'
properties:
id:
type:
- string
- 'null'
domain:
type:
- string
- 'null'
at:
type:
- string
- 'null'
spans:
type:
- number
- 'null'
findings:
type:
- number
- 'null'
linked:
type:
- number
- 'null'
claims:
type:
- number
- 'null'
claims_linked:
type:
- number
- 'null'
errors:
type:
- number
- 'null'
errors_linked:
type:
- number
- 'null'
broken:
type:
- number
- 'null'
malformed:
type:
- number
- 'null'
dropped:
type:
- number
- 'null'
joined:
type:
- boolean
- 'null'
complete:
type:
- boolean
- 'null'
coverage:
type:
- string
- 'null'
additionalProperties: true
method:
type:
- string
- 'null'
schema:
type:
- string
- 'null'
additionalProperties: true
x-schema-source: worked-example
'404':
description: no such record
x-codeSamples:
- lang: Shell
label: curl
source: curl -s 'https://crawlcheck.io/api/trace/coverage'
security: []
x-auth: public; no credential read
tags:
- Trace
servers:
- url: https://crawlcheck.io
/api/trace/ci:
get:
operationId: traceCiResult
summary: The latest trace CI result (schema violations, broken parent links, unlinked…
responses:
'200':
description: crawlcheck-trace-ci
content:
application/json:
examples:
worked:
summary: Captured from production on 2026-10-02; the latest daily trace CI run and its history.
value:
ok: true
kind: crawlcheck-trace-ci
last:
v: 1
at: '2026-10-02T05:47:12.697Z'
green: true
traces: 19
schema_violations: 0
broken_parent_links: 0
unlinked_findings_after_tr1: 0
unlinked_findings_before_tr1: 55
self_test: true
failures: []
run:
repository: emmanuelorta/crawlcheck
run_id: '36970459837'
sha: fc2a498e1f788485ea4f510c1e642bab6847ba39
event: workflow_dispatch
url: https://github.com/emmanuelorta/crawlcheck/actions/runs/36970459837
history:
- at: '2026-10-02T05:47:12.697Z'
green: true
traces: 19
run: https://github.com/emmanuelorta/crawlcheck/actions/runs/36970459837
- at: '2026-10-02T05:45:19.533Z'
green: true
traces: 20
run: https://github.com/emmanuelorta/crawlcheck/actions/runs/36970327420
- at: '2026-10-02T05:43:41.911Z'
green: true
traces: 1
run: https://github.com/emmanuelorta/crawlcheck/actions/runs/36970208541
workflow: https://github.com/emmanuelorta/crawlcheck/blob/main/.github/workflows/trace.yml
schema:
type:
- object
- 'null'
properties:
ok:
type:
- boolean
- 'null'
kind:
type:
- string
- 'null'
last:
type:
- object
- 'null'
properties:
v:
type:
- number
- 'null'
at:
type:
- string
- 'null'
green:
type:
- boolean
- 'null'
traces:
type:
- number
- 'null'
schema_violations:
type:
- number
- 'null'
broken_parent_links:
type:
- number
- 'null'
unlinked_findings_after_tr1:
type:
- number
- 'null'
unlinked_findings_before_tr1:
type:
- number
- 'null'
self_test:
type:
- boolean
- 'null'
failures:
type:
- array
- 'null'
items: {}
run:
type:
- object
- 'null'
properties:
repository:
type:
- string
- 'null'
run_id:
type:
- string
- 'null'
sha:
type:
- string
- 'null'
event:
type:
- string
- 'null'
url:
type:
- string
- 'null'
additionalProperties: true
additionalProperties: true
history:
type:
- array
- 'null'
items:
type:
- object
- 'null'
properties:
at:
type:
- string
- 'null'
green:
type:
- boolean
- 'null'
traces:
type:
- number
- 'null'
run:
type:
- string
- 'null'
additionalProperties: true
workflow:
type:
- string
- 'null'
additionalProperties: true
x-schema-source: worked-example
x-codeSamples:
- lang: Shell
label: curl
source: curl -s 'https://crawlcheck.io/api/trace/ci'
security: []
x-auth: public; no credential read
tags:
- Trace
post:
operationId: traceCi
summary: Callable only by this repository's trace workflow (GitHub OIDC, audience…
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
phase:
type: string
enum:
- sample
- report
result:
type: object
description: 'phase report: the trace CI verdict'
required:
- phase
additionalProperties: true
responses:
'200':
description: sample or stored report
'403':
description: identity not proven
content:
application/json:
examples:
worked:
summary: Captured from production on 2026-10-02; only this repository's trace workflow can call it, with a GitHub OIDC token of audience crawlcheck-trace.
value:
ok: false
error: 'identity not proven: not a JWT'
trace_id: 89379f1579bfbf916e2fbad07a9d4353
span_id: dd192aac7ff67cb3
schema:
type:
- object
- 'null'
properties:
ok:
type:
- boolean
- 'null'
error:
type:
- string
- 'null'
trace_id:
type:
- string
- 'null'
span_id:
type:
- string
- 'null'
additionalProperties: true
x-schema-source: worked-example
x-codeSamples:
- lang: Shell
label: curl
source: curl -s -X POST 'https://crawlcheck.io/api/trace/ci'
security:
- bearer: []
x-auth: a GitHub Actions OIDC token of this repository's workflow; 403 otherwise
x-crawlcheck-budget:
request_body_max: 1048576
tags:
- Trace
servers:
- url: https://crawlcheck.io
components:
securitySchemes:
licenceKey:
type: apiKey
in: header
name: x-crawlcheck-key
description: 'Your licence key: cc_ followed by 32 hex characters. Sent on every keyed call.'
bearer:
type: http
scheme: bearer
description: The same licence key as a Bearer token. Accepted on /api/v1/* and /api/usage.
externalDocs:
url: https://crawlcheck.io/docs/api
description: Human-readable reference
x-refined-from:
- crawlcheck-io-openapi.json
- crawlcheck-io-openapi.yml