---
title: "Get a fund letter"
method: GET
path: "/v1/fund-letters/{letterId}"
tags: ["Fund Letters"]
---

# Get a fund letter

`GET /v1/fund-letters/{letterId}`

Returns the full extracted content of one fund letter: identity (investor, fund), the reporting period, letter-level narratives (market backdrop, portfolio positioning, performance summary), structured performance figures, and a thesis for every security the letter materially discusses — each with the resolved company attached.

Thesis fields are extracted verbatim-faithful from the letter (the sourceQuote field carries a representative quote). The original document is available at /v1/fund-letters/{letterId}/pdf.

Free-trial keys can read the letters of the investors listed by /v1/fund-letters/investors; other letters return 403.

## Path parameters

- `letterId` string, required — Letter identifier (fscl_document_…).

## Query parameters

- `apiKey` string — API Key (alternatively send via X-Api-Key header)

## Response `200`

The letter detail.

- object
  - `letterId` string, required
  - `investor` object, required
    - `investorId` string, required
    - `investorName` string, required
    - `investorType` string, required
  - `fund` object, required
    - `fundId` string, required
    - `fundName` string, required
    - `fundType` string, required
  - `title` string, required
  - `reportPeriod` string, required — Canonical reporting period (YYYYQn).
  - `reportPeriodYear` number, required
  - `reportPeriodQuarter` number, required
  - `reportPeriodType` string, required
  - `periodLabel` string, required — Period as stated. Nullable.
  - `publicationDate` string, required — Nullable.
  - `letterType` string, required
  - `keyTopics` string[], required
  - `marketBackdrop` string, required — The letter's market commentary, summarized. Nullable.
  - `portfolioPositioning` string, required — How the letter says the portfolio is positioned. Nullable.
  - `performanceSummary` string, required — The letter's own performance narrative, summarized. Nullable.
  - `performanceFigures` object[], required — Structured performance figures stated in the letter.
    - `period` string, required — Period label for the figure, as stated. Nullable.
    - `fundReturnPercent` number, required — Fund return for the period, in percent. Nullable.
    - `benchmarkReturnPercent` number, required — Benchmark return, in percent. Nullable.
    - `excessReturnPercent` number, required — Fund minus benchmark, in percent. Nullable.
    - `benchmarkName` string, required — Benchmark used. Nullable.
    - `basis` string, required — Return basis: net, gross, nav, price, or unknown. Nullable.
  - `theses` object[], required — One entry per security the letter materially discusses, with the resolved company attached.
    - `materialityBasis` string[], required — Why this company discussion is material: substantive_thesis, performance_attribution, portfolio_action, meaningful_position_size, valuation_discussion, catalyst_discussion, risk_or_bear_case, substantive_negative_view, mistake_or_exit_review.
    - `relationship` string, required — The investor's relationship to the company in this letter: long, short, new_position, added, trimmed, sold, exited, watchlist, negative_research, or issuer.
    - `stance` string, required — Overall stance: bullish, bearish, mixed, or neutral.
    - `conviction` string, required — Conviction the letter expresses: high, medium, low, or unknown.
    - `positionSizePercent` number, required — Disclosed position size in percent, only when the letter states it for this security individually. Nullable.
    - `positionSizeBasis` string, required — What the percentage is measured against (portfolio, fund, nav, aum, net, gross, other). Nullable.
    - `positionSizeDescription` string, required — Qualitative sizing language when no number is disclosed. Nullable.
    - `timeHorizon` string, required — Stated investment horizon: short_term, medium_term, or long_term. Nullable.
    - `thesisSummary` string, required — Concise summary of the investment thesis as argued in the letter.
    - `sourceQuote` string, required — Representative verbatim quote from the letter. Nullable.
    - `variantPerception` string, required — Where the investor believes they differ from consensus. Nullable.
    - `riskSummary` string, required — Risks the letter itself flags for this position. Nullable.
    - `catalystSummary` string, required — Catalysts the letter identifies. Nullable.
    - `valuationSummary` string, required — The letter's valuation argument. Nullable.
    - `businessQualitySummary` string, required — The letter's view on business quality/moat. Nullable.
    - `managementAssessment` string, required — The letter's assessment of management. Nullable.
    - `capitalAllocationSummary` string, required — The letter's view on capital allocation. Nullable.
    - `financialExpectations` string, required — Financial expectations the letter states (growth, margins, earnings power). Nullable.
    - `performanceOrActionSummary` string, required — What the position did for performance and/or what action the investor took. Nullable.
    - `decisionRelevantTakeaways` string[], required — Decision-relevant takeaways extracted from the discussion.
    - `monitoringPoints` string[], required — What the investor says they are watching from here.
    - `company` object, required
      - `companyFiscalIdentifier` string, required — Fiscal.ai stable company identifier (usable with every company endpoint).
      - `companyKey` string, required — Fiscal.ai company key (exchangeCode_ticker).
      - `displayNameEnglish` string, required — Common display name.
      - `sector` string, required — GICS sector
      - `industryGroup` string, required — GICS industry group
      - `industry` string, required — GICS industry
      - `subIndustry` string, required — GICS sub-industry
      - `headquartersCountryCode` string, required — Headquarters country (ISO 3166-1 alpha-2)
      - `headquartersCountryName` string, required — Headquarters country
      - `marketCapUsd` number, required — USD market cap as of the latest publish — served only when computed from shares outstanding × prices (as on the v3 companies list); null otherwise.
      - `primaryListing` object, required
        - `ticker` string, required
        - `exchangeCode` string, required — Listing exchange code
        - `exchangeName` string, required
        - `operatingMic` string, required — Operating MIC of the listing exchange

## 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)
