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

# List Keys With Translations

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

## Request

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

LLM-friendly bulk view: keys + source value + per-language translations.

The `tools.list_keys` MCP tool wraps this. One round-trip lets Claude
decide which keys still need translations and what the source text is.

## Path parameters

- `project_id` string, required

## Query parameters

- `namespace` string, nullable: Filter by namespace slug
- `name_prefix` string, nullable: Filter to keys whose name starts with this prefix (case-sensitive, namespace-agnostic). Lets an agent pull just the keys under a dotted path (e.g. 'checkout.') instead of the whole namespace.
- `key_uuids` string[], nullable: Fetch specific keys by UUID (repeat the param, or pass a comma-separated list). Bypasses namespace/prefix scoping for a targeted per-key context check. Combinable with cursor for paging.
- `language_code` string, nullable: Restrict the per-key translations[] to a single BCP-47 language code. Omit to include all project languages.
- `status_filter` string, nullable: Include only keys that have at least one translation with this status (missing|draft|translated|reviewed|approved). When language_code is also set, the filter applies to that language only.
- `cursor` string, nullable
- `limit` integer
- `include_glossary_hints` boolean: Attach per-key glossary_hints[] (target_translation uses language_code when set).

## Response `200`

Successful Response

- KeysWithTranslationsPage
  - `items` KeyWithTranslations[], required
    - `key_uuid` string, required
    - `key_name` string, required
    - `namespace_slug` string, required
    - `namespace_uuid` string, required
    - `source_value` string, nullable, required
    - `source_plural_forms` object, nullable
    - `plurals` boolean, required
    - `max_length` integer, nullable, required
    - `type` string
    - `type_source` string
    - `type_detected_at` string, date-time, nullable
    - `type_analyzed_at` string, date-time, nullable
    - `translations` TranslationOnKey[], required
      - `language_code` string, required
      - `value` string, required
      - `status` string, required
      - `plural_forms` object, nullable
    - `glossary_hints` GlossaryHint[], nullable
      - `term` string, required
      - `rule_type` 'translation' | 'do_not_translate' | 'forbidden', required
      - `target_translation` string, nullable
      - `matched_text` string, required
  - `cursor_next` string, nullable, required
  - `total` integer, 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)
