Pick a host from the directory response, then request /api/sites/{host}/report. The report supplies findings, available fix prompts and links to its human-readable and Markdown versions.
Available reads
Search published listings
GET /api/sites
Returns published directory entries. Removed, deleted, blocked, opted-out and redirected listings are excluded. Filters combine with AND; repeated category, tag, platform and band values use OR, while capabilities use AND. Unknown well-formed slugs return no matches. Results may change between pages when a scan is published; an out-of-range page returns an empty data array with the real total.
q
Case-insensitive literal substring of host, name or tagline. Whitespace is trimmed.
category
Active category slug from /api/categories. Repeat for OR.
tag
Active tag slug from /api/tags. Repeat for OR.
platform
Platform slug from /api/sites/facets. Repeat for OR.
capability
Passed check ID from /api/sites/facets. Repeat for AND: every specified check must pass.
band
Band ID from /api/standards data.rubric.bands. Repeat for OR.
status
Listing ownership status.
minScore
Minimum score, inclusive. Must not exceed maxScore.
maxScore
Maximum score, inclusive.
sort
Result order; paid plans never change ranking.
page
Page number.
limit
Entries per page.
Find existing reports by name or domain
GET /api/sites/suggestions
Returns up to five published catalogue identities: host, name and logoUrl. Matches literal host or name text, ignoring case. Exact host matches come first, then exact names, prefixes and substrings; ties use host order. Scores and payments do not affect ranking. The same visibility rules as the directory apply. Reading suggestions never starts a scan.
q (required)
Name or canonical domain fragment. Whitespace is trimmed; wildcard characters are literal.
Discover filters and counts
GET /api/sites/facets
Accepts listing filters, but no sort, page or limit. Category counts ignore the selected category; platform counts ignore the selected platform. Signal counts keep every current filter and add the candidate signal. Counts describe listings, not the whole web.
q
Case-insensitive literal substring of host, name or tagline. Whitespace is trimmed.
category
Active category slug from /api/categories. Repeat for OR.
tag
Active tag slug from /api/tags. Repeat for OR.
platform
Platform slug from /api/sites/facets. Repeat for OR.
capability
Passed check ID from /api/sites/facets. Repeat for AND: every specified check must pass.
band
Band ID from /api/standards data.rubric.bands. Repeat for OR.
status
Listing ownership status.
minScore
Minimum score, inclusive. Must not exceed maxScore.
maxScore
Maximum score, inclusive.
Read a published report
GET /api/sites/{host}/report
Reads an existing report without starting a scan. Use a canonical host from /api/sites: lowercase ASCII/punycode, without scheme, path, port, leading www or trailing dot. Blocked, opted-out and redirected reports can be read by host and have no score. Prompt visibility and historical access follow the listing's plan, independent of the caller. Missing, removed, deleted and never-published listings return 404.
host (required)
Canonical hostname, for example example.com.
scan
Published scan ID belonging to this site. Omit for the latest report. A historical scan requires the listing's history entitlement.
Check report generation status
GET /api/sites/{host}/enrichment
Reads the current published scan's description and file-generation states without starting work. Poll only while queued, generating or delayed; pause when hidden or offline and back off on errors. An opaque revision changes when content or its status changes. Delayed work has an earliest retry time, not a completion estimate. Files are null without entitlement; the entire result is null for unscored reports. No model, error details, costs or internal job identifiers are exposed. Unknown queries are rejected.
host (required)
Canonical hostname.
Read the current scoring methodology
GET /api/standards
Current rubric, score bands, public check descriptions and the AI crawler registry. Historical reports retain their own scoring version. Read band IDs and labels here instead of hardcoding them. Capabilities and experimental checks do not add points.
List active categories
GET /api/categories
Active categories, including empty ones, ordered by order then slug. Use slug as the category filter.
List active industry tags
GET /api/tags
Active tags, including unused ones, ordered by order then slug. Use slug as the tag filter.
Read responses and handle failures
Successful responses wrap their result in data. Directory results also include pagination: page, limit, total and totalPages. The default page size is 24, the maximum is 100, and pages start at 1. Response objects may gain fields; ignore fields your client does not use.
Listing filters and report reads reject unknown query parameters and repeated scalar parameters with HTTP 400. Filters return no matches for unknown, well-formed slugs. Category, tag and standards reads take no parameters; additional query parameters are ignored.
A missing report returns 404. Historical reports can return 403 when the listing’s plan does not include history. Public access does not change how many fix prompts that listing exposes. Blocked, opted-out and redirected (moved) reports have no score; null never means zero.
JSON errors include an error message and may include validation issues. HTTP 502 or 503 means a temporary service problem; retry with backoff. Use bounded pages and avoid tight polling. Catalogue reads may reuse data for up to a minute; removals invalidate that cache.