Skip to content
/api/v1/facts

Get system-wide facts.

Get system-wide facts.

10 tokensSince v1.0.0

Why use this

A lightweight platform health probe that returns the cumulative SEC filing count, the most-recent acceptance timestamp, the live parsing-queue depth, and a per-form-type breakdown of the last 90 days. Operations teams and external status-board integrations use this as a 60-second-cached canonical reference for 'is FinRadar ingesting?' — pair it with `GET /api/v1/status` to also cover service-level health. The 90-day form-type histogram is the cheapest way to confirm Form 4 / 13F-HR / 8-K / 10-K throughput is at expected magnitudes before kicking off heavier per-filing queries.

Common use case

Dashboard widgets showing total filings processed.

Returns a snapshot of platform-wide ingestion metrics: total filings, last-acceptance timestamp, queue depth, and per-form-type counts. Customers use this as a public health probe alongside GET /api/v1/status. The response is cached for 60 seconds at the gateway, so polling more aggressively than once per minute returns stale-but-cheap data. For a per-concept XBRL fact lookup, use GET /api/v1/facts/by-concept instead — this endpoint returns aggregate counts only.

Response schema

FieldTypeNullableDescription
total_filingsintegernoCumulative count of SEC filings successfully accepted and persisted to the `filings` table since 2000 — covers Forms 3/4/5, 13F-HR/NT, 13D/G, 8-K, 10-K/Q, S-1, 20-F, and ~340 other root form types. Increments roughly +5K/day off-season and +50K/day during 13F deadline windows.
last_filing_atstringnoISO-8601 UTC timestamp of the most recent successful filing acceptance (the moment the filing landed in our DB, NOT the filed_at on EDGAR which is timezone-loose). Lag should be < 60s during ET market hours; values older than ~10 minutes outside the SEC's overnight quiet-window (10pm-6am ET) are an ingestion-pipeline alert.
queue_depthintegernoLive count of accepted-but-not-yet-parsed filings in the Celery `sec_13f` + `sec_filings` queues. Steady-state < 50; values 100-500 indicate filing-season pressure (normal at 10-Q peak); values > 1,000 indicate worker backlog and merit a sec_watchdog inspection.
by_form_typeobjectnoMap of form_type → count for the last 90 days (e.g. `{"4": 28432, "13F-HR": 9617}`). Only forms with non-zero activity in the window appear. Use this to confirm expected magnitudes per form type before kicking off heavy historical queries; sudden zeros on a form type usually indicate a parser regression rather than an SEC issuance pause.
as_ofstringnoISO-8601 UTC timestamp the snapshot was generated server-side (cached up to 60 seconds). Treat any consumer-side `now() - as_of > 90s` as stale-cache contention rather than a stale source — re-poll once before alerting.

Sample response

·
  • "total_filings": 2845129
  • "last_filing_at": "2026-05-01T20:54:12.000Z"
  • "queue_depth": 14
  • "by_form_type":
    • "4": 28432
    • "13F-HR": 9617
    • "8-K": 16244
    • "10-K": 4112
    • "10-Q": 12055
    • "13D": 412
    • "13G": 1208
    }
  • "as_of": "2026-05-01T20:55:00.000Z"
}

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

Try it

Related endpoints