---
title: "Search completed review history"
method: GET
path: "/api/search"
tags: ["Reviews"]
---

# Search completed review history

`GET /api/search`

## Request

- The document declares no server URL.
- Auth: none declared

## Query parameters

- `q` string, required: Required review search query (maximum 2,000 UTF-8 runes)
- `mode` 'auto' | 'lexical' | 'hybrid' | 'semantic': Search mode: auto, lexical, hybrid, or semantic
- `repo` string: Repository path, name, or registered identity
- `branch` string: Exact branch name
- `since` string: Go duration or RFC3339 lower bound
- `verdict` 'pass' | 'fail': Review verdict: pass or fail
- `state` 'all' | 'open' | 'closed': Review state: all, open, or closed
- `limit` integer: Maximum grouped results (default 20, range 1..100)

## Response `200`

OK

- SearchResponse
  - `$schema` string, uri: A URL to the JSON Schema for this object.
  - `bounded` boolean, required
  - `bounded_reason` string
  - `coverage` SearchCoverage, required
    - `embedding_backlog` integer, required
    - `embeddings_configured` boolean, required
    - `mirror_backlog` integer
    - `mirror_complete` boolean, required
    - `skipped` integer, required
    - `vector_state` string, required
  - `degraded` boolean, required
  - `degraded_reason` string
  - `hits` SearchHit[], required
    - `agent` string, required
    - `branch` string
    - `closed` boolean, required
    - `commit_sha` string
    - `commit_subject` string
    - `excerpt` string, required
    - `finished_at` string, date-time, required
    - `git_ref` string, required
    - `job_id` integer, required
    - `job_uuid` string
    - `matched_in` string[], required
    - `panel_role` string
    - `repo_name` string, required
    - `repo_path` string, required
    - `review_id` integer, required
    - `review_type` string, required
    - `review_uuid` string
    - `score` number, double, required
    - `verdict` string
  - `mode` string, required
  - `partial` boolean, required
  - `query` string, required

## Other responses

- `400`: Bad Request
- `409`: Conflict
- `422`: Unprocessable Entity
- `500`: Internal Server Error
- `503`: Service Unavailable

## Changes

- **2026-10-14** `e348b02722c0`: 5 info
  - added the non-success response with the status `400`
  - added the non-success response with the status `409`
  - added the non-success response with the status `422`
  - added the non-success response with the status `500`
  - …1 more
- **2026-09-21** `ec41de7b94fd`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/kenn-io/apis/roborev/changes/api/search/get.md)

---

[API](https://skmtc.dev/kenn-io/apis/roborev.md) - [All operations](https://skmtc.dev/kenn-io/apis/roborev/llms.txt) - [OpenAPI document](https://skmtc.dev/kenn-io/apis/roborev/revisions/5803a85073e3?raw)
