Programmatic access to ADAGuard's web accessibility scanner. Base URL: https://api.adaguard.io/v1
Interactive Swagger UI · OpenAPI Spec (JSON) · Full Docs
Include your API key in every request:
X-API-Key: your_api_key_here
API keys are available in your dashboard settings. API access requires the Professional plan or higher.
/v1/scan
Returns immediately with a scan_id. The scan runs in the background. Poll GET /v1/scan/{scan_id}/status until status is 'completed' or 'failed'.
Required scopes: scans:write
{
"url": "https://example.com",
"scan_mode": "single",
"max_pages": 1,
"min_score": 80,
"auth_session_id": null,
"viewport": "desktop",
"exclude_paths": []
}
{
"scan_id": "abc-123",
"status": "queued",
"url": "https://example.com",
"created_at": "2025-01-01T00:00:00Z",
"poll_url": "/v1/scan/abc-123/status"
}
/v1/scan/{scan_id}/status
Call repeatedly until status is 'completed' or 'failed'. Use poll_again_in (seconds) as the suggested retry interval.
Required scopes: scans:read, scans:write
{
"scan_id": "abc-123",
"status": "completed",
"url": "https://example.com",
"score": 87,
"passed": true,
"pages_scanned": 1,
"max_pages": 1,
"issues_critical": 2,
"issues_warning": 5,
"issues_info": 3,
"auth_status": "not_requested",
"error": null,
"poll_again_in": null
}
/v1/scan/{scan_id}
Returns the complete scan document with all accessibility issues, WCAG criteria, severity levels, element selectors, and remediation suggestions.
Required scopes: scans:read, scans:write
/v1/scan/{scan_id}/report
Generates and downloads a report for a completed scan. The scan must be in 'completed' status.
Required scopes: scans:read, scans:write
| Parameter | Default | Description |
|---|---|---|
format |
json | json=structured data for CI/CD, html=self-contained report, csv=QA spreadsheet, pdf=compliance document Values: json | html | csv | pdf |
/v1/scans
Returns scan history sorted newest first.
Required scopes: scans:read, scans:write
| Parameter | Default | Description |
|---|---|---|
limit |
10 | Max results (1–100) |
offset |
0 | Pagination offset |
url |
— | Filter by URL prefix, e.g. https://example.com |
{
"scans": [
{
"id": "abc-123",
"url": "https://example.com",
"timestamp": "2025-01-01T00:00:00Z",
"score": 87,
"status": "completed",
"pages_scanned": 1,
"issues_critical": 2,
"issues_warning": 5,
"issues_info": 3,
"passed": true,
"auth_status": "not_requested"
}
],
"total": 42,
"limit": 10,
"offset": 0,
"has_more": true
}
/v1/scans/stats
Returns scan counts, monthly quota usage, and aggregate issue totals.
Required scopes: stats:read
{
"user_id": "usr_abc",
"total_scans": 42,
"completed_scans": 40,
"scans_used": 12,
"scans_limit": 30,
"average_score": 84.5,
"total_issues": {
"critical": 18,
"warning": 67,
"info": 120
}
}
/v1/auth-sessions
Lists stored browser auth sessions. Sessions are created in the dashboard (Settings → Authenticated Scans). Use session_id as auth_session_id in POST /v1/scan.
Required scopes: scans:read, scans:write
{
"auth_sessions": [
{
"session_id": "sess_abc",
"domain": "example.com",
"url": "https://example.com/login",
"status": "active",
"created_at": "2025-01-01T00:00:00Z",
"expires_at": "2025-02-01T00:00:00Z",
"last_used": "2025-01-15T00:00:00Z"
}
],
"total": 1
}
/v1/scan/{scan_id}
Permanently deletes a scan and all its stored data. This action cannot be undone.
Required scopes: scans:delete
{
"success": true,
"message": "Scan deleted successfully",
"scan_id": "abc-123"
}
All errors follow this shape:
{
"error": "Human-readable summary",
"details": [
{
"field": "url",
"message": "Only http and https URLs are allowed"
}
]
}
| Status | Meaning |
|---|---|
| 422 | Validation error — invalid request body |
| 429 | Rate limit or monthly scan quota exceeded |
| 404 | Scan or session not found |
| 409 | Operation not valid for current scan state (e.g. report on incomplete scan) |
| 500 | Internal server error |
| Tier | Price | Scans/Month | Pages/Scan | API Access | Rate Limit |
|---|---|---|---|---|---|
| Free | $0/mo | 1 | 5 | No | — |
| Starter | $49/mo | 4 | 50 | No | — |
| Professional | $129/mo | 30 | 200 | Yes | 100 req/hr |
| Business | $249/mo | 150 | 1,000 | Yes | 500 req/hr |
Scan quota resets on the 1st of each calendar month.