Skip to content
/api/v1/facts

Raw fact search over the LEGACY dev-era XBRL fact index (~55,000 facts, no automated feed).

Raw fact search over the LEGACY dev-era XBRL fact index (~55,000 facts, no automated feed). Returns fact rows filtered by filing, company, concept, period, value, and dimensions — NOT a platform-health endpoint (earlier versions of this page misdescribed it as one).

10 tokensSince v1.0.0

Why use this

Row-level search of the legacy fact index with ~20 optional filters (filing_id, cik, accession_number, form_type, fiscal period, concept namespace/name, numeric-value range, dimension axis/member, and more), returned in the standard paginated envelope. HONEST SCOPE: this index was hand-captured before the As-Filed engine existed (heaviest 2016-2019) and does not grow — most queries about recent periods return an empty page. For ingestion/platform health use [GET /api/v1/stats](/docs/home/quickstart/get-stats) and [GET /api/v1/status](/docs/resources/system-status/get-status); for full-market as-filed facts use [GET /api/v1/xbrl/facts](/docs/company-data/company-financials-xbrl-as-filed/get-xbrl-facts).

Common use case

Backward compatibility for early integrations that indexed against the dev-era fact store. New work should not start here.

Row-level access to the ORIGINAL development-era fact store — the index that predates the As-Filed XBRL engine. It holds ~55,000 facts captured ad hoc (heaviest 2016-2019); no pipeline adds new filings, so an empty page for a recent period is the corpus speaking, not an error. Retained for backward compatibility. The modern equivalents: GET /api/v1/xbrl/facts for every fact of any parsed filing (full market, on-arrival), GET /api/v1/facts/by-concept for concept-shaped queries over this same legacy index, and GET /api/v1/stats for the platform-count numbers this entry once (incorrectly) claimed to serve.

Response schema

FieldTypeNullableDescription
dataarraynoFact rows matching the filter set — each with filing linkage (filing_id, accession), concept identity (namespace, local name, qualified name), the value (numeric or text), unit, context period, and optional dimensions.
metaobjectnoStandard pagination block: `{ total, limit, offset }`. `total` is the full match count for the filter set within the legacy index.

Sample response

·
  • "status": "success"
  • "data":
    ]
  • "meta":
    • "total": 84
    • "limit": 100
    • "offset": 0
    }
}

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