docs / endpoint
POST /v1/page/accessibility
Axe accessibility scan of a single page — violations, keyboard-navigation checks, honest scan status.
Credits: 2 credits per call.
Timeout: 120s
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
url |
string | required | — | Absolute http(s) page URL to scan. Required, max 2048 chars. |
Request
→ requestPOST /v1/page/accessibility
POST /v1/page/accessibility HTTP/1.1
Authorization: Bearer sof_live_your_key_here
Content-Type: application/json
{
"url": "https://seojuice.io/"
}
Response
Wrapped in the standard envelope -- id, object, created_at, elapsed_ms, cache, credits -- documented once on The Contract. The body below is a real envelope with this endpoint's data shape; values vary per request, and a … marks an array cut short for display.
← response200
{
"id": "acce_25u5ilugjx57hjvskxbjti5h",
"request_id": "req_aewplvzx7zc57jyw74p5i3ab4m",
"object": "accessibility",
"created_at": "2026-08-09T07:21:04Z",
"elapsed_ms": 180,
"cache": "miss",
"credits": {
"charged": 2,
"balance": 9857
},
"data": {
"url": "https://seojuice.io/",
"status": "complete",
"violations": [
{
"id": "color-contrast",
"impact": "serious",
"help": "Elements must meet minimum color contrast ratio thresholds",
"help_url": "https://dequeuniversity.com/rules/axe/4.10/color-contrast?application=axeAPI",
"nodes_count": 77
}
],
"passes_count": 23,
"incomplete_count": 1,
"keyboard": {
"interactive_total": 100,
"reached": 95,
"focus_trap": false,
"has_skip_link": false
},
"engine": {
"axe_version": "4.10.3"
}
}
}
Response fields
What each field in data (above) means.
| Field | Description |
|---|---|
data.url |
The URL you requested. |
data.status |
Scan outcome: "complete" (axe + keyboard walk both ran), "partial" (axe ran, the keyboard walk was skipped or truncated), or "blocked" (no work product -- refunded automatically). |
data.violations |
Axe rule violations found on the page, one entry per rule. |
data.violations[].id |
Axe rule id, e.g. "color-contrast". |
data.violations[].impact |
Axe severity for this rule: minor, moderate, serious, or critical. |
data.violations[].help |
One-line description of what the rule requires. |
data.violations[].help_url |
Deque University reference page for the rule. |
data.violations[].nodes_count |
How many elements on the page violate this rule. |
data.passes_count |
Number of axe rules the page passed. |
data.incomplete_count |
Number of rules axe could not conclusively evaluate. |
data.keyboard |
Keyboard-navigation walk results. |
data.keyboard.interactive_total |
Interactive elements found on the page. |
data.keyboard.reached |
How many of them keyboard focus could reach. |
data.keyboard.focus_trap |
true if focus got stuck somewhere it couldn't leave. |
data.keyboard.has_skip_link |
true if the page offers a skip-to-content link. |
data.engine |
Scanner version info. |
data.engine.axe_version |
The axe-core version that produced this scan. |