---
title: "Search"
method: GET
path: "/v1/projects/{project_id}/search"
tags: ["search"]
---

# Search

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

## Request

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

## Path parameters

- `project_id` string, required

## Query parameters

- `q` string, required
- `namespace_id` string, nullable
- `fields` string, nullable: Comma-separated scope of which fields q must match, restricting the search PORTÉE. Recognized: name, description, value, namespace. namespace matches keys whose namespace NAME or SLUG contains q (distinct from namespace_id, which filters to one namespace). Absent, empty, or containing no recognized field ⇒ default scope name+description+value (unchanged legacy behavior). Unrecognized values are ignored (no 422).
- `type` string[], nullable: filter by key type(s) (repeatable)
- `languages` string, nullable: comma-separated language uuids. Both narrows the translations[] match query AND scopes keys[i].translations to these languages.
- `surface` string: Which overlay to search VALUES in (task 1482). 'base' (default) searches the normal translation values. An a11y surface (aria_label|alt_text|screen_reader|plain_language) searches that surface's override values instead (key-name hits are unaffected).
- `limit` integer
- `include_deleted` boolean: Include recycle-bin keys (soft-deleted). Default FALSE excludes trashed keys from both key hits and value hits — aligned with /keys, /translations and coverage (task 1351).

## Response `200`

Successful Response

- SearchOut
  - `keys` KeyHit[], required
    - `uuid` string, required
    - `name` string, required
    - `namespace_uuid` string, required
    - `description` string, nullable
    - `matched_in` string, required
    - `plurals` boolean
    - `source_plural_forms` object, nullable
    - `translations` KeyHitTranslation[]
      - `language_uuid` string, required
      - `language_code` string, required
      - `value` string, required
      - `status` string, required
      - `plural_forms` object, nullable
  - `translations` TranslationHit[], required
    - `translation_uuid` string, required
    - `key_uuid` string, required
    - `key_name` string, required
    - `namespace_uuid` string, required
    - `language_uuid` string, required
    - `language_code` string, required
    - `value` string, required
    - `status` string, required
    - `plurals` boolean
    - `plural_forms` object, nullable
  - `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)
