API-referentie voor sessies en resultaten
Haal sessielijsten en volledige toegankelijkheidsresultaten programmeerbaar op met behulp van de REST API
De API voor sessies en resultaten geeft je programmatische toegang tot je Axe Developer Hub-sessies en hun toegankelijkheidsresultaten. Gebruik het sessie-eindpunt om sessies voor een project te ontdekken en gebruik vervolgens het resultaat-eindpunt om de gedetailleerde resultaten voor een specifieke sessie op te halen.
Beide eindpunten vereisen een project-ID. Vind het in Axe Developer Hub, of zoek het op op projectnaam met de Projects API.
Authenticatie
Alle verzoeken vereisen een API-sleutel. Geef het op met behulp van de X-API-Key-header:
X-API-Key: <DEQUE_API_KEY>Vind je API-sleutel in de Axe Account Portal. Kies een Axe Developer Hub API-sleutel voor web- of CI/CD-projecten, of een Axe DevTools Mobile API-sleutel voor mobiele projecten.
Toegangscontrole
De volgende toegangsregels zijn van toepassing op beide eindpunten:
- Projectleden kunnen toegang krijgen tot sessies en resultaten voor elk project waar ze lid van zijn.
- Org Admins met een actieve Axe Developer Hub- of Axe DevTools Mobile-abonnement kunnen toegang krijgen tot sessies en resultaten voor elk project in hun organisatie, ongeacht projectlidmaatschap. Toegang is beperkt tot het product van de API-sleutel: een Axe Developer Hub API-sleutel retourneert alleen Axe Developer Hub-gegevens en een Axe DevTools Mobile API-sleutel retourneert alleen Axe DevTools Mobile-gegevens. Een Org Admin kan geen Axe DevTools Mobile API-key gebruiken om Axe Developer Hub gegevens op te halen, of een Axe Developer Hub API-key om Axe DevTools Mobile gegevens op te halen.
- Niet-leden, niet-admin gebruikers ontvangen een toegang-geweigerd-reactie.
- Een inactief abonnement retourneert
401 Unauthorized.
Sessies Eindpunt
Retourneert een gepagineerde, filterbare lijst van sessies voor een gegeven project.
Verzoek
- Eindpunt:
GET https://axe.deque.com/api-pub/v1/results/projects/{project_id}/sessions - Headers (vereist):
X-API-Key: <DEQUE_API_KEY>Accept: application/json
Vervang {project_id} door het ID van het project waarvan je de sessies wilt ophalen. Vind je project-ID in Axe Developer Hub.
Query Parameters
Alle queryparameters zijn optioneel.
| Parameter | Beschrijving |
|---|---|
page_size |
Aantal sessies om per pagina te retourneren. Standaard: 30. Maximum: 100. Waarden boven het maximum worden beperkt tot 100. |
after |
Cursorwaarde van de vorige respons, gebruikt om de volgende pagina op te halen. Zie Cursor Paginering. |
created_after |
Retourneert alleen sessies die na deze timestamp zijn gecreëerd (ISO 8601 UTC, half-open; sluit de exacte grens uit). Voorbeeld: 2025-01-01T00:00:00Z |
created_before |
Retourneert alleen sessies die vóór deze timestamp zijn gecreëerd (ISO 8601 UTC, half-open; sluit de exacte grens uit). Voorbeeld: 2026-01-01T00:00:00Z |
is_canonical_source |
Wanneer true, retourneert alleen sessies die als canonieke bron zijn gemarkeerd. Moet true of false zijn. |
git_branch |
Retourneert alleen sessies geassocieerd met de gegeven Git-branchnaam. Sessies zonder Git zullen niet overeenkomen. |
commit_sha |
Retourneert alleen sessies geassocieerd met de gegeven Git-commit SHA. Sessies zonder Git zullen niet overeenkomen. |
git_url |
Retourneert alleen sessies geassocieerd met de gegeven Git-repository-URL. Sessies zonder Git zullen niet overeenkomen. |
created_by_user_email |
Retourneert alleen sessies die zijn aangemaakt door de gebruiker met dit e-mailadres. Zie Beperkingen E-mailfilter. |
Antwoordbody
Een succesvolle reactie retourneert een JSON-object met een sessions-array. Elk sessie-object bevat de volgende velden:
| Veld | Type | Beschrijving |
|---|---|---|
session_id |
String | Unieke identificatiecode voor de sessie. |
name |
String | Menselijk leesbare naam voor de sessie, indien ingesteld. Wordt weggelaten als deze niet is ingesteld; er wordt geen synthetische fallback geboden. |
created_at |
String | ISO 8601 UTC-tijdstempel voor wanneer de sessie is aangemaakt. |
is_canonical_source |
Booleaan | Of deze sessie is gemarkeerd als een canonieke bron. |
git_branch |
String | Git-branch geassocieerd met de sessie. null voor sessies zonder git. |
git_url |
String | Git-repository-URL geassocieerd met de sessie. null voor sessies zonder git. |
commit_sha |
String | Git commit SHA geassocieerd met de sessie. null voor sessies zonder git. |
created_by_user_name |
String | Weergavenaam van de gebruiker die de sessie heeft gemaakt. Weggelaten als de API-sleutel van de gebruiker is verwijderd. |
created_by_user_email |
String | E-mailadres van de gebruiker die de sessie heeft gemaakt. Weggelaten als de API-sleutel van de gebruiker is verwijderd. |
created_by_user_api_key_name |
String | Naam van de API-sleutel die is gebruikt om de sessie te maken. Geeft "Unknown Member" terug als de API-sleutel is verwijderd. |
Voorbeeld responsbody
{
"sessions": [
{
"session_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "Main CI run for PR 451",
"created_at": "2026-06-01T14:23:00.000Z",
"is_canonical_source": true,
"git_branch": "feature/new-nav",
"git_url": "https://github.com/example/webapp",
"commit_sha": "9eabf5b536662000f79978c4d1b6e4eff5c8d785",
"created_by_user_name": "Jane Smith",
"created_by_user_email": "jane.smith@example.com",
"created_by_user_api_key_name": "CI Pipeline Key"
},
{
"session_id": "f0e1d2c3-b4a5-6789-0123-456789abcdef",
"created_at": "2026-05-30T09:00:00.000Z",
"is_canonical_source": false,
"git_branch": null,
"git_url": null,
"commit_sha": null,
"created_by_user_api_key_name": "Unknown Member"
}
]
}Cursor Paginering
De Sessions-endpoint gebruikt cursor-gebaseerde paginering. Wanneer er meer resultaten zijn dan de huidige pagina, wordt er een ondoorzichtige cursorwaarde geretourneerd in de x-pagination-cursor-responskop. Gebruik deze waarde als de after-queryparameter in uw volgende verzoek om de volgende pagina op te halen.
Wanneer de x-pagination-cursor-kop afwezig is in de respons, heeft u de laatste pagina bereikt.
Beperkingen E-mailfilter
De created_by_user_email-filter komt alleen overeen met sessies die zijn aangemaakt na een specifieke datum waarop server-side persistentie van maker-e-mails is geïntroduceerd. Sessies die vóór die datum zijn aangemaakt hebben geen opgeslagen maker-e-mail en zullen niet verschijnen in e-mailgefilterde resultaten. Naarmate er meer nieuwe sessies worden toegevoegd, wordt de filter geleidelijk completer.
Sessie-eindpunt foutresponsen
| Status | Oorzaak |
|---|---|
400 Bad Request |
Een queryparameterwaarde is ongeldig (bijvoorbeeld een onjuiste ISO 8601-tijdstempel of een page_size boven het maximum). |
401 Unauthorized |
De API-sleutel is ongeldig, ontbreekt of het bijbehorende abonnement is inactief. |
403 Forbidden |
De API-sleutel heeft geen toegang tot het opgegeven project. |
404 Not Found |
De opgegeven project-ID bestaat niet. |
Resultaten Eindpunt
Retourneert de toegankelijkheidsresultaten voor een specifieke sessie. De resultaten worden asynchroon geretourneerd: als de resultaten nog niet klaar zijn, retourneert het eindpunt 204 No Content en blijft u polsen totdat ze klaar zijn.
Verzoek
- Eindpunt:
GET https://axe.deque.com/api-pub/v1/results/sessions/{session_id}/results - Headers (vereist):
X-API-Key: <DEQUE_API_KEY>Accept: application/json
Vervang {session_id} door de session_id-waarde die door het Sessions-endpoint wordt geretourneerd. Het moet een geldige UUID zijn.
Query Parameters
| Parameter | Vereist | Beschrijving |
|---|---|---|
format |
Nee | Responsformaat. summary (standaard) retourneert dezelfde JSON-vorm als de legacy downloadbaar-rapport eindpunt. full retourneert de complete Universele JSON (Algemeen Exportformaat). |
Sessiestatus en het Polling-patroon
Wanneer de resultaten van een sessie nog niet zijn verwerkt, triggert het Resultaten eindpunt automatisch verwerking en reageert met 204 No Content (geen responsbody). Uw client moet hetzelfde eindpunt blijven pollsen totdat het een 200 OK-antwoord ontvangt.
| Toestand | HTTP-respons | Wat te doen |
|---|---|---|
done |
200 OK met de responspayload |
Resultaten zijn klaar. Gebruik de responsbody. |
processing |
204 No Content |
Resultaten worden nog steeds gegenereerd. Wacht even en probeer opnieuw. |
error |
204 No Content |
Verwerking stuitte op een fout. U kunt het verzoek opnieuw proberen. |
Omgaan met 429 Too Many Requests
Tijdens perioden van zware belasting kan het Resultaten eindpunt reageren met 429 Too Many Requests in plaats van direct verwerking te triggeren. Dit betekent niet dat uw verzoek is verloren: de onderliggende taak blijft in de wachtrij staan en opnieuw proberen creëert geen dubbele verwerking voor dezelfde sessie.
Een 429-respons bevat een Retry-After-kop, in seconden. Wacht minimaal zo lang voordat u het opnieuw probeert — het onderstaande voorbeeld behandelt dit naast het normale 204-pollinggeval.
Responsbody
{
"error": "Too many requests. Retry after the Retry-After interval."
}Voorbeeld: Pollsen voor Resultaten
#!/bin/bash
SESSION_ID="a1b2c3d4-e5f6-7890-abcd-ef1234567890"
URL="https://axe.deque.com/api-pub/v1/results/sessions/$SESSION_ID/results"
MAX_ATTEMPTS=20
DELAY=5
TEMP_FILE=$(mktemp)
for ((i=1; i<=MAX_ATTEMPTS; i++)); do
echo "Attempt $i..."
HEADERS_FILE=$(mktemp)
STATUS=$(curl -s -w '%{http_code}' -L \
-H "Accept: application/json" \
-H "X-API-Key: $API_KEY" \
-D "$HEADERS_FILE" \
-o "$TEMP_FILE" \
"$URL?format=full")
case $STATUS in
200)
echo "Results ready!"
cat "$TEMP_FILE"
rm "$TEMP_FILE" "$HEADERS_FILE"
exit 0
;;
204)
echo "Still processing, waiting ${DELAY}s..."
sleep $DELAY
;;
429)
RETRY_AFTER=$(grep -i '^retry-after:' "$HEADERS_FILE" | tr -d '\r' | awk '{print $2}')
RETRY_AFTER=${RETRY_AFTER:-$DELAY}
echo "Too many requests, waiting ${RETRY_AFTER}s per Retry-After..."
sleep "$RETRY_AFTER"
;;
*)
echo "Error: HTTP $STATUS"
cat "$TEMP_FILE"
rm "$TEMP_FILE" "$HEADERS_FILE"
exit 1
;;
esac
rm -f "$HEADERS_FILE"
done
echo "Timeout after $MAX_ATTEMPTS attempts"
rm "$TEMP_FILE"
exit 1Responsformaten
format=summary (standaard)
Retourneert dezelfde JSON-vorm als de legacy downloadbaar-rapport eindpunt. Gebruik dit formaat als u reeds bestaande tooling heeft die is ontworpen voor het downloadbare-rapport eindpunt en u een directe vervanging wilt.
format=full
Retourneert de volledige resultaatniveaudetails in Universele JSON (Algemeen Exportformaat). Dit formaat omvat elk toegankelijkheidsprobleem dat tijdens de sessie is gevonden, inclusief detail op paginaniveau en regelniveau.
De respons wordt geleverd met Content-Encoding onderhandeld vanuit de Accept-Encoding-kop van de client.
Resultaten Eindpunt Foutresponsen
| Status | Oorzaak |
|---|---|
400 Bad Request |
De format-parameterwaarde is niet summary of full, of de session_id is geen geldige UUID. |
401 Unauthorized |
De API-sleutel is ongeldig, ontbreekt of het bijbehorende abonnement is inactief. |
403 Forbidden |
De API-sleutel heeft geen toegang tot het project dat eigenaar is van deze sessie. |
404 Not Found |
De opgegeven sessie-ID bestaat niet. |
429 Too Many Requests |
Het systeem is zwaar belast. Zie Omgaan met 429 Te Veel Verzoeken. |
Veelvoorkomende Workflows
Alle Sessies voor een Project Ophalen en Volledige Resultaten Downloaden
Dit voorbeeld gebruikt curl en jq om door alle sessies van een project te bladeren en de volledige Universele JSON-resultaten voor elk te downloaden.
#!/bin/bash
# Set these environment variables before running:
# API_KEY: your Axe Developer Hub API key
# PROJECT_ID: your project ID
BASE_URL="https://axe.deque.com/api-pub/v1/results"
CURSOR=""
while true; do
QUERY="page_size=100"
if [ -n "$CURSOR" ]; then
QUERY="$QUERY&after=$CURSOR"
fi
RESPONSE=$(curl -s -D - -H "Accept: application/json" -H "X-API-Key: $API_KEY" \
"$BASE_URL/projects/$PROJECT_ID/sessions?$QUERY")
NEXT_CURSOR=$(echo "$RESPONSE" | grep -i "x-pagination-cursor:" | tr -d '\r' | awk '{print $2}')
BODY=$(echo "$RESPONSE" | sed -n '/^\r\{0,1\}$/,$p' | tail -n +2)
SESSION_IDS=$(echo "$BODY" | jq -r '.sessions[].session_id')
for SESSION_ID in $SESSION_IDS; do
echo "Fetching results for session $SESSION_ID..."
while true; do
STATUS=$(curl -s -w '%{http_code}' -L \
-H "Accept: application/json" \
-H "X-API-Key: $API_KEY" \
-o "${SESSION_ID}.json" \
"$BASE_URL/sessions/$SESSION_ID/results?format=full")
if [ "$STATUS" = "200" ]; then
echo "Saved ${SESSION_ID}.json"
break
elif [ "$STATUS" = "204" ]; then
echo " Still processing, waiting..."
sleep 5
else
echo " Error: HTTP $STATUS"
break
fi
done
done
if [ -z "$NEXT_CURSOR" ]; then
break
fi
CURSOR="$NEXT_CURSOR"
done