---
title: "A11Y Aria Names"
method: GET
path: "/v1/projects/{project_id}/a11y/aria-names"
tags: ["a11y"]
---

# A11Y Aria Names

`GET /v1/projects/{project_id}/a11y/aria-names`

## Request

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

Accessible-name coverage per language (spec §4.2 + §1.3).

MERGES TWO DISJOINT POPULATIONS, each reported separately in `populations`:
  - `aria_label_surface` — button, link, menu_item, input_placeholder,
    input_label. Present = non-empty `aria_label` OVERRIDE.
  - `icon_base` — an `icon` key offers no treatment; its accessible name IS
    its BASE value. Present = non-empty `translations` value.
Disjoint by construction (an icon key can never be in the surface
population), so the merged per-language `present` is exactly the sum of the
two.

CAN vs MUST (task 1831). `missing_accessible_name` is THE primary number: real
WCAG 4.1.2 defects — surface controls with an EMPTY source base value AND no
`aria_label` override (no name at all), plus icons with no base value. For the
SURFACE types `base_role` is `visible_text`, so a button reading "Save" is
already named and an `aria_label` override would be an ALTERNATIVE name: those
keys are NOT defects, and `eligible`/`suggestions_count` on that population are
a POTENTIAL, not a queue. `suggestions_count` stays exact for `icon_base`,
where a missing base value IS the defect.

## Path parameters

- `project_id` string, required

## Query parameters

- `version_id` string, nullable

## Response `200`

Successful Response

- A11yAriaNamesOut
  - `project_uuid` string, required
  - `version_uuid` string, nullable, required
  - `languages` string[], required
  - `source_language` string, nullable, required
  - `eligible_keys` integer, required
  - `eligible_cells` integer, required
  - `present_cells` integer, required
  - `pct` integer, required
  - `measured` boolean, required
  - `by_language` A11yLangRow[], required
    - `code` string, required
    - `eligible` integer, required
    - `present` integer, required
    - `pct` integer, required
    - `is_source` boolean
  - `formula` object, required
  - `surface` string, required
  - `suggestions_count` integer, required
  - `missing_accessible_name` integer
  - `populations` A11yPopulation[], required
    - `population` string, required
    - `key_types` string[], required
    - `read_from` string, required
    - `eligible_keys` integer, required
    - `suggestions_count` integer, required
    - `missing_accessible_name` integer
    - `by_language` A11yLangRow[], required
      - `code` string, required
      - `eligible` integer, required
      - `present` integer, required
      - `pct` integer, required
      - `is_source` boolean

## 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)
