Documentation API

Intégrez les audits d'accessibilité A11yScan directement dans votre pipeline CI/CD, vos outils internes ou vos applications.

Authentification

Toutes les requêtes API nécessitent un token Bearer dans le header Authorization. Votre clé API est disponible dans vos paramètres.

curl -H "Authorization: Bearer YOUR_API_KEY" \
     https://a11yscan.fr/api/scan

Endpoints

POST/api/scan

Lance un audit d'accessibilité WCAG 2.1 AA sur l'URL fournie. Retourne un score, le nombre de problèmes et la liste détaillée.

Body (JSON)

{
  "url": "https://example.com"  // Required — URL to scan
}

Réponse (200)

{
  "url": "https://example.com",
  "score": 72,
  "totalIssues": 8,
  "critical": 2,
  "major": 4,
  "minor": 2,
  "issues": [
    {
      "id": "color-contrast",
      "severity": "critical",
      "title": "Contraste insuffisant",
      "description": "Le ratio de contraste est de 2.5:1...",
      "wcag": "1.4.3 Contrast (Minimum) (AA)",
      "element": "<p class='subtitle'>...",
      "howToFix": "Augmentez le contraste...",
      "plainExplanation": "Les couleurs sont trop...",
      "count": 3
    }
  ],
  "scanDate": "2026-05-04T10:24:00.000Z",
  "scanDuration": 2340,
  "pagesScanned": 1
}
GET/api/badge?url=example.com

Génère un badge SVG de conformité à intégrer dans votre site ou README GitHub.

Paramètres

url  — (Required) Le domaine du site audité

Intégration HTML

<img src="https://a11yscan.fr/api/badge?url=votresite.com" 
     alt="Score accessibilité" />
POST/api/scan/deepPRO

Scan approfondi multi-pages. Crawle automatiquement le site et audite jusqu'à 10 pages. Réservé aux plans Pro et Agence.

{
  "url": "https://example.com",
  "maxPages": 5        // Optional (default: 5, max: 10)
}

Limites

Gratuit
1 scan / mois
Pro
Illimité
10 req/min
Agence
Illimité
60 req/min

Exemples d'intégration

JavaScript / Node.js

const response = await fetch("https://a11yscan.fr/api/scan", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_API_KEY"
  },
  body: JSON.stringify({ url: "https://votresite.com" })
});

const report = await response.json();
console.log(`Score: ${report.score}/100`);
console.log(`Issues critiques: ${report.critical}`);

Python

import requests

response = requests.post(
    "https://a11yscan.fr/api/scan",
    json={"url": "https://votresite.com"},
    headers={"Authorization": "Bearer YOUR_API_KEY"}
)

report = response.json()
print(f"Score: {report['score']}/100")
print(f"Issues critiques: {report['critical']}")

CI/CD (GitHub Actions)

# .github/workflows/accessibility.yml
name: Accessibility Audit
on: [push]

jobs:
  a11y-scan:
    runs-on: ubuntu-latest
    steps:
      - name: Run A11yScan
        run: |
          RESULT=$(curl -s -X POST \
            -H "Authorization: Bearer ${{ secrets.A11YSCAN_KEY }}" \
            -H "Content-Type: application/json" \
            -d '{"url": "https://staging.votresite.com"}' \
            https://a11yscan.fr/api/scan)
          
          SCORE=$(echo $RESULT | jq '.score')
          echo "Accessibility Score: $SCORE/100"
          
          if [ "$SCORE" -lt 70 ]; then
            echo "::error::Score below threshold (70)"
            exit 1
          fi

Codes d'erreur

CodeDescription
400URL manquante ou invalide
401Token API manquant ou invalide
403Limite de scans atteinte (upgrader le plan)
429Rate limit dépassé
500Erreur interne du scanner
504Timeout — le site n'a pas répondu dans les 30s