---
title: "Search letter text"
method: GET
path: "/v1/fund-letters/search"
tags: ["Fund Letters"]
---

# Search letter text

`GET /v1/fund-letters/search`

## Request

- Base URL: `https://api.turos.app`
- URL: `https://api.turos.app/v1/fund-letters/search`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

Metered as fund_letter_search. Results are a relevance-ranked top-N (hasMore is always false; raise limit or narrow filters to deepen recall). Every highlight anchor verifies against /document?format=markdown bytes. When the full-text engine is unavailable the response degrades to Postgres lexical search, reported via degradedState.

## Query parameters

- `q` string, required
- `manager_id` string
- `fund_id` string
- `ticker` string
- `issuer_cik` string
- `issuer_ticker` string
- `letter_type` 'hedge_fund_letter' | 'registered_fund_letter' | 'corporate_shareholder_letter' | 'quarterly_shareholder_letter'
- `source` 'fund_website' | 'edgar' | 'aggregator'
- `distribution` 'public_record' | 'fund_published' | 'third_party'
- `period` string
- `year` integer
- `quarter` integer
- `published_from` string
- `published_to` string
- `limit` integer

## Response `200`

Successful response

- FundLetterSearchHitList
  - `object` 'list', required
  - `data` object[], required
    - `object` 'fund_letter_search_hit', required
    - `letter` object, required
      - `id` string, required
      - `managerId` string, nullable, required
      - `managerName` string, nullable, required
      - `fundId` string, nullable, required
      - `letterType` 'hedge_fund_letter' | 'registered_fund_letter' | 'corporate_shareholder_letter' | 'quarterly_shareholder_letter', required
      - `source` 'fund_website' | 'edgar' | 'aggregator', required
      - `distribution` 'public_record' | 'fund_published' | 'third_party', required
      - `title` string, nullable, required
      - `period` string, nullable, required
      - `publishedAt` string, nullable, required
    - `page` integer, required
    - `highlights` object[], required
      - `snippet` string, required
      - `anchor` object, nullable, required
        - `page` integer, required
        - `charStart` integer, required
        - `charEnd` integer, required
        - `quote` string, required
        - `sourceSha256` string, required
        - `paginationVersion` string, required
  - `hasMore` boolean, required
  - `nextCursor` string, nullable, required
  - `responseMode` 'compact' | 'standard' | 'verbose', nullable
  - `include` string[], nullable
  - `requestId` string, required

## Other responses

- `default`: Contract-aware error response

---

[API](https://skmtc.dev/turos/apis/turos-api.md) · [All operations](https://skmtc.dev/turos/apis/turos-api/llms.txt) · [OpenAPI document](https://skmtc.dev/turos/apis/turos-api/revisions/a68d3ec80a56?raw)
