Skip to content

REST API overview

The public REST API is a read-only, versioned JSON surface for customer integrations: gate CI deploys on open critical issues, feed BI dashboards, or build portfolio views across sites. It reads from the same queries the dashboard uses, so API numbers always match what you see in the app.

https://app.theaccessibility.company/api/v1

All endpoints are GET. Any other method returns 405 METHOD_NOT_ALLOWED.

The API uses the same bearer tokens as the MCP server, created in Settings → Integrations → MCP tokens. Send the token in the Authorization header:

Terminal window
curl https://app.theaccessibility.company/api/v1/me \
-H "Authorization: Bearer tac_mcp_..."
  • Every endpoint requires the read scope.
  • Site-locked tokens only see their site: /sites returns just that site, and requests for any other site (or an issue belonging to one) return 403 SITE_SCOPE_MISMATCH.
  • Tokens are shown exactly once at creation. Revocation from Settings → Integrations is immediate.

Detail endpoints return the resource under data:

{ "data": { "id": "", "name": "" } }

List endpoints add a pagination object:

{
"data": [ ],
"pagination": { "limit": 25, "offset": 0, "total": 132 }
}

Errors use a single shape everywhere — see Errors & rate limits.

List endpoints accept limit (1–100, default 25) and offset (≥ 0, default 0) query parameters. pagination.total is the total number of matching rows, so you can page with offset += limit until offset >= total.

EndpointDescription
GET /meToken introspection: account, scopes, site lock.
GET /sitesSites with open / critical / serious issue counts.
GET /sites/:siteIdOne site with its issue rollup.
GET /sites/:siteId/issuesPaginated, filterable issue list.
GET /issues/:issueKeyFull issue detail: representative finding + affected pages.
GET /sites/:siteId/scansScan history with violation / incomplete / pass counts.

Issue counts and lists are scoped to each site’s configured primary standard (WCAG 2.1 AA by default) — the same yardstick the dashboard uses for its headline numbers.

Every successful API request writes an audit event (api.<endpoint>) attributed to the token, and updates the token’s last-used timestamp visible in Settings → Integrations.