/api/v1/nport/{accession}Full single-filing detail (fund info, returns, flows)
The complete parsed N-PORT filing body except the holdings table: registrant and series identity, Part B assets/liabilities, monthly class returns, investor flows, risk metrics, and the series/class roster.
Why use this
Common use case
The full parsed body of one N-PORT filing — everything except the position table, which is its own paginated endpoint (GET /api/v1/nport/{accession}/holdings), and whose row count is reported here as holdings_count.
Serving is PUBLISHED-only: when an amendment has superseded this accession, or the filing is quarantined pending a parse fix, the endpoint returns 404 with the state named in error.details.state — a filing is never partially served.
Fidelity rules worth knowing: scalar money/percent items are served as JSON numbers at full as-filed precision; structured Part B blocks (flows, risk metrics, VaR) are served as the exact captured form structure with RAW STRING values, so the literal "N/A" a filer wrote stays "N/A"; and any "N/A" placed in a typed scalar field is preserved verbatim in lexical_overrides while the typed value is null. Monthly per-class returns keep their filed 12-decimal precision.
The entities[] roster is the filing's own acceptance-header listing of series and classes — including in-filing class tickers — and is present on live-ingested filings; rows backfilled from the SEC's quarterly datasets have an empty roster because the header is not part of those datasets (their tickers come from the N-CEN/mf sources in the ticker join instead).
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| accession | path | required | — | — | SEC accession number, dashed format (10-2-6 digits). Only PUBLISHED filings serve; a superseded original or quarantined filing returns 404 with its state named in error.details. | 0001752724-26-002544 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| accession_number | string | no | Echoed accession number. |
| submission_type | string | no | NPORT-P or NPORT-P/A. |
| registrant | object | no | Part A registrant block: { cik, name, file_number, lei, street1, street2, city, state, country, zip, phone }. cik is 10-char zero-padded. |
| series | object | no | { series_id, series_name, series_lei, class_id_primary, class_ids[] } — the fund series the report covers and its share classes. series_id is null on whole-trust filings. |
| period | object | no | { rep_pd_end, as_of, is_final_filing }: the fiscal period end, the reporting month end this snapshot is 'as of', and the fund's final-filing flag. |
| assets | object | no | Part B headline items, USD as filed at full precision: { tot_assets, tot_liabs, net_assets, assets_attr_misc_sec, assets_invested }. net_assets is the fund's AUM — the ETF market-cap concept. |
| payables | object | no | Part B payable/commitment schedule (USD): one-year and after-one-year amounts payable to banks / controlled companies / other affiliates / other, plus delay_deliv, stand_by_commit, liquid_pref, csh_not_rptd_in_cor_d. Items the fund did not report are null. |
| monthly_returns[] | array | no | Per-share-class monthly total returns for the three reported months: { class_id, return_month_1..3 } as filed (decimal percent per the form, 12-decimal precision preserved; month 1 is the most recent). A class that filed "N/A" carries null with the verbatim text in its lexical_overrides. |
| monthly_flow | object | yes | Part B investor flows, served as the as-filed block: { mon1Flow: { sales, reinvestment, redemption }, mon2Flow, mon3Flow } with RAW STRING values exactly as tagged ("N/A" included, never coerced). mon1 is the most recent month. |
| credit_spread_risk | object | yes | Part B item B.3 credit-spread risk block (delta-spread by maturity bucket, investment grade vs non-investment grade), as-filed raw block. Null when the fund is under the reporting threshold. |
| cur_metrics | object | yes | Part B interest-rate risk (delta-NPV per currency, by maturity bucket), as-filed raw block. |
| borrowers | object | yes | Securities-lending borrowers block (name/LEI/aggregate value), as-filed. |
| var_info | object | yes | Rule 18f-4 VaR block as filed. The designated reference index name/identifier are ALSO lifted to top-level designated_index_name / designated_index_identifier for direct access. VaR numeric backtesting items are non-public and never present. |
| monthly_return_categories | object | yes | Item B.5 monthly returns by instrument category (including the 2019-era aggregate blocks and othMon categories), as-filed raw block. |
| entities[] | array | no | The filing's acceptance-header series/class roster (live-ingested filings): { sequence, role, owner_cik, series_id, series_name, class_contract_id, class_contract_name, class_contract_ticker }. THIS is where in-filing class tickers live. Empty on dataset-backfilled rows (the header is not part of the SEC's quarterly datasets). |
| holdings_count | integer | no | Number of position rows the filing's Part C carries — fetch them from /{accession}/holdings. |
| lexical_overrides | object | yes | { column: verbatim } for any typed field where the filer entered a literal like "N/A": the typed value is null and the exact as-filed text is preserved here. Fidelity mechanism — nothing the filer wrote is lost. |
| source | string | no | 'live' or 'dera' (SEC quarterly-dataset backfill). dera_vintage names the dataset quarter (e.g. 2019q4) when source='dera'. |
| filed_at | string | yes | EDGAR acceptance timestamp (null on dataset-backfilled rows). parsed_at is when the engine parsed it. |
Sample response
- "status": "success"
- "data":
- "accession_number": "0001752724-26-002544"
- "submission_type": "NPORT-P"
- "is_amendment": false
- "registrant":
- "series":
- "period":
- "assets":
- "payables":
- "is_non_cash_collateral": null
- "credit_spread_risk": null
- "cur_metrics": null
- "borrowers": null
- "monthly_return_categories": null
- "monthly_flow":
- "miscellaneous_securities": null
- "var_info": null
- "designated_index_name": null
- "designated_index_identifier": null
- "explanatory_notes": null
- "signature":
- "lexical_overrides": null
- "monthly_returns":
- "entities":
- "holdings_count": 3521
- "source": "live"
- "dera_vintage": null
- "filed_at": "2026-06-25T14:32:11"
- "parsed_at": "2026-06-25T14:33:02"
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?api_Token=YOUR_API_KEY" \
-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).