---
title: "List Keys"
method: GET
path: "/v1/projects/{project_id}/keys"
tags: ["keys"]
---

# List Keys

`GET /v1/projects/{project_id}/keys`

## Request

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

## Path parameters

- `project_id` string, required

## Query parameters

- `namespace_id` string, nullable
- `version_id` string, nullable: Filter by version uuid. Omitted = production version.
- `q` string, nullable
- `status` 'active' | 'archived', nullable
- `type` string[], nullable: filter by key type(s) (repeatable)
- `analysis` string, nullable: task 1827 — drill down into ONE a11y detection compartment: never_analyzed (no scan ever saw it) | analyzed_not_candidate (a scan saw it and it stayed plain text) | classified (a type was decided). Same definition the counts on GET /a11y/detection use.
- `deleted` boolean: true = list the trash (soft-deleted keys) instead of active ones
- `orphan` boolean, nullable: Code-occurrences ORPHAN filter. true = ONLY orphan keys (the scan FOUND them and they then DISAPPEARED — a `gone` occurrence and no present one), false = only non-orphans, absent = all. A key never seen by a scan is NOT an orphan. Server-side (injected into the key query) so `total` + cursor stay correct. Meaningful only when `measured` is true.
- `cursor` string, nullable
- `limit` integer

## Response `200`

Successful Response

- KeyPage
  - `items` KeyOut[], required
    - `uuid` string, required
    - `project_uuid` string, required
    - `namespace_uuid` string, required
    - `name` string, required
    - `description` string, nullable, required
    - `context` string, nullable, required
    - `plurals` boolean, required
    - `max_length` integer, nullable, required
    - `screenshots` string[], required
    - `type` 'text' | 'heading' | 'label' | 'caption' | 'badge' | 'tooltip' | 'error_message' | 'toast' | 'button' | 'link' | 'menu_item' | 'input_placeholder' | 'input_label' | 'image' | 'icon' | 'meta_title' | 'meta_description'
    - `type_source` 'default' | 'detected' | 'manual'
    - `type_detected_at` string, date-time, nullable
    - `type_analyzed_at` string, date-time, nullable
    - `type_analyzed_scan_id` string, nullable
    - `status` 'active' | 'archived', required
    - `deleted_at` string, date-time, nullable
    - `deleted_by_uuid` string, nullable
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `referenced` boolean, nullable
    - `orphan` boolean, nullable
  - `cursor_next` string, nullable, required
  - `total` integer, required
  - `measured` 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)
