Skip to content
/api/v1/sec/forms

List all supported form types with descriptions.

List all supported form types with descriptions. Each entry includes form_type, root_form_type, a human-readable description (covers all 352 root types), filing_count, first_filed, and last_filed. Amendment variants (/A) auto-append '(Amendment)' to the root type's description.

1 tokensSince v1.0.0

Why use this

Cheap (1 token) form-type catalog endpoint — returns every distinct form type observed in the local filings index alongside human-readable descriptions, filing counts, and the first/last dates each form type appears in the index. The single source of truth for: form-type dropdown menus in search UIs, tooltips that explain `13F-NT` vs `13F-HR`, autocomplete chips showing "how many of these have we seen" counts. Descriptions cover all 352 SEC root form types ([catalog](https://www.sec.gov/forms)) — amendment variants (`/A` suffix) auto-append "(Amendment)" to the description (e.g. `13D/A` description = "Statement of Beneficial Ownership (Amendment)"). Sorted by `filing_count DESC` so the most common forms (4, 13F-HR, 8-K, 10-K, 10-Q, S-1) surface first.

Common use case

Populating a dropdown menu or table for 'Form Type' selection in a search UI, with descriptions so users understand each form type without looking it up.

Cheap (1 token) catalog endpoint — every distinct form type in the local filings index with human-readable descriptions, filing counts, and date-range bookends. Use to populate form-type dropdowns and tooltips in search UIs without hardcoding the full SEC form catalog (352 root types per SEC). Sorted by filing_count DESC so the most-filed forms (4, 13F-HR, 8-K, 10-K, 10-Q, S-1, 144, 13D, 13G, DEF 14A, 20-F) surface first. Amendment variants (/A suffix) auto-append "(Amendment)" to the description. For drill-into-a-specific-form-type, use GET /api/v1/sec/forms/{form_type} which returns the same fields but for one form. To filter the filings index by form type, use GET /api/v1/sec/filings?form_type=....

Parameters

NameInRequiredDefaultAllowedDescriptionExample
qqueryoptionalSearch form types by name — case-insensitive substring match against `form_type`. E.g. `q=13F` returns `13F-HR`, `13F-NT`, `13F-HR/A`. Use to narrow large lists; omit for full catalog.13F
limitqueryoptional500Max results — clamped server-side to range `[1, 1000]`. Use 500 (default) for full catalog dropdowns; lower (10-20) for autocomplete-style hints.20

Response schema

FieldTypeNullableDescription
statusstringnoAlways `"success"` on 2xx. ApiResponse envelope marker — wraps via `ApiResponse.success()`.
request_idstringyesPer-request UUID generated server-side.
timestampstringnoISO-8601 UTC timestamp the response was generated server-side.
dataarraynoArray of form-type entries sorted by `filing_count DESC` (most-common forms first). Up to `limit` entries (default 500). One entry per distinct `form_type` — see `data[].*` for shape.
data[].form_typestringnoCanonical SEC form type as it appears in filings (e.g. `4`, `13F-HR`, `8-K`, `10-K`, `10-Q`, `13D`, `13G`, `S-1`, `20-F`, `144`, `DEF 14A`, `13F-HR/A`). Amendment variants append `/A`. NT-prefixed forms (`NT 10-K`, `13F-NT`) appear verbatim.
data[].root_form_typestringnoForm type with the `/A` amendment suffix stripped (e.g. `13D/A` → `13D`, `10-K/A` → `10-K`). Useful for grouping amendments alongside their original-filing siblings (`SELECT * FROM forms WHERE root_form_type = '13D'`). For non-amendment forms, this equals `form_type`.
data[].descriptionstringnoHuman-readable description of the form's purpose (e.g. for `4` = "Statement of Changes in Beneficial Ownership", for `13F-HR` = "Information Required of Institutional Investment Managers Form 13F", for `S-1` = "Registration Statement under the Securities Act of 1933"). Covers all 352 SEC root form types. For amendments, the suffix " (Amendment)" is auto-appended.
data[].filing_countintegernoCount of filings of this exact `form_type` in the local index. Reflects ingest coverage, not SEC's universe — recently-onboarded form types may show low counts here even though they're widely filed.
data[].first_filedstringyesISO date `YYYY-MM-DD` of the EARLIEST filing of this type in the local index. Null when no filings have a `filed_date` (rare). Useful for spotting newly-introduced form types (e.g. `2026-` indicates a form added recently).
data[].last_filedstringyesISO date `YYYY-MM-DD` of the MOST RECENT filing of this type in the local index. Null when no filings have a `filed_date`. Forms that haven't been filed in years (e.g. `last_filed: '2018-...'`) suggest deprecated form types — useful for hiding legacy types from active dropdowns.

Sample response

·
  • "status": "success"
  • "request_id": "0f14ed05-3a2e-4b76-9c11-1a7c8b3f6de2"
  • "timestamp": "2026-05-02T16:30:14.122Z"
  • "data":
    ]
}

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/sec/forms?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).