Accessibility
Accessibility
/a11y-audit/v1/audit_url3 creditsRender a URL in headless Chromium and run a full axe-core WCAG audit → score, severity summary, per-issue evidence + fix-hints, and an honest manual-review list.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| url | required | — | Page URL to audit (http/https; bare domains get https:// prefixed). Private/internal/metadata targets are SSRF-blocked on every hop. |
| standard = wcag21aa | optional | wcag2a · wcag2aa · wcag21a · wcag21aa · wcag22aa · section508 · best-practice | Conformance standard to test against (selects the axe rule tag set). |
| viewport = desktop | optional | desktop · mobile · tablet | Viewport to render at before auditing (responsive a11y differs by breakpoint). |
| include_best_practice = false | optional | — | Add axe 'best-practice' rules on top of the chosen WCAG standard (usability checks beyond strict conformance). |
| include_passes = false | optional | — | Also return the rules that PASSED (passes[]) — useful for evidence reports. Default false (smaller response). |
| include_incomplete = true | optional | — | Return axe 'incomplete' results — checks that need human review (folded into needs_review). Default true. |
| include_fix_hints = true | optional | — | Attach a curated fix_hint to each issue (default true). |
| rules | optional | — | Restrict the audit to these axe rule ids (comma-separated or JSON array). Empty = all rules for the standard. |
| exclude_rules | optional | — | Disable these axe rule ids for the run (comma-separated or array). |
| include_selectors | optional | — | Only audit elements inside these CSS selectors (axe context include). |
| exclude_selectors | optional | — | Skip elements matching these CSS selectors (axe context exclude — drop third-party widgets you don't control). |
| max_issues = 0 | optional | 0–1000 | Cap the number of returned issues (0 = no cap). Summary counts are always complete. |
| wait_until = load | optional | load · domcontentloaded · networkidle · commit | Navigation wait condition before auditing. |
| wait_selector | optional | — | Additionally wait until this CSS selector is visible (15s budget) — the reliable signal for heavy SPAs. |
| delay_ms = 0 | optional | 0–5000 | Extra settle delay after load before auditing, 0-5000ms. |
| locale | optional | — | Browser locale (Accept-Language + Intl), e.g. en-US, de-DE, ar-EG. |
| user_agent | optional | — | Override the browser User-Agent. |
| headers | optional | — | Extra request headers (JSON object). Cookie/Authorization are stripped (no-login content policy). |
| fresh = false | optional | — | Bypass the audit cache and force a fresh render+audit. |
/a11y-audit/v1/audit_html2 creditsAudit raw HTML you supply (CI / staging use-case) — no fetch by default (fully offline, deterministic). Same axe-core engine + contract as audit_url.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| html | required | — | Raw HTML document/fragment to audit (≤4MB). Fragments are wrapped in a minimal document. The CI / staging path — no fetch unless allow_remote_resources=true. |
| allow_remote_resources = false | optional | — | Let the supplied HTML load remote css/img/fonts (SSRF-guarded). Default false = fully offline render (deterministic CI mode). |
| base_url | optional | — | Base URL for relative asset paths in the supplied HTML (injected as <base href>); SSRF-validated. |
| standard = wcag21aa | optional | wcag2a · wcag2aa · wcag21a · wcag21aa · wcag22aa · section508 · best-practice | Conformance standard to test against (selects the axe rule tag set). |
| viewport = desktop | optional | desktop · mobile · tablet | Viewport to render at before auditing (responsive a11y differs by breakpoint). |
| include_best_practice = false | optional | — | Add axe 'best-practice' rules on top of the chosen WCAG standard (usability checks beyond strict conformance). |
| include_passes = false | optional | — | Also return the rules that PASSED (passes[]) — useful for evidence reports. Default false (smaller response). |
| include_incomplete = true | optional | — | Return axe 'incomplete' results — checks that need human review (folded into needs_review). Default true. |
| include_fix_hints = true | optional | — | Attach a curated fix_hint to each issue (default true). |
| rules | optional | — | Restrict the audit to these axe rule ids (comma-separated or JSON array). Empty = all rules for the standard. |
| exclude_rules | optional | — | Disable these axe rule ids for the run (comma-separated or array). |
| include_selectors | optional | — | Only audit elements inside these CSS selectors (axe context include). |
| exclude_selectors | optional | — | Skip elements matching these CSS selectors (axe context exclude — drop third-party widgets you don't control). |
| max_issues = 0 | optional | 0–1000 | Cap the number of returned issues (0 = no cap). Summary counts are always complete. |
| wait_until = load | optional | load · domcontentloaded · networkidle · commit | Navigation wait condition before auditing. |
| wait_selector | optional | — | Additionally wait until this CSS selector is visible (15s budget) — the reliable signal for heavy SPAs. |
| delay_ms = 0 | optional | 0–5000 | Extra settle delay after load before auditing, 0-5000ms. |
| locale | optional | — | Browser locale (Accept-Language + Intl), e.g. en-US, de-DE, ar-EG. |
| user_agent | optional | — | Override the browser User-Agent. |
| headers | optional | — | Extra request headers (JSON object). Cookie/Authorization are stripped (no-login content policy). |
/a11y-audit/v1/compare1 creditDiff two audit snapshots (baseline vs current) → fixed[], new[], regressed nodes and score_delta. The CI-gate primitive: did this deploy improve or regress a11y?
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| baseline | required | — | A previous audit's data object (or its issues[] / summary). Pass the full data from an earlier audit_url/audit_html. |
| current | required | — | The newer audit's data object to compare against baseline. |
/a11y-audit/v1/explain_issuefreeExplain an axe rule id (no browser): what it means, which WCAG criteria it maps to, why it matters, who it affects, and a concrete fix template. Offline + instant.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| issue_id | required | — | An axe rule id (e.g. color-contrast, image-alt, label) to explain. |
| html_snippet | optional | — | Optional offending HTML snippet — echoed back with the explanation for context. |
/a11y-audit/v1/audit_interactive5 creditsRun interaction steps (click/hover/fill/press/scroll/wait) on a single page, THEN audit the resulting state — accessibility of opened menus, modals, expanded forms. One page load, no extra browser run.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| url | required | — | Page URL to audit (http/https; bare domains get https:// prefixed). Private/internal/metadata targets are SSRF-blocked on every hop. |
| actions | required | — | Ordered interaction steps to run before auditing (≤12). Each step: {type: click|hover|fill|press|wait|scroll, selector?, value?, ms?}. Audits the page in the resulting state (open menu/modal/form). |
| standard = wcag21aa | optional | wcag2a · wcag2aa · wcag21a · wcag21aa · wcag22aa · section508 · best-practice | Conformance standard to test against (selects the axe rule tag set). |
| viewport = desktop | optional | desktop · mobile · tablet | Viewport to render at before auditing (responsive a11y differs by breakpoint). |
| include_best_practice = false | optional | — | Add axe 'best-practice' rules on top of the chosen WCAG standard (usability checks beyond strict conformance). |
| include_passes = false | optional | — | Also return the rules that PASSED (passes[]) — useful for evidence reports. Default false (smaller response). |
| include_incomplete = true | optional | — | Return axe 'incomplete' results — checks that need human review (folded into needs_review). Default true. |
| include_fix_hints = true | optional | — | Attach a curated fix_hint to each issue (default true). |
| rules | optional | — | Restrict the audit to these axe rule ids (comma-separated or JSON array). Empty = all rules for the standard. |
| exclude_rules | optional | — | Disable these axe rule ids for the run (comma-separated or array). |
| include_selectors | optional | — | Only audit elements inside these CSS selectors (axe context include). |
| exclude_selectors | optional | — | Skip elements matching these CSS selectors (axe context exclude — drop third-party widgets you don't control). |
| max_issues = 0 | optional | 0–1000 | Cap the number of returned issues (0 = no cap). Summary counts are always complete. |
| wait_until = load | optional | load · domcontentloaded · networkidle · commit | Navigation wait condition before auditing. |
| wait_selector | optional | — | Additionally wait until this CSS selector is visible (15s budget) — the reliable signal for heavy SPAs. |
| delay_ms = 0 | optional | 0–5000 | Extra settle delay after load before auditing, 0-5000ms. |
| locale | optional | — | Browser locale (Accept-Language + Intl), e.g. en-US, de-DE, ar-EG. |
| user_agent | optional | — | Override the browser User-Agent. |
| headers | optional | — | Extra request headers (JSON object). Cookie/Authorization are stripped (no-login content policy). |
| fresh = false | optional | — | Bypass the audit cache and force a fresh render+audit. |
/a11y-audit/v1/batch3 creditsAudit up to 5 URLs in one call (queued through the render slots); per-URL ok/error + score so one bad URL never sinks the batch.
| Parameter | Allowed / range | Description | |
|---|---|---|---|
| urls | required | — | Up to 5 URLs (JSON array or comma-separated). Audited through the queue; per-URL ok/error in results[]. |
| standard = wcag21aa | optional | wcag2a · wcag2aa · wcag21a · wcag21aa · wcag22aa · section508 · best-practice | Conformance standard to test against (selects the axe rule tag set). |
| viewport = desktop | optional | desktop · mobile · tablet | Viewport to render at before auditing (responsive a11y differs by breakpoint). |
| include_best_practice = false | optional | — | Add axe 'best-practice' rules on top of the chosen WCAG standard (usability checks beyond strict conformance). |
| include_passes = false | optional | — | Also return the rules that PASSED (passes[]) — useful for evidence reports. Default false (smaller response). |
| include_incomplete = true | optional | — | Return axe 'incomplete' results — checks that need human review (folded into needs_review). Default true. |
| include_fix_hints = true | optional | — | Attach a curated fix_hint to each issue (default true). |
| rules | optional | — | Restrict the audit to these axe rule ids (comma-separated or JSON array). Empty = all rules for the standard. |
| exclude_rules | optional | — | Disable these axe rule ids for the run (comma-separated or array). |
| include_selectors | optional | — | Only audit elements inside these CSS selectors (axe context include). |
| exclude_selectors | optional | — | Skip elements matching these CSS selectors (axe context exclude — drop third-party widgets you don't control). |
| max_issues = 0 | optional | 0–1000 | Cap the number of returned issues (0 = no cap). Summary counts are always complete. |
| wait_until = load | optional | load · domcontentloaded · networkidle · commit | Navigation wait condition before auditing. |
| wait_selector | optional | — | Additionally wait until this CSS selector is visible (15s budget) — the reliable signal for heavy SPAs. |
| delay_ms = 0 | optional | 0–5000 | Extra settle delay after load before auditing, 0-5000ms. |
| locale | optional | — | Browser locale (Accept-Language + Intl), e.g. en-US, de-DE, ar-EG. |
| user_agent | optional | — | Override the browser User-Agent. |
| headers | optional | — | Extra request headers (JSON object). Cookie/Authorization are stripped (no-login content policy). |
| fresh = false | optional | — | Bypass the audit cache and force a fresh render+audit. |
curl -X POST https://api.reefapi.com/a11y-audit/v1/audit_url \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"url":"https://example.com"}'{
"ok": true,
"data": { /* the result */ },
"meta": {
"latency_ms": 240,
"record_count": 12,
"completeness_pct": 100
},
"error": null
}