# GET /api/v1/flows/{ticker}.json

One endpoint of the TickerInside API, with data through 2026-10-16. Contents of the reference, each section and endpoint as a file: https://tickerinside.com/api/sections/index.md. The whole reference as Markdown: https://tickerinside.com/api/index.md

`GET /flows/{ticker}.json`: one security's flows, funds adding and trimming, net change in shares and dollars, a 20-day series. Feeds: /feeds/stock/{ticker}.xml, and /feeds/fund/{ticker}.xml for a fund's changes. https://tickerinside.com/api/v1/flows/nvda.json

## Response

One security's flows: on date, how many funds added and trimmed it, the net change in shares, in dollars at the files' own prices and beyond the funds' own growth, the funds with the largest changes, with their weights only, and the lines left out as no trade; then one row per close of the last 20, its index entries and exits and its corporate actions. Composed when asked from the shard of the key's first character, /api/v1/flows/shards/{c}.json.

- `ticker` (string): The security's key, as the holdings key it.
- `name` (string or null): Its name, where known.
- `date` (string or null): The close of latest, as in /api/v1/flows.json.
- `newest_file` (string or null): The newest close a file read reflects.
- `funds_holding` (integer): How many of the funds counted hold it in their newest file.
- `funds_counted` (integer): How many funds are counted on date.
- `latest` (object or null): Its flows on date; null when no fund moved it then. Described below.
- `series` (object): One row per close of the last 20 it moved on, oldest first, with the columns named in columns: date, funds_adding, funds_trimming, funds_entered, funds_exited, net_shares, net_shares_beyond_growth, net_value_usd, and withheld, why the first null of the three sums is null (as in latest). No close newer than date is published.
- `index_events` (array of object): Its entries and exits in funds tracking the same index, in the last 20 trading days, as in /api/v1/flows.json.
- `corporate_actions` (array of object): The mergers, spin-offs, takeovers, splits and uniform changes it is part of in the last 20 trading days, as in /api/v1/flows.json; the lines a merger, a spin-off or a split moved are left out of its sums.
- `method` (string): The method of the figures, ti-flows/1.
- `note` (string): How to read the figures.
- `summary` (string): The night's summary.
- `feed` (string): This security's flows as an RSS feed.
- `cite_as` (string): A citation line: the security, the closes of the window and this answer's address.
- `cite_html` (string): The credit as HTML: a link to this answer, then its address.
- `docs` (string): Where the answer is documented.
- `license` (string): The history terms, not CC BY 4.0.
- `terms` (string): The terms in full, on the legal notice.
- `attribution` (string): How to credit it, then what the history terms allow.

The latest object:

- `date` (string): The close.
- `funds_adding` (integer): How many funds hold more shares of it than in their previous file.
- `funds_trimming` (integer): How many hold fewer.
- `funds_entered` (integer): How many of those adding did not hold it before.
- `funds_exited` (integer): How many of those trimming hold none now.
- `single_fund` (boolean): true when one fund alone moved it: every sum is then null.
- `net_shares` (integer or null): The change in shares held, summed over the funds. Null when fewer than three funds moved it or one fund makes more than 80% of it, as withheld says: a fund's share count is never published.
- `net_shares_beyond_growth` (integer or null): The same change less the part in proportion to each fund's own growth across its step (b minus k times a, k the fund's median ratio of share counts).
- `net_shares_pct` (number or null): net_shares in percent of the shares the funds held before; null when fewer than three funds held it before or after, or one fund held more than 80% of it.
- `net_value_usd` (integer or null): net_shares valued at each file's own price per share: market value over shares, or weight times the fund's stated net assets over shares. Never an outside price.
- `net_value_beyond_growth_usd` (integer or null): net_shares_beyond_growth valued the same way.
- `valued_pct` (number or null): The share of the change in shares that a file valued.
- `withheld` (object or null): Why each null sum is null, as {field: reason}, or null: fewer_than_3_funds, one_fund_dominant (one fund makes more than 80% of the sum, or of the difference two published sums give, such as net_shares less net_shares_beyond_growth), gives_back_a_fund_count (the sums as printed, taken as one or two funds' own or compared with the figures published before for the same close, would give back a fund's share count) or not_all_valued.
- `funds` (object): The funds with the largest changes, largest by value first, at most eight, with the columns named in columns: fund, change (entered, exited, increased or decreased), weight_before and weight_after (percent of the fund, as its holdings files print them), previous and date (its two files, as its issuer dates them). No fund's share count is published, nor any figure of its own a count could be worked out from.
- `not_trusted` (array of array of string): The funds whose line is left out of every sum, as [fund, reason]: price_per_share_jump (a split or a count in other units, by the file's own values), count_weight_mismatch (a count that moved against the weight), split_seen_in_other_files, price_unlike_other_funds (a price per share half again or more away from the other funds' line of the same key: another instrument under it), file_gap, rekeyed (a change of ticker), converted (a merger paid in shares), distribution (a spin-off) or split (a split, a bonus issue or a stock dividend found across the funds).

A key no fund read daily held or moved in the last 20 trading days answers 404, reason not_held_by_daily_funds. Not under CC BY 4.0: the history terms apply.

## Errors and redirects

| Status | reason | Meaning | Next request |
|---|---|---|---|
| 200 |  | The file. | Read it. Every file carries its dates. |
| 204 |  | A browser's CORS preflight, an `OPTIONS` request, answered before any redirect: GET and HEAD from any origin, with the headers asked for, kept up to a day. | Nothing to do. |
| 301 |  | An upper case ticker, a share class written `BRK-B` or `BRK/B` (the file is `brk.b.json`), an address without `.json`, `/api/v1` alone, or punctuation copied from a sentence at its end. A key listed abroad with a hyphen, such as `SQM-B`, keeps it. A written comparison asked for in the other order leads to its file: `vym-vs-vig` to `vig-vs-vym.json`. A fund with no file under `/etf/` leads to its file under `/fund/`: `etf/voo.json` to `fund/voo.json`. `/stock/`, the name of the pages, leads to the stock files under `/sec/`: `stock/nvda.json` to `sec/nvda.json`. | Follow it (`curl -L`). `Location` gives the address. |
| 304 |  | Your `If-None-Match` matches the file's `ETag`. | Keep your copy. |
| 404 | `no_such_endpoint` | No endpoint at this address. | `covered`: `index.json`. |
| 404 | `not_held_by_daily_funds` | Under `/flows/`: no fund read daily from its issuer's files held the key or moved it in the window the flows cover. | `summary`: `flows.json`, the day's largest moves. |
| 503 |  | The file could not be served just then. The body's `error` is `unavailable`, with `Retry-After: 60`. | Retry after a minute. `uptime`: `uptime.json` says whether the site fails its own checks. |

Every 404 body is JSON. It holds `error`, always `not_covered`; `reason`, a code /contract/ lists; `ticker`, as asked for, or null when the address names no ticker; `message`; `docs`; and the follow-up address named above. Under /history/, it also holds `date` when a date was asked for. `before_history`, for a date before a fund's first file, is answered only once holdings at a date are served. A 400 body holds `error` (`bad_request`), `reason`, `message`, `docs`, and `parameter`, or `limit` and `asked`.
