Zum Inhalt springen
A11ySignal

Dokumentation

Die API

Dieselben Endpunkte, die das Dashboard aufruft. Holen Sie Scores in Ihr eigenes Reporting, stoßen Sie einen Scan aus einem Deploy-Hook an oder lassen Sie einen Build durchfallen, wenn ein Release etwas kaputt macht.

Verfügbar ab dem Agency-Tarif.

Authentifizierung

Erstellen Sie einen Schlüssel unter Einstellungen. Er wird einmal angezeigt. Senden Sie ihn bei jeder Anfrage als X-Api-Key.

curl https://api.a11ysignal.com/v1/sites \
  -H "X-Api-Key: a11y_xxxxxxxxxxxxxxxxxxxxxxxx"

Ein Schlüssel gilt für einen Workspace und hat darin Adminrechte. Ein Widerruf wirkt sofort.

Endpunkte

GET/v1/sitesJede Website im Workspace, mit ihrem letzten Score und Zeitplan.Liste
POST/v1/sitesWebsite hinzufügen. Der Body entspricht dem Formular im Dashboard.anlegen
POST/v1/sites/:id/scanEinen Scan jetzt einreihen. Gibt die Scan-ID zurück — oder die des laufenden, falls schon einer läuft.auslösen
GET/v1/scansScans im gesamten Workspace, neueste zuerst. ?siteId= grenzt ein.Verlauf
GET/v1/scans/:idScore, Ergebnisse je Seite, fehlgeschlagene Regeln und die Differenz zum vorherigen Scan.Detail
GET/v1/scans/:id/issuesEinzelne Befunde mit Selektoren und Markup. ?impact=critical&ruleId=color-contrastseitenweise
GET/v1/organization/usageWo Sie im Verhältnis zu Ihrem Tarif stehen.Limits

Einen Build bei einer Regression durchfallen lassen

Zwei Wege. Der einfachste braucht überhaupt keinen API-Schlüssel — lassen Sie den Scanner direkt in der CI gegen ein Preview-Deployment laufen:

npx @a11ysignal/scan https://preview.example.com \
  --max-pages 25 --fail-on serious

Der andere stößt nach dem Deploy einen gehosteten Scan an und wartet auf das Urteil, sodass das Ergebnis auch in Ihrem Dashboard-Verlauf landet:

SCAN=$(curl -sX POST https://api.a11ysignal.com/v1/sites/$SITE_ID/scan \
  -H "X-Api-Key: $A11YSIGNAL_KEY" | jq -r .id)

# Abfragen, bis er fertig ist, dann das Urteil lesen.
until [ "$(curl -s https://api.a11ysignal.com/v1/scans/$SCAN \
  -H "X-Api-Key: $A11YSIGNAL_KEY" | jq -r .status)" != "running" ]; do sleep 5; done

curl -s https://api.a11ysignal.com/v1/scans/$SCAN -H "X-Api-Key: $A11YSIGNAL_KEY" \
  | jq -e '.counts.critical == 0 and .counts.serious == 0'

Was Sie zurückbekommen

Ein Scan-Detail, auf die Felder gekürzt, die die meisten nutzen:

{
  "id": "cm...",
  "status": "completed",
  "startUrl": "https://example.com/",
  "score": 87.4,
  "counts": { "critical": 0, "serious": 9, "moderate": 2, "minor": 0 },
  "pagesScanned": 24,
  "pagesFailed": 0,
  "axeVersion": "4.13.0",
  "diff": {
    "newIssues":   [{ "url": "…/checkout", "ruleId": "label", "impact": "critical", "count": 2 }],
    "fixedIssues": [{ "url": "…/",         "ruleId": "image-alt", "impact": "critical", "count": 5 }],
    "scoreDelta": -3.5
  },
  "ruleSummary": [
    { "ruleId": "color-contrast", "impact": "serious", "elements": 9, "pages": 4 }
  ]
}

score ist null, wenn ein Crawl überhaupt keine Seite gelesen hat — eine Start-URL, die 404 liefert, oder eine robots.txt, die alles verbietet. Werten Sie das als Fehlschlag, nicht als Bestanden; der Scan selbst ist mit Grund als failed markiert.

Limits und Fehler

429RatenlimitJe Schlüssel. Scans auf Abruf sind zusätzlich je Tarif pro Tag gedeckelt.120/min
403TarifDie API braucht Agency oder höher; der Body nennt die fehlende Funktion.Funktion
400ValidierungFehler bei der Body-Validierung kommen als Zuordnung Feld → Meldungen zurück.fieldErrors
409KonfliktDie URL wird in diesem Workspace bereits überwacht.Duplikat