/api/v1/nport/{accession}/holdingsThe filing's complete portfolio holdings table
Every Part C position row of one N-PORT filing — identifiers, balance, USD value, % of net assets, category flags, debt terms, and the full derivative/repo/securities-lending blocks — paginated, largest position first.
Why use this
Common use case
The position table of one filing — the complete monthly portfolio the fund disclosed, from a few dozen rows for a focused fund to several thousand for a total-market index fund. Rows are served largest-position-first (val_usd DESC), and meta.pagination.total is exact, so a client can size the book before paging.
Unit correctness is on the row: balance means shares only when units is NS — PA rows are principal (face) amounts and NC rows are contract counts. pct_val is the as-filed decimal fraction of net assets (0.052419 = 5.2419%); the API never rescales it.
Derivatives: the form defines seven categories (forward, future, option, swap, swaption, warrant, other), and each derivative row carries its category code plus the COMPLETE as-filed block in derivative_info — counterparties, notionals, terms, and the reference-instrument tree, including the nested-derivative case (a swaption's underlying swap, an option on a future), preserved recursively exactly as filed. Repos and securities-lending rows carry their own blocks the same way. Structured blocks keep RAW STRING values (the form's "N/A", Y/N, and title-case enums are never coerced inside a block); typed scalar columns are numeric, with any literal "N/A" preserved in lexical_overrides.
For which FUNDS hold a given security (the reverse direction), use GET /api/v1/nport/holders-of/{cusip}.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| accession | path | required | — | — | SEC accession number of a PUBLISHED filing (superseded/quarantined return 404 with the state in error.details). | 0001752724-26-002544 |
| cusip | query | optional | — | — | Exact 9-character CUSIP filter. | 037833100 |
| isin | query | optional | — | — | Exact ISIN filter. | US0378331005 |
| asset_cat | query | optional | — | — | Form asset category code as filed (e.g. EC equity-common, DBT debt, STIV short-term investment vehicle, RA repurchase agreement, DE derivative). | EC |
| derivative_cat | query | optional | — | — | Derivative category code as filed (FWD forward, FUT future, OPT option, SWP swap, SWO swaption, WAR warrant, OTH other). Rows without a derivative carry null and are excluded by this filter. | SWP |
| min_pct | query | optional | — | — | Keep rows with pct_val >= this value. pct_val is the AS-FILED decimal fraction of net assets (0.052419 = 5.2419%) — never multiplied by 100. | 0.01 |
| 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 | Position rows ordered by val_usd DESC (largest first), then filing sequence. One row per reported investment. |
| data[].name | string | yes | Issuer name as filed. The form's "N/A" convention is preserved verbatim where the filer used it. |
| data[].lei | string | yes | Issuer LEI as filed. |
| data[].title | string | yes | Title of the issue as filed. |
| data[].cusip | string | yes | 9-char CUSIP. Null when the filer reported none (foreign instruments carry ISIN or an 'other' identifier in identifiers instead). |
| data[].isin | string | yes | ISIN from the identifiers block, lifted for direct filtering. |
| data[].ticker | string | yes | Ticker from the identifiers block, when the filer reported one. |
| data[].identifiers | object | yes | The full as-filed identifiers block (ISIN/ticker/other with their attribute values), raw strings. |
| data[].balance | number | yes | Quantity held, in the unit named by units: NS = number of shares, PA = principal amount, NC = number of contracts, OU = other units (desc_oth_units names it). As filed, full precision. |
| data[].units | string | yes | Unit code for balance (NS/PA/NC/OU). Critical for unit-correctness — a PA row is face value, not shares. |
| data[].cur_cd | string | yes | ISO-4217 currency of the investment when not USD; currency_conditional carries the conditional block (currency + exchange rate) for other-currency cases. |
| data[].exchange_rt | number | yes | Exchange rate to USD as filed, for non-USD positions. |
| data[].val_usd | number | yes | Position value in USD as filed (fair value per the form's instructions), full precision. The sort key. |
| data[].pct_val | number | yes | Percentage of the fund's net assets, AS FILED: a decimal fraction at up to 12 decimals (0.052419 = 5.2419%). Never scaled by the API. |
| data[].payoff_profile | string | yes | Long / Short / N/A, title-case exactly as the form defines. |
| data[].asset_cat | string | yes | Asset category code as filed; asset_conditional carries the 'other' description block when the filer chose a write-in category. |
| data[].issuer_cat | string | yes | Issuer type code as filed; issuer_conditional carries the write-in block. |
| data[].inv_country | string | yes | Investment country code as filed (inv_oth_country carries the write-in). |
| data[].is_restricted_sec | boolean | yes | Restricted-security flag as filed. |
| data[].fair_value_level | string | yes | ASC 820 fair-value hierarchy level as filed: 1, 2, or 3. |
| data[].debt_maturity_dt | string | yes | Debt maturity date. The form's perpetual-bond sentinel 2500-12-31 is served exactly as filed. |
| data[].debt_coupon_kind | string | yes | Coupon type as filed (Fixed / Floating / Variable / None — title-case per the form's enums). |
| data[].debt_annualized_rt | number | yes | Annualized coupon rate as filed. |
| data[].debt_is_default | boolean | yes | In-default flag as filed. |
| data[].debt_sec | object | yes | The full as-filed debt-security block (convertible terms, reference instruments, etc.), raw strings. |
| data[].derivative_cat | string | yes | One of the seven form derivative categories (FWD/FUT/OPT/SWP/SWO/WAR/OTH) when the row is a derivative. |
| data[].derivative_info | object | yes | The complete as-filed derivative block for the category — counterparties, notional, terms, and the reference-instrument tree (which may nest another derivative; nesting is preserved recursively, exactly as filed). |
| data[].repurchase_agrmt | object | yes | As-filed repurchase-agreement block (rate, maturity, collateral schedule). |
| data[].security_lending | object | yes | As-filed securities-lending block (cash collateral, non-cash collateral, loaned value). |
| data[].lexical_overrides | object | yes | { column: verbatim } preservation of literal "N/A" entries in typed columns for this row. |
| meta.pagination | object | no | { total, limit, offset, has_more } — total is EXACT here (accession-scoped count over the applied filters). |
Sample response
- "status": "success"
- "data":
- "meta":
- "accession_number": "0001752724-26-002544"
- "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/0001752724-26-002544/holdings?api_Token=YOUR_API_KEY&cusip=037833100&isin=US0378331005&asset_cat=EC&derivative_cat=SWP&min_pct=0.01&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).