Get the accessibility report
const url = 'https://api.overwatch.weareheavy.dev/v1/sites/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/a11y-report';const options = {method: 'GET', headers: {'x-api-key': '<x-api-key>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.overwatch.weareheavy.dev/v1/sites/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/a11y-report \ --header 'x-api-key: <x-api-key>'The accessibility report from the site’s most recent accessibility run: the issue list plus a per-run summary with the 0–100 score, an AA conformance verdict, POUR-principle rollups, and compliance tallies for EN 301 549 and Section 508. Parallels the dead-link report.
summary.score is null when the latest run didn’t scan (the site is
not opted in via a11yEnabled). Suppressions (“Ignore”) and the site’s
excludePaths globs are applied here — suppressed and excluded
findings are removed from issues and the score is recomputed from
what remains, retroactively and reversibly.
Authorizations
Section titled “ Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “ Path Parameters ”The site’s UUID.
Responses
Section titled “ Responses ”The latest run, its active issues, summary, and audit layers.
object
A single crawl run and its summary metrics.
object
Epoch ms the run started.
Epoch ms the run finished, or null while running.
Distinct broken link targets found in the run.
Distinct source pages that had at least one broken link.
Synthesized 0–100 accessibility score, or null when the run didn’t scan.
Confirmed violations with critical impact.
Internal pages the accessibility scan covered in this run.
Distinct confirmed (page, rule) accessibility violations this run (0 for crawl runs).
Violations present in the previous accessibility run but gone in this one (the “fixed” trend).
Synthesized 0-100 SEO score, or null when the run didn’t extract SEO data.
Pages an SEO snapshot was captured for (at most pages_crawled).
Derived SEO issues at the time the run finalized.
Failure reason if state is failed, otherwise null.
crawl for a broken-link crawl, a11y for a standalone accessibility scan.
Findings from the latest run, with suppressed and exclude-path findings removed. Each finding is tagged with the standards its rule maps to.
A finding as returned in the report: the persisted row plus the standards its rule maps to and its WCAG success criterion + POUR principle.
object
The page the finding was made on.
The axe-core rule id (e.g. color-contrast, image-alt).
Axe impact — critical, serious, moderate, or minor.
The WCAG success criteria the rule maps to.
A short human-readable description of the rule.
Link to the rule’s documentation.
violation is confirmed; incomplete needs human review.
How many elements on the page matched.
JSON-encoded capped example nodes (selector/snippet/summary).
Epoch ms.
object
The WCAG conformance level of the rule, or null for best-practice rules.
Whether the rule falls under EN 301 549 (the EU Accessibility Act’s standard).
Whether the rule falls under US Section 508.
The WCAG success criterion (e.g. 1.1.1), or null.
Per-rule one-line descriptions (“what this checks”), keyed by rule id.
object
Per-rule W3C Understanding-WCAG page URLs, keyed by rule id.
object
Score points recoverable by fixing each rule, keyed by rule id — for ranking issues by real impact on the score. Empty when the run has no score.
object
Every page with an active finding, ranked worst-first.
object
The page’s own 0–100 score.
Distinct (page, rule) findings on the page.
Confirmed violation occurrences.
Occurrences axe couldn’t decide on.
The WCAG coverage matrix: every success criterion classified as fail
(an active violation maps to it), pass (auto-testable and clean), or
manual (no automated rule can test it — a human must). Grouped by
principle → guideline, ready to render.
object
object
The four POUR principles, each with its guidelines and criteria in WCAG order.
object
object
object
Distinct pages with a violation mapping to this SC.
The axe rule ids that failed this SC.
The criterion’s W3C “Understanding” page.
Manual WCAG review states, keyed by success criterion
(e.g. "2.1.4"). A documentation layer — it never
affects the score or verdict.
object
object
The user who set the state, if known.
Epoch ms of the last change.
Per-run accessibility summary. Severity counts reflect the exclusion-filtered findings; the score additionally reflects suppressions.
object
0–100 score recomputed after suppressions, or null when the run didn’t scan.
The pass/fail conformance judgment at the AA target level, decoupled from the score: any confirmed violation of a level-A or -AA success criterion breaks conformance (AAA and best-practice rules don’t).
object
Legal-exposure band when not compliant; null when compliant.
Active findings rolled up by POUR principle.
object
object
Violations present in the previous scan but gone in this one.
How many active rules/occurrences fall under each legal standard.
object
object
Distinct rules with active findings under the standard.
Total matched elements across those findings.
object
Distinct rules with active findings under the standard.
Total matched elements across those findings.
A suppression as returned in the report, with how many current findings it hides.
object
Epoch ms.
How many of the latest run’s findings this suppression hides.
Example
{ "run": { "state": "running", "kind": "crawl" }, "issues": [ { "type": "violation", "standards": { "wcagLevel": "A" }, "principle": "Perceivable" } ], "coverage": { "principles": [ { "principle": "Perceivable", "guidelines": [ { "criteria": [ { "level": "A", "status": "fail" } ] } ] } ] }, "manualChecks": { "additionalProperty": { "status": "verified" } }, "summary": { "verdict": { "targetLevel": "AA" } }}Missing or invalid credentials.
object
A human-readable error message.
Example
{ "error": "invalid api key"}The site was not found, or it has no runs yet.
object
A human-readable error message.
Example
{ "error": "no runs yet"}