---
title: "13F filer top holdings"
method: GET
path: "/13f/filers/{bw_filer_id}/holdings"
tags: ["13F Filers"]
---

# 13F filer top holdings

`GET /13f/filers/{bw_filer_id}/holdings`

## Request

- Base URL: `https://riskmodels.app/api`
- URL: `https://riskmodels.app/api/13f/filers/{bw_filer_id}/holdings`
- Auth: HTTP bearer

Top-N holdings at the filer's latest teo — or, with `as_of`, at the latest quarter *known* by that date (knowledge mode: selection on `filing_date <= as_of`; falls back to `report_date <= as_of` on panels without per-quarter filing dates, with the basis echoed as `as_of_basis`). Reads per-filer ds_ph.zarr from GCS. Each holding carries `security_id` (post-D.8.1 = bw_sym_id; pre-migration = a raw 9-char security identifier), `adj_mv`, and `weight` (fraction of total in-portfolio AUM). Bi-temporal stamps are body fields — `report_date` (valid time, = teo) and `filing_date` (knowledge time, EDGAR date_filed of the surviving submission; null until the per-quarter data fill lands) — mirrored on the X-Data-As-Of / X-Data-Filing-Date headers.

The surviving submission's filing identity is reported alongside them, at the response root (one accession state per selected quarter, not per holding): `accession_number`, `filing_type` (the SEC **form type** — `13F-HR`, `13F-HR/A`, `13F-NT` — not the report quarter) and `amendment_type` (cover-page semantics: `ORIGINAL`, `RESTATEMENT`, `NEW_HOLDINGS`, `UNKNOWN`). Use them to tell an original filing from an amendment, and a restatement of previously reported positions from an amendment that only adds new ones. All three are `null` on panels published before the accession-vintage stores; `amendment_type` is never inferred from a `/A` suffix, so a null means "not classified upstream", which is distinct from the `UNKNOWN` value.

## Path parameters

- `bw_filer_id` string, required

## Query parameters

- `limit` integer
- `offset` integer
- `as_of` string, date

## Response `200`

Top-N holdings at the selected teo, with `report_date`, `filing_date`, the selected accession's filing identity (`accession_number`, `filing_type`, `amendment_type`), and (under `as_of`) `as_of_basis`.

- object
  - `report_date` string, date: Valid time — the 13F reporting period end (= teo) the holdings describe.
  - `filing_date` string, date, nullable: Knowledge time — EDGAR date_filed of the surviving submission for this quarter. Null on panels without per-quarter filing dates.
  - `as_of_basis` 'filing_date' | 'report_date': Which axis resolved an `as_of` selection.
  - `accession_number` string, nullable: EDGAR accession number of the surviving submission for the selected quarter — the filing whose positions this panel reports. Null on panels published before the accession-vintage stores.
  - `filing_type` string, nullable: SEC **submission/form type** of that accession — not the report quarter. `13F-HR` is an original holdings report, `13F-HR/A` an amendment to one, `13F-NT` a notice filing. Null when the form type is not published for this panel.
  - `amendment_type` 'ORIGINAL' | 'RESTATEMENT' | 'NEW_HOLDINGS' | 'UNKNOWN', nullable: Cover-page amendment semantics of that accession, as classified upstream. `ORIGINAL` — not an amendment. `RESTATEMENT` — the amendment replaces the previously reported holdings in full. `NEW_HOLDINGS` — it adds holdings on top of the prior filing. `UNKNOWN` — an amendment whose cover page did not declare which. Null means no upstream classification is published for this panel, which is *not* the same as `UNKNOWN`; it is never inferred from a `/A` suffix.
  - `offset` integer: First row of this page in the adj_mv ranking.
  - `next_offset` integer, nullable: Offset of the next page; null on the last page.
  - `truncated_at_max_depth` boolean: The book has more than 50,000 rows; pages stop at that depth and `next_offset` is null there.
  - `holdings` object[]

## Other responses

- `402`: Insufficient prepaid balance.
- `404`: Filer not found, or no holdings panel available.
- `429`: Rate limit exceeded.

---

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