/insider-module/api/insiders/filings/{accession_number}Get complete filing details by accession number.
Get complete filing details by accession number. Returns full nested structure matching SEC-API.io format: issuer info, all reporting owners with relationships and officer titles, non-derivative/derivative transactions and holdings, all footnotes, and owner signature.
Why use this
Common use case
Single-filing deep-dive — the canonical source-of-truth for everything inside one Form 3/4/5. The response shape is sec-api.io-compatible (drop-in replacement for sec-api.io's /insider-trading/{accession} endpoint), so existing client code that parses sec-api.io responses Just Works.
Accession-number normalization is automatic — both hyphenated (0001127602-26-001234) and unhyphenated (0001127602260012 34) inputs resolve to the same filing. Returns HTTP 404 when the accession is unknown.
The response includes all four nested arrays — non-derivative transactions, non-derivative holdings, derivative transactions, derivative holdings — even when empty (no null arrays). Footnotes are the most-overlooked carrier of signal: 10b5-1 plan adoption dates, gift-recipient identities, vesting schedules, transfer-on-death assignments. Each transaction can carry a footnoteIds array referencing the top-level footnotes[].
For the flatter row-shaped interface (one row per (transaction, reporter)) prefer GET /insider-module/api/insiders/transactions/search; for amendment-chain traversal use the originalAccessionNo and supersededByAccessionNo fields to walk to other versions.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| accession_number | path | required | — | — | SEC accession number (e.g. 0001067983-24-000123 or 000106798324000123) | 0000320193-25-000123 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| status | string | no | Always `success` on 2xx. |
| data | object | no | Full filing detail object matching the sec-api.io nested shape — issuer block + reporting owners + non-derivative/derivative tables (transactions + holdings) + footnotes + signature. Returns HTTP 404 when the accession number cannot be resolved. |
| data.id | string | no | Internal FinRadar UUID for the filing (string-serialized). |
| data.accessionNo | string | no | SEC accession number in canonical `XXXXXXXXXX-YY-NNNNNN` format. Path-parameter input is normalized server-side: `0000320193-25-000123` and `000032019325000123` both resolve to the same filing. |
| data.documentType | string | no | Form type (`3`/`4`/`5`/`*/A`). Aliased name preserves sec-api.io compatibility. |
| data.filedAt | string | yes | ISO-8601 UTC timestamp the filing was accepted by SEC EDGAR. |
| data.acceptedAt | string | yes | ISO-8601 UTC EDGAR acceptance timestamp (typically equal to or seconds after `filedAt`). |
| data.periodOfReport | string | yes | ISO `YYYY-MM-DD` period covered by the filing (Form 4 Item 3). |
| data.dateOfOriginalSubmission | string | yes | Reserved for future use — currently always null. The original-submission date for amendments is exposed via `originalAccessionNo` instead. |
| data.schemaVersion | string | no | SEC EDGAR XBRL schema version (e.g. `'X0306'`). Defaults to `'X0306'` when missing. |
| data.notSubjectToSection16 | boolean | no | `true` when the filing was made by a non-Section-16 reporter (rare). Defaults to `false`. |
| data.noSecuritiesOwned | boolean | no | `true` for filings explicitly indicating no securities are owned (Form 3 starter filings sometimes). |
| data.isAmendment | boolean | no | `true` for `*/A` amendment filings. |
| data.amendmentType | string | yes | Amendment classification (`'restatement'`, `'addition'`, etc.) when discriminable from filing metadata; null for non-amendment filings. |
| data.originalAccessionNo | string | yes | For amendments, the accession number of the original filing being amended. Null for non-amendments. |
| data.supersededByAccessionNo | string | yes | When set, indicates this filing has been superseded by a later amendment with the given accession number. Use to traverse the amendment chain. |
| data.isSuperseded | boolean | no | `true` when a later amendment supersedes this filing (i.e. `supersededByAccessionNo` is set). Listing endpoints filter these out by default. |
| data.isLate | boolean | yes | `true` when the filing was submitted past the SEC Section-16 2-business-day deadline. |
| data.businessDaysToFile | integer | yes | Business days between transaction date and `filedAt`. |
| data.indexUrl | string | yes | Direct URL to the SEC EDGAR filing index page (HTML). |
| data.xmlUrl | string | yes | Direct URL to the SEC EDGAR XML primary document. |
| data.issuer | object | no | Issuer block: `{cik, name, tradingSymbol, tradingSymbolAtFiling}`. `tradingSymbolAtFiling` preserves the symbol as it was at filing time (in case of post-filing ticker changes). |
| data.issuer.cik | string | no | Issuer CIK (10-character zero-padded). |
| data.issuer.name | string | yes | Issuer name. Falls back to `InsiderFiling.issuer_name` when CompanyStub missing; further fallback to `'Unknown'`. |
| data.issuer.tradingSymbol | string | yes | CURRENT issuer ticker (canonical hyphen form). Use this for joins to today's market data. |
| data.issuer.tradingSymbolAtFiling | string | yes | Issuer ticker AS-OF the filing date — preserves what was current then. Diverges from `tradingSymbol` for issuers that changed ticker post-filing (rare; relevant for historical analysis). |
| data.reportingOwners | array | no | Array of all reporting persons on the filing — one entry per `FilingReporter`. Most filings have one reporter; joint filings (PE LP+GP+manager / 13D groups / SPAC sponsors) have 2-9+. Each entry includes identity + relationship + address (full sec-api.io-shaped nested object). |
| data.nonDerivativeTable | object | no | Form 4 Table I (cash-equity) sub-tree: `{transactions: [], holdings: []}`. Always present even when empty. |
| data.nonDerivativeTable.transactions | array | no | Cash-equity transactions on the filing — open-market buys/sells, grants, gifts. Each entry has nested `securityTitle`, `transactionDate`, `transactionCoding`, `transactionAmounts`, `postTransactionAmounts` (sec-api.io shape). |
| data.nonDerivativeTable.holdings | array | no | Cash-equity holdings on the filing (positions held but not transacted). Used by Form 3 starter filings and supplementary holdings disclosures. |
| data.derivativeTable | object | no | Form 4 Table II (derivative — option / RSU / warrant) sub-tree. |
| data.derivativeTable.transactions | array | no | Derivative transactions — option exercises, RSU vests, warrant grants. Each entry has the cash-equity transaction shape PLUS derivative-specific fields: `conversionOrExercisePrice`, `exerciseDate`, `expirationDate`, `underlyingSecurity`. |
| data.derivativeTable.holdings | array | no | Derivative holdings — outstanding option / RSU / warrant positions. |
| data.footnotes | array | no | Filing footnotes — array of `{id, text}` objects. Footnotes carry crucial qualifying context: 10b5-1 plan adoption dates, gift-recipient identities, transfer-on-death assignments, vesting schedules. Use the `id` to cross-reference `footnoteIds` arrays in transaction objects. |
| data.remarks | string | yes | Free-text remarks from the filing's 'Remarks' section. Often contains 10b5-1 plan adoption-date references that supplement the footnote graph. |
| data.ownerSignatureName | string | yes | Name of the person signing the filing (Form 4 Item 6). Often a power-of-attorney signer rather than the insider themselves. |
| data.ownerSignatureDate | string | yes | ISO `YYYY-MM-DD` date of the filing signature. Distinct from `filedAt` — signature is typically the same calendar day or 1 day before. |
| data.processingMetadata | object | no | FinRadar processing metadata: `{createdAt, updatedAt, processingState}`. Distinct from SEC-side timestamps (`filedAt`, `acceptedAt`) — these are for FinRadar pipeline observability. |
| data.processingMetadata.createdAt | string | yes | ISO-8601 UTC when FinRadar first ingested this filing. |
| data.processingMetadata.updatedAt | string | yes | ISO-8601 UTC of the most-recent FinRadar-side update (parser re-run, ticker remap). |
| data.processingMetadata.processingState | string | no | FinRadar processing state — `'COMPLETED'` (normal), `'PROCESSING'` (in-flight), `'FAILED'` (parse error). Defaults to `'COMPLETED'`. |
| request_id | string | yes | Per-request UUID for log correlation. |
| timestamp | string | no | ISO-8601 UTC response timestamp. |
Sample response
- "status": "success"
- "data":
- "id": "0a1b2c3d-4e5f-6a7b-8c9d-0e1f2a3b4c5d"
- "accessionNo": "0001127602-26-001234"
- "documentType": "4"
- "filedAt": "2026-04-15T20:14:32+00:00"
- "acceptedAt": "2026-04-15T20:14:35+00:00"
- "periodOfReport": "2026-04-15"
- "dateOfOriginalSubmission": null
- "schemaVersion": "X0306"
- "notSubjectToSection16": false
- "noSecuritiesOwned": false
- "isAmendment": false
- "amendmentType": null
- "originalAccessionNo": null
- "supersededByAccessionNo": null
- "isSuperseded": false
- "isLate": false
- "businessDaysToFile": 0
- "indexUrl": "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0000320193&type=4"
- "xmlUrl": "https://www.sec.gov/Archives/edgar/data/320193/000112760226001234/wf-form4_178834567890.xml"
- "issuer":
- "reportingOwners":
- "nonDerivativeTable":
- "derivativeTable":
- "footnotes":
- "remarks": null
- "ownerSignatureName": "Sam Whittington"
- "ownerSignatureDate": "2026-04-15"
- "processingMetadata":
- "request_id": "f5e8a3b1-9c4d-4f7e-8a5b-c1d2e3f4a5b6"
- "timestamp": "2026-05-02T15:54:18.094Z"
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/insider-module/api/insiders/filings/{accession_number}?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).