Skip to content
API & IntegrationsDocumentation

API: Scans and Issues

Trigger async accessibility scans and retrieve per-page issue results.

Start a Scan

POST/v1/projects/:id/scansAuthenticated

Queue 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/issuesAuthenticated

Return 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

NameTypeRequiredDescription
limitintegeroptionalScan results to return. Default 100, max 500.
afterstringoptionalCursor (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.