docs / a11y-audit

Accessibility

Accessibility

base /a11y-audit/v16 endpoints
post/a11y-audit/v1/audit_url3 credits

Render 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.

ParameterAllowed / rangeDescription
urlrequiredPage URL to audit (http/https; bare domains get https:// prefixed). Private/internal/metadata targets are SSRF-blocked on every hop.
standard = wcag21aaoptionalwcag2a · wcag2aa · wcag21a · wcag21aa · wcag22aa · section508 · best-practiceConformance standard to test against (selects the axe rule tag set).
viewport = desktopoptionaldesktop · mobile · tabletViewport to render at before auditing (responsive a11y differs by breakpoint).
include_best_practice = falseoptionalAdd axe 'best-practice' rules on top of the chosen WCAG standard (usability checks beyond strict conformance).
include_passes = falseoptionalAlso return the rules that PASSED (passes[]) — useful for evidence reports. Default false (smaller response).
include_incomplete = trueoptionalReturn axe 'incomplete' results — checks that need human review (folded into needs_review). Default true.
include_fix_hints = trueoptionalAttach a curated fix_hint to each issue (default true).
rulesoptionalRestrict the audit to these axe rule ids (comma-separated or JSON array). Empty = all rules for the standard.
exclude_rulesoptionalDisable these axe rule ids for the run (comma-separated or array).
include_selectorsoptionalOnly audit elements inside these CSS selectors (axe context include).
exclude_selectorsoptionalSkip elements matching these CSS selectors (axe context exclude — drop third-party widgets you don't control).
max_issues = 0optional0–1000Cap the number of returned issues (0 = no cap). Summary counts are always complete.
wait_until = loadoptionalload · domcontentloaded · networkidle · commitNavigation wait condition before auditing.
wait_selectoroptionalAdditionally wait until this CSS selector is visible (15s budget) — the reliable signal for heavy SPAs.
delay_ms = 0optional0–5000Extra settle delay after load before auditing, 0-5000ms.
localeoptionalBrowser locale (Accept-Language + Intl), e.g. en-US, de-DE, ar-EG.
user_agentoptionalOverride the browser User-Agent.
headersoptionalExtra request headers (JSON object). Cookie/Authorization are stripped (no-login content policy).
fresh = falseoptionalBypass the audit cache and force a fresh render+audit.
Try in playground →
post/a11y-audit/v1/audit_html2 credits

Audit raw HTML you supply (CI / staging use-case) — no fetch by default (fully offline, deterministic). Same axe-core engine + contract as audit_url.

ParameterAllowed / rangeDescription
htmlrequiredRaw 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 = falseoptionalLet the supplied HTML load remote css/img/fonts (SSRF-guarded). Default false = fully offline render (deterministic CI mode).
base_urloptionalBase URL for relative asset paths in the supplied HTML (injected as <base href>); SSRF-validated.
standard = wcag21aaoptionalwcag2a · wcag2aa · wcag21a · wcag21aa · wcag22aa · section508 · best-practiceConformance standard to test against (selects the axe rule tag set).
viewport = desktopoptionaldesktop · mobile · tabletViewport to render at before auditing (responsive a11y differs by breakpoint).
include_best_practice = falseoptionalAdd axe 'best-practice' rules on top of the chosen WCAG standard (usability checks beyond strict conformance).
include_passes = falseoptionalAlso return the rules that PASSED (passes[]) — useful for evidence reports. Default false (smaller response).
include_incomplete = trueoptionalReturn axe 'incomplete' results — checks that need human review (folded into needs_review). Default true.
include_fix_hints = trueoptionalAttach a curated fix_hint to each issue (default true).
rulesoptionalRestrict the audit to these axe rule ids (comma-separated or JSON array). Empty = all rules for the standard.
exclude_rulesoptionalDisable these axe rule ids for the run (comma-separated or array).
include_selectorsoptionalOnly audit elements inside these CSS selectors (axe context include).
exclude_selectorsoptionalSkip elements matching these CSS selectors (axe context exclude — drop third-party widgets you don't control).
max_issues = 0optional0–1000Cap the number of returned issues (0 = no cap). Summary counts are always complete.
wait_until = loadoptionalload · domcontentloaded · networkidle · commitNavigation wait condition before auditing.
wait_selectoroptionalAdditionally wait until this CSS selector is visible (15s budget) — the reliable signal for heavy SPAs.
delay_ms = 0optional0–5000Extra settle delay after load before auditing, 0-5000ms.
localeoptionalBrowser locale (Accept-Language + Intl), e.g. en-US, de-DE, ar-EG.
user_agentoptionalOverride the browser User-Agent.
headersoptionalExtra request headers (JSON object). Cookie/Authorization are stripped (no-login content policy).
Try in playground →
post/a11y-audit/v1/compare1 credit

Diff two audit snapshots (baseline vs current) → fixed[], new[], regressed nodes and score_delta. The CI-gate primitive: did this deploy improve or regress a11y?

ParameterAllowed / rangeDescription
baselinerequiredA previous audit's data object (or its issues[] / summary). Pass the full data from an earlier audit_url/audit_html.
currentrequiredThe newer audit's data object to compare against baseline.
Try in playground →
post/a11y-audit/v1/explain_issuefree

Explain 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.

ParameterAllowed / rangeDescription
issue_idrequiredAn axe rule id (e.g. color-contrast, image-alt, label) to explain.
html_snippetoptionalOptional offending HTML snippet — echoed back with the explanation for context.
Try in playground →
post/a11y-audit/v1/audit_interactive5 credits

Run 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.

ParameterAllowed / rangeDescription
urlrequiredPage URL to audit (http/https; bare domains get https:// prefixed). Private/internal/metadata targets are SSRF-blocked on every hop.
actionsrequiredOrdered 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 = wcag21aaoptionalwcag2a · wcag2aa · wcag21a · wcag21aa · wcag22aa · section508 · best-practiceConformance standard to test against (selects the axe rule tag set).
viewport = desktopoptionaldesktop · mobile · tabletViewport to render at before auditing (responsive a11y differs by breakpoint).
include_best_practice = falseoptionalAdd axe 'best-practice' rules on top of the chosen WCAG standard (usability checks beyond strict conformance).
include_passes = falseoptionalAlso return the rules that PASSED (passes[]) — useful for evidence reports. Default false (smaller response).
include_incomplete = trueoptionalReturn axe 'incomplete' results — checks that need human review (folded into needs_review). Default true.
include_fix_hints = trueoptionalAttach a curated fix_hint to each issue (default true).
rulesoptionalRestrict the audit to these axe rule ids (comma-separated or JSON array). Empty = all rules for the standard.
exclude_rulesoptionalDisable these axe rule ids for the run (comma-separated or array).
include_selectorsoptionalOnly audit elements inside these CSS selectors (axe context include).
exclude_selectorsoptionalSkip elements matching these CSS selectors (axe context exclude — drop third-party widgets you don't control).
max_issues = 0optional0–1000Cap the number of returned issues (0 = no cap). Summary counts are always complete.
wait_until = loadoptionalload · domcontentloaded · networkidle · commitNavigation wait condition before auditing.
wait_selectoroptionalAdditionally wait until this CSS selector is visible (15s budget) — the reliable signal for heavy SPAs.
delay_ms = 0optional0–5000Extra settle delay after load before auditing, 0-5000ms.
localeoptionalBrowser locale (Accept-Language + Intl), e.g. en-US, de-DE, ar-EG.
user_agentoptionalOverride the browser User-Agent.
headersoptionalExtra request headers (JSON object). Cookie/Authorization are stripped (no-login content policy).
fresh = falseoptionalBypass the audit cache and force a fresh render+audit.
Try in playground →
post/a11y-audit/v1/batch3 credits

Audit 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.

ParameterAllowed / rangeDescription
urlsrequiredUp to 5 URLs (JSON array or comma-separated). Audited through the queue; per-URL ok/error in results[].
standard = wcag21aaoptionalwcag2a · wcag2aa · wcag21a · wcag21aa · wcag22aa · section508 · best-practiceConformance standard to test against (selects the axe rule tag set).
viewport = desktopoptionaldesktop · mobile · tabletViewport to render at before auditing (responsive a11y differs by breakpoint).
include_best_practice = falseoptionalAdd axe 'best-practice' rules on top of the chosen WCAG standard (usability checks beyond strict conformance).
include_passes = falseoptionalAlso return the rules that PASSED (passes[]) — useful for evidence reports. Default false (smaller response).
include_incomplete = trueoptionalReturn axe 'incomplete' results — checks that need human review (folded into needs_review). Default true.
include_fix_hints = trueoptionalAttach a curated fix_hint to each issue (default true).
rulesoptionalRestrict the audit to these axe rule ids (comma-separated or JSON array). Empty = all rules for the standard.
exclude_rulesoptionalDisable these axe rule ids for the run (comma-separated or array).
include_selectorsoptionalOnly audit elements inside these CSS selectors (axe context include).
exclude_selectorsoptionalSkip elements matching these CSS selectors (axe context exclude — drop third-party widgets you don't control).
max_issues = 0optional0–1000Cap the number of returned issues (0 = no cap). Summary counts are always complete.
wait_until = loadoptionalload · domcontentloaded · networkidle · commitNavigation wait condition before auditing.
wait_selectoroptionalAdditionally wait until this CSS selector is visible (15s budget) — the reliable signal for heavy SPAs.
delay_ms = 0optional0–5000Extra settle delay after load before auditing, 0-5000ms.
localeoptionalBrowser locale (Accept-Language + Intl), e.g. en-US, de-DE, ar-EG.
user_agentoptionalOverride the browser User-Agent.
headersoptionalExtra request headers (JSON object). Cookie/Authorization are stripped (no-login content policy).
fresh = falseoptionalBypass the audit cache and force a fresh render+audit.
Try in playground →