---
title: "Holdings history, every fund"
method: GET
path: "/history.json"
---

# Holdings history, every fund

`GET /history.json`

## Request

- Base URL: `https://tickerinside.com/api/v1`
- URL: `https://tickerinside.com/api/v1/history.json`
- Auth: none required

Every issuer-layer fund that has a history here, with the dates of its oldest and newest files in the archive, how many file dates it holds, how often the issuer publishes, and the address of its history file. Not under CC BY 4.0: the history terms apply (license, terms). Fetching this list or many funds' history files on a schedule to store them is not allowed.

## Response `200`

The file. The example is a real answer, shortened: long lists and maps keep their first entries.

- HistoryIndex
  - `as_of` string, nullable, required: The newest file date any fund's history reaches. Here as_of is a holdings file date, not the price date.
  - `since` string, nullable, required: The oldest file date any fund's history starts from. It is not the day the archive began, which is since in status.json, under data.archive.
  - `count` integer, required: How many funds have a history file, the length of funds.
  - `funds` object[], required: One entry per fund with a history, ended or not; its fields are described below.
    - `t` string, required: The fund's ticker.
    - `first` string, required: The date of the oldest file of the fund in the archive.
    - `last` string, required: The date of the newest.
    - `file_dates` integer, required: How many file dates the archive holds for the fund.
    - `cadence` 'daily' | 'monthly' | 'irregular' | 'null', nullable, required: daily when the median gap between two files is at most four days, monthly when it is 25 to 35 days, irregular otherwise; null with a single file.
    - `traded_pp_from` string, nullable, required: The date of the first step whose two files both carry share counts, from which traded_pp is measured; null when there is none yet.
    - `ended` string, nullable, required: Last issuer file's date once no longer read, else null.
    - `url` string, required: The fund's history file.
  - `holdings_at` string, nullable, required: The address of a fund's holdings at a date, with {ticker} and {date} to fill, once it is served; null until then. Today any valid date answers 404 not_covered, with reason holdings_at_date_not_enabled and the address of the fund's changes file.
  - `note` string, required: How to read the files.
  - `docs` string, required: Where the files are documented.
  - `license` string, required: The terms the history is published under: TickerInside's history terms, not CC BY 4.0.
  - `terms` string, required: The terms in full, on the legal notice.
  - `attribution` string, required: How to credit it, a link to the file where the medium allows one and the name where it does not, then what the history terms allow.

## Other responses

- `304`: Not modified: the ETag of your copy, sent in If-None-Match, is still current. Files are cached five minutes.
- `503`: The file could not be served just then: retry after a minute. uptime says whether the site fails its own checks.

---

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