List issues
Returns the site’s issues sorted by priority (highest first), scoped to the site’s primary standard — the same list the dashboard shows.
GET /api/v1/sites/:siteId/issuesQuery parameters
Section titled “Query parameters”| Parameter | Type | Default | Description |
|---|---|---|---|
status | string | open_active | One of open_active (open + triaged + in progress + reopened), all, open, triaged, in_progress, fixed_pending_verification, verified, ignored, reopened, auto_closed_page_removed. |
impact | string | — | Exact match: minor, moderate, serious, or critical. |
ruleId | string | — | Exact axe-core rule id, e.g. image-alt. |
limit | number | 25 | Page size, 1–100. |
offset | number | 0 | Rows to skip. |
Example — CI gate on critical issues
Section titled “Example — CI gate on critical issues”curl "https://app.theaccessibility.company/api/v1/sites/site_a1b2c/issues?impact=critical&limit=1" \ -H "Authorization: Bearer tac_mcp_..."{ "data": [ { "issueKey": "TAC-142", "title": "Images must have alternative text", "status": "open", "primaryImpact": "critical", "ruleId": "image-alt", "ruleDescription": "Ensure <img> elements have alternative text or a role of none or presentation", "findingType": "violation", "occurrenceCount": 8, "affectedPageCount": 3, "priorityScore": 87, "siteId": "site_a1b2c", "firstSeenAtMs": 1745837200000, "lastSeenAtMs": 1746442000000, "selectorPattern": "img.hero", "standardsTags": ["wcag2a", "wcag2aa", "wcag21aa"] } ], "pagination": { "limit": 1, "offset": 0, "total": 2 }}A shell gate:
total=$(curl -s "https://app.theaccessibility.company/api/v1/sites/$SITE_ID/issues?impact=critical&limit=1" \ -H "Authorization: Bearer $TAC_TOKEN" | jq '.pagination.total')if [ "$total" -gt 0 ]; then echo "Blocking deploy: $total critical accessibility issue(s) open" exit 1fiResponse fields
Section titled “Response fields”| Field | Type | Description |
|---|---|---|
issueKey | string | Stable human-readable key (e.g. TAC-142) — use with GET /issues/:issueKey. |
title | string | Issue title. |
status | string | Current lifecycle status. |
primaryImpact | string | minor / moderate / serious / critical. |
ruleId | string | axe-core rule id (or a TAC check id for AI-sourced issues). |
ruleDescription | string | null | Rule help text. |
findingType | string | violation or incomplete. |
occurrenceCount | number | Total occurrences across pages. |
affectedPageCount | number | Distinct pages the issue appears on. |
priorityScore | number | TAC’s severity × reach ranking (higher = fix first). |
firstSeenAtMs / lastSeenAtMs | number | Unix ms timestamps. |
selectorPattern | string | null | Normalised CSS selector shared by occurrences. |
standardsTags | string[] | axe tags snapshotted at scan time (e.g. wcag2aa). |
Errors
Section titled “Errors”| Code | When |
|---|---|
INVALID_INPUT | A query parameter failed validation. |
NOT_FOUND | The site doesn’t exist in your account. |
SITE_SCOPE_MISMATCH | The token is locked to a different site. |