/api/v1/nport/by-ticker/{ticker}Monthly filing history for a fund by ticker
Resolve a fund/class ticker to its SEC series, then return that fund's published N-PORT history, newest month first.
Why use this
Common use case
N-PORT filings identify funds by SEC series id, while markets identify them by ticker — this endpoint is the bridge. The ticker-to-series join is built from four sources and resolved per share class by a fixed precedence: the filing's own acceptance-header roster (source sgml, present on live-ingested filings), the SEC's N-CEN annual-report datasets (ncen), the SEC's mutual-fund ticker file (mf), and a registrant-CIK fallback (cik) for single-fund unit investment trusts that appear in none of the above (SPY is the canonical example). Disagreements between sources are never silently overwritten — the winning claim per class is served and reported in meta.resolution.
A regular fund ticker resolves to its series and serves that series' monthly history. A trust-level match (source cik) serves the registrant's whole-fund filings, which carry no series id. The row shape is identical to GET /api/v1/nport/by-series/{series_id}.
For just the AUM numbers over time (the chartable series), prefer GET /api/v1/nport/funds/{ticker}/aum-history — same resolution, leaner rows, cursor pagination.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| ticker | path | required | — | — | Fund/class ticker, case-insensitive. Resolution precedence per class: the filing's own header roster (sgml) > the SEC's N-CEN datasets (ncen) > the SEC mutual-fund ticker file (mf) > registrant-CIK fallback for single-fund trusts (cik). Unknown tickers return 404 UNKNOWN_TICKER. | IVV |
| limit | query | optional | 100 | — | Rows per page (1-500). | 100 |
| offset | query | optional | 0 | — | Pagination offset. | 0 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| data[] | array | no | Filing summary rows, newest reporting month first — same row shape as /latest. For a single-fund trust resolved by CIK, rows are the trust's whole-fund filings (series_id null). |
| meta.resolution | object | no | { ticker, matches: [{class_id, series_id, reg_cik, source}] }: the winning ticker claim per share class after source-precedence resolution. A ticker mapping to a series serves that series' months; a trust-level (cik-source) match serves the registrant's series-less filings. |
| meta.pagination | object | no | { total: null, limit, offset, has_more } — page forward with offset while has_more is true. |
Sample response
- "status": "success"
- "data":
- "meta":
- "resolution":
- "pagination":
Errors
| Status | Label | Description |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | Bad Request | Invalid query, body, or path parameter. |
| 401 | Unauthorized | Missing or invalid Authorization header / api_Token. |
| 402 | Payment Required | Insufficient token balance for this call. Top up |
| 429 | Too Many Requests | Rate limit exceeded for your tier (see /pricing for tier limits). Tier limits |
| 500 | Server Error | Unexpected server-side failure. Retry with backoff; report if persistent. |
Code samples
curl "https://api.finradar.ai/api/v1/nport/by-ticker/IVV?api_Token=YOUR_API_KEY&limit=100&offset=0" \
-H "Authorization: Bearer YOUR_JWT_TOKEN"Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).