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

# List fund letters

`GET /v1/fund-letters`

Lists the published fund letters for one calendar year (optionally one quarter) — quarterly, annual and interim letters from hedge funds, mutual funds, investment partnerships and other professional investors, with extracted per-company theses available via the letter detail endpoint.

Rows are sorted by reporting period, newest first. Narrow further with quarter, or with investorId/fundId from the investors endpoints (an investor's complete letter feed across all years is on /v1/fund-letters/investors/{investorId}). Every row carries the companies the letter discusses (companyKeys), so the list is also a cheap way to scan a period's coverage. A period with no published letters returns an empty page, not an error.

The corpus is curated: only complete, quality-checked letters from 2020 onward are published, and each letter appears once (the same letter distributed through multiple channels is deduplicated). Identifiers are permanent; counts can drift slightly between daily publishes as new letters arrive and the company universe evolves.

Free-trial keys receive the letters of the investors listed by /v1/fund-letters/investors.

## Query parameters

- `apiKey` string — API Key (alternatively send via X-Api-Key header)
- `year` integer, required — Calendar year of the reporting period (2020 or later). Required.
- `quarter` integer — Optional. Calendar quarter (1-4) within the year. Omit for the whole year.
- `investorId` string — Optional. Only letters from this investor (fscl_investor_… identifier).
- `fundId` string — Optional. Only letters from this fund (fscl_fund_… identifier).
- `pageNumber` integer — Optional. Page number (1-indexed). Defaults to 1.
- `pageSize` integer — Optional. Rows per page. Defaults to 250, max 1000.

## Response `200`

Paginated fund letters, newest reporting period first.

- object
  - `pagination` object, required
    - `page` number, required — Current page number (1-indexed).
    - `pageSize` number, required — Number of items per page.
    - `totalCount` number, required — Total number of rows matching the request.
    - `totalPages` number, required — Total number of pages.
    - `hasNextPage` boolean, required — Whether there is a next page.
    - `hasPreviousPage` boolean, required — Whether there is a previous page.
  - `data` object[], required
    - `letterId` string, required — Permanent identifier of this fund letter. Stable across publishes — use it to fetch the letter detail and PDF.
    - `investorId` string, required — Permanent identifier of the investment firm that published the letter.
    - `fundId` string, required — Permanent identifier of the specific fund/vehicle the letter reports on.
    - `investorName` string, required — Canonical investment-firm name.
    - `fundName` string, required — Canonical fund/vehicle name.
    - `fundType` string, required — Normalized fund vehicle classification (e.g. hedge_fund, mutual_fund, investment_partnership, closed_end_fund, etf, holding_company).
    - `title` string, required — Letter title as published. Nullable.
    - `reportPeriod` string, required — Canonical reporting period as a YYYYQn key — the same format as firstPeriod/latestPeriod everywhere in this API.
    - `reportPeriodYear` number, required — Calendar year of the reporting period.
    - `reportPeriodQuarter` number, required — Calendar quarter (1-4) of the reporting period. Annual letters are assigned the quarter their period ends in.
    - `reportPeriodType` string, required — Reporting cadence: annual, semiannual, quarterly, monthly, other, or unknown.
    - `periodLabel` string, required — The reporting period exactly as the letter states it (free text). Nullable.
    - `publicationDate` string, required — Publication date (YYYY-MM-DD) when the letter states one. Nullable.
    - `letterType` string, required — Normalized document type (e.g. quarterly_letter, annual_letter, monthly_commentary, shareholder_letter, fund_commentary).
    - `thesisCount` number, required — Number of company theses extracted from this letter (0 for pure macro letters).
    - `keyTopics` string[], required — Normalized topics the letter discusses beyond individual companies.
    - `companyKeys` string[], required — Company keys (EXCHANGE_TICKER) of every company with a thesis in this letter.
    - `companyTickers` string[], required — Primary-listing tickers matching companyKeys, in the same order.

## Other responses

- `400` — Bad Request
- `403` — Forbidden
- `404` — Not Found

---

[API](https://skmtc.dev/fiscal/apis/openapi.md) · [All operations](https://skmtc.dev/fiscal/apis/openapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/fiscal/openapi/revisions/706968b7c65f/schema)
