Skip to content
/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

Everything the fund reported about itself for the month in one response: net assets (AUM), payable schedules, credit-spread risk and currency metrics, three months of per-class total returns, three months of sales/reinvestment/redemption flows, VaR designated-index fields, explanatory notes, and (on live filings) the header roster of series/classes with tickers.

Common use case

Rendering a fund's monthly report page, reading netAssets/totAssets for one month, pulling per-class monthly returns, or reading investor flow (redemptions vs sales) for the reporting month.

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

NameInRequiredDefaultAllowedDescriptionExample
accessionpathrequiredSEC 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

FieldTypeNullableDescription
accession_numberstringnoEchoed accession number.
submission_typestringnoNPORT-P or NPORT-P/A.
registrantobjectnoPart A registrant block: { cik, name, file_number, lei, street1, street2, city, state, country, zip, phone }. cik is 10-char zero-padded.
seriesobjectno{ 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.
periodobjectno{ 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.
assetsobjectnoPart 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.
payablesobjectnoPart 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[]arraynoPer-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_flowobjectyesPart 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_riskobjectyesPart 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_metricsobjectyesPart B interest-rate risk (delta-NPV per currency, by maturity bucket), as-filed raw block.
borrowersobjectyesSecurities-lending borrowers block (name/LEI/aggregate value), as-filed.
var_infoobjectyesRule 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_categoriesobjectyesItem B.5 monthly returns by instrument category (including the 2019-era aggregate blocks and othMon categories), as-filed raw block.
entities[]arraynoThe 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_countintegernoNumber of position rows the filing's Part C carries — fetch them from /{accession}/holdings.
lexical_overridesobjectyes{ 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.
sourcestringno'live' or 'dera' (SEC quarterly-dataset backfill). dera_vintage names the dataset quarter (e.g. 2019q4) when source='dera'.
filed_atstringyesEDGAR 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

StatusLabelDescription
200OKRequest succeeded.
400Bad RequestInvalid query, body, or path parameter.
401UnauthorizedMissing or invalid Authorization header / api_Token.
402Payment RequiredInsufficient token balance for this call. Top up
429Too Many RequestsRate limit exceeded for your tier (see /pricing for tier limits). Tier limits
500Server ErrorUnexpected 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).