---
title: "Search a project's documents"
method: GET
path: "/api/v1/project-rooms/{id}/search"
tags: ["Projects"]
---

# Search a project's documents

`GET /api/v1/project-rooms/{id}/search`

## Request

- Base URL: `https://askthegrid.com`
- URL: `https://askthegrid.com/api/v1/project-rooms/{id}/search`
- Auth: HTTP bearer

Ranked passages across every read document the caller may see.

## Path parameters

- `id` string, required

## Query parameters

- `q` string, required
- `limit` integer
- `role` 'evidence' | 'estimate' | 'reference' | 'generated'

## Response `200`

Success

- object
  - `hits` object[], required
    - `fileId` string, required
    - `file` string, required
    - `fileVersion` integer, required
    - `originalRevision` string, uuid
    - `role` 'evidence' | 'estimate' | 'reference' | 'generated', required
    - `locator` union, required
      - object
        - `kind` 'page', required
        - `page` integer, required
      - object
        - `kind` 'sheet', required
        - `sheet` string, required
        - `row` integer, required
      - object
        - `kind` 'text', required
        - `offset` integer, required
    - `snippet` string, required
    - `score` number, required

## Other responses

- `400`: The request did not match the contract.
- `401`: Missing or invalid credentials.
- `429`: Rate limit exceeded. Wait `Retry-After` seconds; `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` report the budget. Signed-in sessions and API keys have larger budgets than anonymous callers.

---

[API](https://skmtc.dev/askthegrid/apis/ask-the-grid-api.md) · [All operations](https://skmtc.dev/askthegrid/apis/ask-the-grid-api/llms.txt) · [OpenAPI document](https://skmtc.dev/askthegrid/apis/ask-the-grid-api/revisions/9cd80115e395?raw)
