Skip to content
/api/v1/xbrl/coverage

Check whether a ticker's as-filed XBRL is parsed yet, or list the covered universe.

Check whether a ticker's as-filed XBRL is parsed yet, or list the covered universe.

Why use this

Cheap gate (1 token) — with `?ticker=` returns that ticker's coverage + indexed-filing span; with no param returns the paginated covered universe. Never 404s (covered:false is a normal 200).

Common use case

Branching client logic before calling a statements/facts endpoint (avoid a 404 NOT_COVERED + wasted token); listing which tickers the engine has parsed and their strata.

The cheap (1-token) coverage gate for the XBRL as-filed surface. Coverage is wide — every US filer is parsed on arrival — but historical depth is loading incrementally, so this is the source of truth for exactly which filings are in the engine right now. Call it with ?ticker= before hitting GET /api/v1/xbrl/filing/{accession}/statements or GET /api/v1/xbrl/facts to avoid a 404 NOT_COVERED (which still charges its token). covered:false is a normal HTTP 200 answer (this discovery route never 404s). With no param it returns the paginated covered universe with per-company parsed/total filing counts and strata. Mirrors, for the as-filed surface, the coverage-gate role the standardized surface has.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
tickerqueryoptionalOptional. With a ticker (folded case-insensitively; `BRK.A`/`BRK/A`/`BRK-A` all match): returns `{ticker, covered, phase, cik, stratum, filings_indexed, filings_total, first_period, last_period}` when covered, or `{ticker, covered:false, phase, coverage_endpoint, fallback_endpoint}` (still HTTP 200) when not. Without it: the paginated covered universe (`limit` <= 500, `offset`).MSFT

Response schema

FieldTypeNullableDescription
data.coveredbooleanno`true` when the issuer's filings have been parsed by the XBRL engine. Serving is wide — every US filer is covered presence-based — while historical depth is still loading incrementally, so `covered:false` here means this issuer has no filing parsed into the engine yet (poll again as the corpus fills). When `false` the response is still HTTP 200 (this discovery route never returns NOT_COVERED) and carries `coverage_endpoint` + `fallback_endpoint` pointers — the statements/facts endpoints are what return 404 NOT_COVERED for a not-yet-parsed filing.
data.phasestringnoCoverage phase. Serving is `wide` — every US filer is served presence-based (go-wide is active); historical depth is still loading incrementally, which `filings_indexed`/`first_period` report per company.
data.stratumstringyesThe stratification bucket the ticker belongs to, in kebab-case as served (e.g. `mega-cap-tech`, `reit`, `bank`, `biotech`, `ifrs`). Present only when covered.
data.filings_indexednumbernoCount of the issuer's filings PARSED into the engine (`filings_total` is the count discovered). Both 0 / absent when not covered.
data.first_periodstringyes`YYYY-MM-DD` fiscal-period-end of the earliest indexed filing (~2009 for early-XBRL large-caps); `last_period` the most recent. No-ticker calls instead return a paginated array of `{cik, ticker, stratum, filings_indexed, filings_total, first_period, last_period}` with `meta.phase = wide`.

Sample response

·
  • "status": "success"
  • "data":
    • "ticker": "MSFT"
    • "covered": true
    • "phase": "wide"
    • "cik": "0000789019"
    • "stratum": "mega-cap-tech"
    • "filings_indexed": 47
    • "filings_total": 48
    • "first_period": "2009-06-30"
    • "last_period": "2025-06-30"
    }
}

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/xbrl/coverage?api_Token=YOUR_API_KEY&ticker=MSFT" \
  -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).