---
title: "A11Y Detection"
method: GET
path: "/v1/projects/{project_id}/a11y/detection"
tags: ["a11y"]
---

# A11Y Detection

`GET /v1/projects/{project_id}/a11y/detection`

## Request

- Base URL: `https://api.sonenta.dev`
- URL: `https://api.sonenta.dev/v1/projects/{project_id}/a11y/detection`
- Auth: none declared

Detection coverage — has the client's CODE been analyzed? (spec §4.1)

A code measure, not a content one, so there is NO per-language axis.

THREE COMPARTMENTS summing exactly to `keys_total` (task 1827):
  - `classified` — `type_source` in (detected, manual): a type someone or
    something DECIDED;
  - `analyzed_not_candidate` — a scan SAW the key and it stayed plain text.
    An answer, not a to-do: nothing to remediate on it;
  - `never_analyzed` — nobody ever looked, so the type is UNKNOWN (not
    "text"). Read it as "not seen by the last scan of THIS repository", never
    as "dead key": one scan reads one repository.
`unclassified` (never_analyzed + analyzed_not_candidate) and `pct` are
unchanged for existing callers. `last_scan` is the recap posted by the last
mechanical run, `scan_id` included (null if the project was never scanned).

## Path parameters

- `project_id` string, required

## Query parameters

- `version_id` string, nullable

## Response `200`

Successful Response

- A11yDetectionOut
  - `project_uuid` string, required
  - `version_uuid` string, nullable, required
  - `last_scan` A11yScanRecap, required
    - `last_run_at` string, date-time, required
    - `keys_scanned` integer, required
    - `keys_classified` integer, required
    - `tool` string, required
    - `tool_version` string, required
    - `scan_id` string, nullable
    - `recorded_by_user_uuid` string, nullable
    - `recorded_by_api_key_uuid` string, nullable
  - `keys_total` integer, required
  - `classified` integer, required
  - `unclassified` integer, required
  - `pct` integer, required
  - `measured` boolean, required
  - `never_analyzed` integer
  - `analyzed_not_candidate` integer
  - `analyzed_total` integer
  - `by_type` A11yTypeCount[], required
    - `type` string, required
    - `count` integer, required
  - `by_type_source` A11yTypeSourceCount[], required
    - `source` string, required
    - `count` integer, required
  - `formula` object, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/sonenta/apis/sonenta-api.md) · [All operations](https://skmtc.dev/sonenta/apis/sonenta-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sonenta/apis/sonenta-api/revisions/f853ea49fb05?raw)
