Quick start
List the most recent letters that discuss a company:narratives (market backdrop, positioning, performance commentary, outlook, firm updates), performanceFigures, provenance, and the extracted theses[]. Letters with more than 25 theses return the first 25 inline with a thesisCount and a link to GET /v1/fund-letters/theses?letter_id= for the rest.
The thesis model
A thesis is one manager’s view of one company in one letter. Its decision-context fields use fixed enums.relationship
What the manager did or holds, as stated in the letter.
stance
The direction of the view expressed.
conviction
How strongly the manager expresses the view. Conviction is as expressed in the letter’s own language, never inferred from position size or tone — the record carries convictionBasis: "as_expressed" to make that explicit.
materiality.basis
Why the mention qualified as a thesis rather than a passing reference.
Theses also carry nullable narrative fields (
thesisSummary, variantPerception, riskSummary, catalystSummary, valuationSummary, businessQualitySummary, managementAssessment, capitalAllocationSummary, financialExpectations, performanceOrActionSummary) plus timeHorizon and positionSize. A narrative field is null when the letter does not discuss that dimension — extraction records what the manager wrote, it does not fill gaps.
Screen theses across the corpus with GET /v1/fund-letters/theses:
Verify a quote against the source document
Every thesis includes asourceQuote with one or more anchors that locate the quote in the original document:
quote is always the exact span copied from the stored page text, so slicing the page markdown at [charStart, charEnd) reproduces it byte for byte. To verify:
- Confirm the document’s
sourceSha256andpaginationVersionmatch the anchor. Offsets are only meaningful against the same document bytes and the same pagination. - Find the entry in
pages[]whosepageequalsanchor.page. charStartis inclusive andcharEndis exclusive, indexing characters of that page’smarkdownstring. In JavaScript:pageEntry.markdown.slice(812, 912) === anchor.quote.
?sha= to retrieve the exact document variant the anchor was computed against:
quoteAsExtracted preserves the model’s version while quote remains the true span from the document. Slice verification always targets quote.
Deltas for agents: since and /changes
Two mechanisms keep a downstream copy current.
since is a convenience filter on list endpoints: GET /v1/fund-letters?since=2026-07-01T00:00:00Z returns records updated after that timestamp. It is good for a quick catch-up query, but it is not a durable sync primitive — a record updated twice appears once, and you can miss ordering guarantees under concurrent writes.
GET /v1/fund-letters/changes is the durable delta feed. It returns an ordered event sequence with a keyset cursor:
letter.published, letter.updated, letter.superseded, thesis.extracted, manager.added. Store nextCursor after each page and pass it back as cursor on the next poll. The cursor is keyset-based over the event sequence, so a poll loop never skips or double-counts events even while new letters are being ingested; process events idempotently on your side. /changes responses are never cached.
letter.superseded matters for anchor hygiene: it fires when a letter’s canonical document is replaced. Superseded letter and thesis IDs continue to resolve to their successors, and superseded document variants stay retrievable through ?sha=.
Manager overview
Start from a manager instead of a company with the Fund Overview endpoint — one token-efficient briefing per firm:canonicalNameis the name people actually say — curated for covered managers (“Oaktree Capital”, “GMO”), derived by stripping legal suffixes otherwise.namekeeps the form the letters and filings use.- The overview is deliberately small:
keyThesescarries at most 5 headline theses (ticker, relationship, stance, one line each), and nothing on the payload inlines page markdown, anchors, or full thesis bodies. Followlinks.lettersandlinks.theseswhen you need depth. latestLetterisnullfor a manager with no processed letters yet — the curated profile (description, founders, website) still serves.- When the Fund Directory is enabled, the overview also carries a
referencesblock —{ website: { url, confidence }, wikipedia: { url }, grokipedia: { url, confidence } }— the same proven-or-nullexternal links served on the manager list (see the directory section below). Confidence is a verification tier, not a numeric score.
Top-10 positions from the latest 13F
Passinclude=positions to inline latest13F — the manager’s latest canonical 13F report with its top 10 positions by reported value:
- Positions come from the materialized 13F holder index with the same amendment/restatement canonicalization as the institutional-holders endpoints, so 13F-HR/A amendments are never double-counted.
valueis USD (13F values are reported in thousands; already scaled), andpctOfPortfoliois the position’s share of the report’s total reported value. tickeris resolved from the reported CUSIP where a canonical listing exists, elsenull.totalPositionscounts the report’s distinct issuer positions.- Get more: the overview inlines at most 10 positions. Follow
links.holdings13Ffor the manager’s full 13F holdings surface (the same advisercikalso works with/v1/owners/institutional/investorfor the paged portfolio view). - Without
include=positionsthelatest13Fkey is omitted entirely; with it, a manager with no linked adviser CIK or no indexed 13F serveslatest13F: null.
fund_letters.manager_overview (same include argument) and in the SDKs as getFundManagerOverview(managerId, { include: "positions" }) / get_fund_manager_overview(manager_id, include="positions"). The CLI twin is secapi fund-letters overview --manager-id mgr_... --include positions.
Fund Directory
GET /v1/fund-letters/managers is the browsable fund directory: every manager record carries coverage stats, and — once the directory expansion is enabled server-side — reference links, a latest-13F summary, and the directory filters below. Browse by fund or CIO name, by a ticker the fund holds, by theme, or by 13F quarter:
q (fund/CIO substring), ticker (held in the latest 13F), cik (adviser CIK), theme, strategy (approach or styleTags), has_13f, min_letters, min_positions, publishes_letters, period (YYYYQn 13F quarter; quarter is an alias), and sort (aum_desc | positions_desc | letters_desc | name_asc).
Each directory record adds these fields to the manager shape:
- References are proven or absent.
referencesmirrors resolver-verified links only — a website, Wikipedia, or Grokipedia entry that was not confidently resolved servesnull, never a guessed URL.confidenceis the resolver’s verification tier —verified_crawlorform_advfor a website,verifiedorprobablefor Grokipedia — and isnullfor hand-curated entries. latest13Fis a summary, not holdings. It carries the latest report date (with itsYYYYQnperiod), position count, and reported AUM. For the full position list, follow the existing 13F cross-link (crossLinks.holdings13F) — see the next section.- Letterless managers are labeled. The expanded universe includes 13F filers that publish no letters; they carry
publishesLetters: falseand zeroed coverage counts. Filter them in or out withpublishes_letters=true|false.
fund_letters.managers, in the SDKs as listFundLetterManagers(params) / list_fund_letter_managers(**params) (with iter_fund_letter_managers for auto-pagination), and on the CLI as secapi fund-letters managers --ticker NVDA --sort aum_desc.
Cross-check a thesis against 13F holdings
Theses carrycrossLinks into the rest of the SEC API, so a claim in a letter can be checked against what the manager’s adviser actually reported:
relationship: added, stance: bullish), then follow crossLinks.holdings13F to confirm the adviser’s reported position moved in the same direction that quarter.
When a letter discusses a position without disclosing its size, some theses include an estimated size with positionSize.basis: "estimated_from_13f_adviser". Read the disclosures on that basis before using the number:
- The denominator is the adviser’s aggregate 13F portfolio value (
adviserTotal13FValueUsd,asOfQuarterare included), not the fund’s net asset value. For a multi-fund adviser those differ materially, and estimates are suppressed entirely when the adviser clearly runs multiple funds. - Estimates exist only for long-family relationships. 13F reports cover long positions in 13(f) securities, so short positions can never be estimated this way.
- Estimates are computed from share-type 13F rows only; put and call entries are excluded.
- 13F data is filed with a delay, so the estimate reflects the most recent reported quarter, which may not be the letter’s period.
positionSize with a different basis is the manager’s own disclosure from the letter, with an anchor like any other extracted value.
Document access by distribution tier
Every letter carries adistribution field that governs document access:
For
third_party letters, follow the sourceUrl to the original document. Thesis extractions and structured fields remain fully available across all three tiers; the tiers only govern serving the document body.
format=pdf returns a 302 redirect rather than bytes, so pass -L to curl:
Letter types and sources
Filter the corpus by what kind of letter and where it came from:letter_type=hedge_fund_letter— letters from hedge funds and private partnerships, sourced from the funds’ own publication channels.letter_type=registered_fund_letter— shareholder letters extracted from N-CSR and N-CSRS reports filed with the SEC. Since mid-2024, open-end mutual funds and ETFs generally no longer include manager letters in their filed shareholder reports, so filed-report coverage concentrates in closed-end funds while open-end commentary comes from fund websites.source=fund_website | edgar | aggregator— where the document was retrieved.sourcerecords retrieval;distributiongoverns document access.
period=YYYYQn or separate year and quarter integers, plus published_from / published_to date bounds.
Search the letter bodies
Beyond structured filters, search the full letter text lexically or semantically:highlights[] with a snippet and a page anchor, and semantic hits carry {score, letter, chunkText, anchor} — the same anchor shape as thesis quotes, so search results verify against document?format=markdown the same way.
Read next
Fund Letters product overview
Endpoints, billing, and plan access for the fund-letters surface.
Ownership workflows
The 13F and institutional-ownership flows behind the cross-links.
Migrate from Fiscal.ai
Endpoint, identifier, and pagination mapping for Fiscal.ai fund-letters users.

