Programmatic WCAG 2.2 / ADA accessibility scanning for CI/CD pipelines, monitoring, and integrations.
Introduction
The ADAGuard Public API v1 lets you run WCAG 2.2 / ADA accessibility scans programmatically and retrieve structured results. Common use cases: automated CI/CD quality gates, continuous site monitoring, and embedding accessibility checks into your CMS or deployment workflow.
Base URL
https://api.adaguard.io
Version
v1 · /v1/...
POST / GET / DELETE/v1/scan{,s}Start scans, retrieve results, list history
GET/v1/scan/{id}/statusPoll scan progress
GET/v1/scan/{id}/reportDownload — json · html · csv · pdf
{"id":"550e8400...","status":"completed","score":74,"pages_scanned":25,"elements_checked":12840,"issues_critical":8,"issues":[{"severity":"critical","type":"alt-text-missing","description":"Image is missing alt text","wcag":["1.1.1"],"help_url":"https://www.w3.org/WAI/WCAG22/quickref/#non-text-content","elements":[{"html":"<img src='hero.jpg'>","selector":"main > img"}]}]}
List Scans
GEThttps://api.adaguard.io/v1/scans
scans:read
Returns a paginated list of completed scans. Filter by URL prefix.
To scan login-protected pages, create a session in Settings → Authenticated Scans and pass the session ID in your request. Raw credentials are never accepted through the API.
[ CURL ]
curl-X POST "https://api.adaguard.io/v1/scan"\-H"X-API-Key: ak_live_YOUR_KEY_HERE"\-H"Content-Type: application/json"\-d'{"url": "https://app.example.com/dashboard", "scan_mode": "crawl", "auth_session_id": "sess_abc123"}'
auth_status values
Value
Meaning
not_requested
No session provided — scanned as public visitor
authenticated
Session valid — private pages accessible
expired_fallback
Session expired — fell back to public pages
public_only
Site is fully public — no auth needed
Auth Sessions
GEThttps://api.adaguard.io/v1/auth-sessions
scans:read
Returns all authenticated sessions stored on your account.
Sessions are created in the dashboard, not via API — go to Settings → Authenticated Scans and click Launch Browser. Sessions expire after 30 days.
{"auth_sessions":[{"session_id":"a1b2c3...","domain":"app.example.com","status":"active","expires_at":"2026-03-17T09:30:00Z"}],"total":1,"note":"Use session_id as auth_session_id in POST /v1/scan."}