---
title: "Api Fund Holdings Timeseries"
method: GET
path: "/api/fund-holdings/timeseries"
---

# Api Fund Holdings Timeseries

`GET /api/fund-holdings/timeseries`

## Request

- Base URL: `https://www.oxfordledge.com` (the document declares no server; this is the origin it was published from)
- URL: `https://www.oxfordledge.com/api/fund-holdings/timeseries`
- Auth: none declared

A 13F filer's portfolio ACROSS QUARTERS (X5, 13F time-series).

Reads the hot S3 summary layer (pg_get_fund_holdings_timeseries) — one row per
quarter with the fund's position count, total value, and largest positions.
Powers the fund's quarter-over-quarter portfolio panel in /?view=13f.

Each `top_positions[]` entry is {ticker, issuer, issuer_name, shares, value_usd}
where `ticker` is the resolved symbol or null when unresolved (never a CUSIP;
an unresolved row is identified by `issuer_name`).

Data source: SEC EDGAR 13F-HR filings (quarterly; ~45-day lag). Error envelope
returns `series: []` for NPE-safe frontend iteration.

## Query parameters

- `cik` string, required

## Response `200`

Successful Response

- FundHoldingsTimeseriesResponse: `GET /api/fund-holdings/timeseries` — a 13F filer's portfolio across quarters (X5). `series` iterated in the frontend; declared REQUIRED so the error envelope returns it as [].
  - `cik` string, required: Echoed fund CIK.
  - `series` object[], required: Per-quarter portfolio rows (oldest-to-newest): {quarter, fund_name, n_positions, total_value, top_positions[]}; each top_positions entry is {ticker, issuer, issuer_name, shares, value_usd} with `ticker` the resolved symbol or null (never a CUSIP).
  - `error` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api.md) · [All operations](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/llms.txt) · [OpenAPI document](https://skmtc.dev/oxfordledge/apis/oxford-ledge-api/revisions/e832a1260f0b?raw)
