API Documentation
Integrate Access Report Card accessibility testing into your applications.
Authentication
All API requests require authentication using a Bearer token. Include your API key in the Authorization header.
Authorization: Bearer YOUR_API_KEY
Endpoints
GET
/api/v1/scans
List all scans for the authenticated user.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
page |
integer | Page number (default: 1) |
per_page |
integer | Items per page (default: 20) |
Response
{
"success": true,
"data": [
{
"id": 1,
"url": "https://example.com",
"status": "completed",
"score": 85,
"grade": "B",
"completed_at": "2026-02-09T12:00:00Z"
}
],
"meta": {
"current_page": 1,
"last_page": 5,
"per_page": 20,
"total": 100
}
}
POST
/api/v1/scans
Initiate a new accessibility scan.
Request Body
{
"url": "https://example.com",
"pages": 10 // optional, max 100
}
Response
{
"success": true,
"data": {
"id": 123,
"url": "https://example.com",
"status": "pending",
"status_url": "/api/v1/scans/123/status"
}
}
GET
/api/v1/scans/{id}
Get detailed scan results including all issues.
Response (Completed Scan)
{
"success": true,
"data": {
"id": 123,
"url": "https://example.com",
"status": "completed",
"score": 85,
"grade": "B",
"issues_found": 15,
"errors_count": 3,
"warnings_count": 8,
"notices_count": 4,
"pages_scanned": 5,
"completed_at": "2026-02-09T12:30:00Z",
"issues": [
{
"id": 1,
"type": "error",
"wcag_reference": "WCAG 1.1.1",
"message": "Image missing alt text",
"code": "ImgAltIsMissing",
"impact": "critical",
"recommendation": "Add descriptive alt attribute"
}
]
}
}
GET
/api/v1/scans/{id}/status
Poll this endpoint to check scan progress.
Rate Limits
API requests are limited based on your subscription tier.
| Plan | Scans/Month | Requests/Hour |
|---|---|---|
| Free | 5 | 60 |
| Pro ($29/mo) | 50 | 300 |
| Lifetime | Unlimited | 1,000 |
Error Responses
All errors return a JSON response with an error code.
401 Unauthorized
Invalid or missing API key.
403 Forbidden
Rate limit exceeded or plan upgrade required.
422 Unprocessable Entity
Invalid request parameters (e.g., invalid URL).
429 Too Many Requests
Rate limit exceeded. Retry after the specified time.
Code Examples
cURL
curl -X POST https://api.accessreportcard.com/v1/scans \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
JavaScript (Node.js)
const response = await fetch('https://api.accessreportcard.com/v1/scans', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({ url: 'https://example.com' })
});
const data = await response.json();
console.log(data);
Python
import requests
response = requests.post(
'https://api.accessreportcard.com/v1/scans',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={'url': 'https://example.com'}
)
print(response.json())
Official SDKs
Official client libraries for popular languages.