---
title: "Letter investment theses"
method: GET
path: "/v1/fund-letters/theses"
tags: ["Fund Letters"]
---

# Letter investment theses

`GET /v1/fund-letters/theses`

## Request

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

Each row is an extraction anchored to a passage in a specific letter, so a company with several letters yields several theses. Quotes verify against `/document?format=markdown` bytes. Metered as fund_letter_lookup.

## Query parameters

- `ticker` string
- `cik` string
- `manager_id` string
- `fund_id` string
- `letter_id` string
- `relationship` string
- `stance` 'bullish' | 'bearish' | 'mixed' | 'neutral'
- `conviction` 'high' | 'medium' | 'low' | 'unknown'
- `period` string
- `period_from` string
- `period_to` string
- `since` string
- `cursor` integer
- `limit` integer

## Response `200`

Successful response

- FundLetterThesisList
  - `object` 'list', required
  - `data` object[], required
    - `object` 'fund_letter_thesis', required
    - `id` string, required
    - `createdAt` string, required
    - `updatedAt` string, required
    - `livemode` boolean, required
    - `requestedId` string, nullable
    - `letterId` string, required
    - `managerId` string, nullable, required
    - `managerName` string, nullable, required
    - `fundId` string, nullable, required
    - `company` object, required
      - `ticker` string, nullable, required
      - `cik` string, nullable, required
      - `name` string, required
      - `entityId` string, nullable, required
    - `reportPeriod` string, nullable, required
    - `relationship` 'long' | 'short' | 'new_position' | 'added' | 'trimmed' | 'sold' | 'exited' | 'watchlist' | 'negative_research' | 'issuer', required
    - `stance` 'bullish' | 'bearish' | 'mixed' | 'neutral', nullable, required
    - `conviction` 'high' | 'medium' | 'low' | 'unknown', nullable, required
    - `convictionBasis` 'as_expressed', required
    - `timeHorizon` string, nullable, required
    - `positionSize` object, nullable, required
      - `percent` number, nullable, required
      - `basis` string, nullable, required
    - `materiality` object, required
      - `basis` string[], required
    - `thesisSummary` string, nullable, required
    - `variantPerception` string, nullable, required
    - `riskSummary` string, nullable, required
    - `catalystSummary` string, nullable, required
    - `valuationSummary` string, nullable, required
    - `businessQualitySummary` string, nullable, required
    - `managementAssessment` string, nullable, required
    - `capitalAllocationSummary` string, nullable, required
    - `financialExpectations` string, nullable, required
    - `performanceOrActionSummary` string, nullable, required
    - `sourceQuote` object, nullable, required
      - `text` string, required
      - `anchors` object[], required
        - `page` integer, required
        - `charStart` integer, required
        - `charEnd` integer, required
        - `quote` string, required
        - `sourceSha256` string, required
        - `paginationVersion` string, required
    - `quoteAsExtracted` string, nullable
    - `crossLinks` object, required
      - `holdings13F` string, nullable, required
      - `holderHistory` string, nullable, required
      - `insiderActivity` string, nullable, required
      - `companyFilings` string, nullable, required
    - `status` 'active' | 'superseded', required
    - `supersededBy` string, nullable, 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)
