API & IntegrationsDocumentation
API: Scans and Issues
Trigger async accessibility scans and retrieve per-page issue results.
Start a Scan
POST
/v1/projects/:id/scansAuthenticatedQueue an async accessibility scan. Choose from a full project scan, a list of specific pages, or a saved page set. Returns a runId to poll for completion.
curl -X POST https://api.ablelytics.com/v1/projects/PROJECT_ID/scans \
-H "x-api-key: $ABLELYTICS_API_KEY" \
-H "Content-Type: application/json" \
-d '{"type":"full"}'Request Body
// Full project scan
{ "type": "full" }
// Specific pages only
{ "type": "pages", "pageIds": ["pageA", "pageB"] }
// A saved page set
{ "type": "page-set", "pageSetId": "setId" }Response
{
"data": {
"runId": "clxr7890",
"status": "queued",
"pagesCount": 120
},
"message": "Scan started. Poll GET /v1/runs/clxr7890 for status."
}Status Codes
202 Accepted400 Bad Request401 Unauthorized404 Not Found500 Internal Server Error
- →type must be full, pages, or page-set.
- →For type pages, include a pageIds array.
- →For type page-set, include a pageSetId string.
- →Poll GET /v1/runs/:runId every 5–10 seconds. Stop when status is done or failed.
Retrieve Issues
GET
/v1/projects/:id/issuesAuthenticatedReturn scan results with accessibility issues for the project, newest first. Each item represents one scanned page and includes the raw axe-core violation data.
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| limit | integer | optional | Scan results to return. Default 100, max 500. |
| after | string | optional | Cursor (scan ID) for the next page of results. |
curl -H "x-api-key: $ABLELYTICS_API_KEY" \
"https://api.ablelytics.com/v1/projects/PROJECT_ID/issues?limit=50"Response
{
"data": [
{
"scanId": "scanId",
"pageId": "pageId",
"pageUrl": "https://example.com/about",
"pageTitle": "About Us",
"summary": {
"critical": 1,
"serious": 3,
"moderate": 7,
"minor": 4
},
"issues": [
{
"id": "image-alt",
"impact": "critical",
"description": "Ensures <img> elements have alternative text",
"nodes": [{ "html": "<img src='logo.png'>", "target": ["img"] }]
}
],
"scannedAt": "2024-01-15T10:30:00Z"
}
],
"pagination": {
"limit": 100,
"nextCursor": "scanId",
"hasMore": false
}
}Status Codes
200 OK401 Unauthorized404 Not Found500 Internal Server Error
- →Only pages that have been scanned at least once are included.
- →issues contains the full axe-core violation array for each page.
- →Use the summary counts to triage before processing the full issue payload.