Data API methodology
This page describes how the Arklēon Data API answers a query. It covers what the as_of date means, how filings and amendments are handled, how concept aliases resolve to as-filed tags, what the corpus contains, what the revisions endpoint covers, the known limits of the service, and what Arklēon does not claim. The API serves numeric facts and filing metadata from the SEC Financial Statement Data Sets, constrained to what was filed on or before a stated date.
This page covers the Arklēon Data API. The methodology for the sector intelligence scores is at /methodology.
What as_of means
as_of is a calendar date. A /v1/facts response contains only facts whose filing was filed on or before that date. A fact from a filing submitted the day after as_of is excluded, whatever reporting period the fact describes.
as_of is required on /v1/facts and has no default. A request that omits it is rejected as an invalid request; the service does not substitute the current date.
The check runs before any query. A missing as_of, or one that is not a real calendar date in YYYY-MM-DD form, is rejected.
as_of filters on the filing date only. It never filters on the period a fact describes; period_start and period_end are separate filters that set inclusive bounds on the fact's period end date.
For a company-scoped query, the company's filings with a filing date on or before as_of are resolved first, and facts are then fetched by accession from that set only.
For a corpus-wide query, facts are scanned in key order and each fact's filing is resolved by accession. A fact whose filing postdates as_of, or whose accession has no filing record, is dropped.
/v1/facts returns every matching fact from every eligible filing. It does not select one value per concept and period; when more than one eligible filing reports the same concept for the same period, each fact is returned as its own row with its own accession and filing date.
Pagination is as_of-stable. Every page of a result set is evaluated at the as_of given on the first request, the same as_of must accompany every cursor request, and a mismatch is rejected as an invalid request.
as_of is optional on /v1/filings and carries the same filing-date meaning there. It is optional because a filings query is a query about filing dates, and omitting it returns the full filing history.
as_of is optional on /v1/revisions with the same filing-date meaning: only events from filings filed on or before as_of appear. There is no default, and omitting it returns the full timeline.
as_of is optional on /v1/companies and does not currently change the served CIK and name resolution.
Attested responses
In attested mode, available on GET /v1/facts and GET /v1/revisions, the response carries a signed statement that binds together the scheme, HTTP method, service authority, endpoint, canonical query, supplied and normalized cutoff, predicate identifier, response status, response body hash, corpus version and serving time. The kind of as_of value selects the predicate. A calendar date applies filed-lte-date-v1, under which a row is eligible when its filed date is present, valid, and at or before the supplied date. A datetime with an explicit UTC offset applies accepted-lte-and-filed-lte-utc-date-v1, under which a row is eligible only when its acceptance timestamp is present and at or before the normalized UTC instant and its filed date is present and at or before the UTC calendar date of that instant.
A valid signature authenticates an assertion made by the server and binds that assertion to the exact response bytes. It does not establish that the result is complete, that the underlying SEC records are true, that ingestion was correct, or that the serving time was independently timestamped. The served_at value is the server's own UTC clock assertion, and the signature can be verified offline against the public key published at /.well-known/arkleon-attestation.json without contacting the service.
Filings and amendments
Every fact carries the accession of the filing it came from. Form type, filing date, and company identity are not stored on the fact; they live on the submissions record and are resolved by join on the accession.
Each fact in a response is returned with its resolved lineage block: accession_id, form, filed, cik, and source_url.
source_url is computed from the accession and the CIK by the documented EDGAR archive URL construction. It is never stored.
The reproducibility guarantee is a contract term: an identical query with an identical as_of returns identical data, permanently, subject only to the disclosed-errata carve-out below.
Corrections and restatements enter the corpus as new filings with later filing dates, never as changes to existing rows. A restatement changes what a later as_of returns and does not change what an earlier as_of returns.
An amendment is therefore an ordinary filing in the corpus, with its own accession, form type, and filing date. The facts of the filing it amends remain in place and remain eligible on their own dates.
The form filter selects on the form type as filed, resolved from the submissions record, so amended forms can be selected or excluded by form.
Ingest defects are the sole exception to the guarantee and are handled as disclosed amendments. If Arklēon determines that data served under the guarantee was wrong, the correction is published with its date, scope, and the affected query and as_of space in a public errata record. A silent fix is a breach of the guarantee, not a repair of it.
/v1/revisions exposes the lineage between filings. Each revision event carries the value as recorded by the filing that produced it, that filing's date, accession, and form type, an event type, and the accessions that filing superseded or was superseded by.
The event type is one of AMENDMENT or RESTATED_COMPARATIVE. These are event-type identifiers on the corpus row, not characterizations of the underlying filing.
supersedes_accn is read from the stored event. superseded_by_accn is derived at request time as the accession of the next event in the same series among the events fetched for that request.
The same CIK, concept, and as_of return the same revision timeline permanently, under the same reproducibility guarantee as the other endpoints.
Concept aliases
concept_alias names a plain-language concept, such as revenue or net income, that resolves through a fixed server-side map to an ordered set of as-filed us-gaap and dei tags.
It is optional and mutually exclusive with tag. A request that supplies both, or that names a concept the map does not contain, is rejected as an invalid request.
Matching is by bare element name. The namespace prefix of each mapped tag is stripped, and the fact's tag column is matched against the resulting set.
A fact with the same bare element name under a different namespace, such as a company extension, can therefore match.
Every returned row carries matched_tag, the as-filed qualified name reconstructed from that row's own taxonomy and tag, so the caller can see which raw tag matched and filter further when namespace precision matters.
The response also carries a top-level concept object with the alias as supplied, a provisional flag, the ordered tag set, and a note.
A provisional alias is still served. Its note states that the tag mapping has not been fully grounded against the corpus and may change.
Alias resolution applies to /v1/facts only. /v1/revisions takes a concept parameter that is matched directly against the stored tag, with no alias mapping.
The corpus
The corpus is built from the SEC's quarterly Financial Statement Data Set archives.
/v1/facts serves numeric facts drawn from that corpus, constrained to what was knowable on a stated date.
A fact is identified by accession, tag, taxonomy, period end, duration in quarters, unit, segments, and co-registrant. The same tag for the same period reported in more than one unit is more than one fact, not a duplicate.
The corpus holds 426,003 filings, 181,350,662 facts, and 16,811 distinct companies by CIK. Each is an exact count from a dated verification run.
The company figure counts distinct CIKs on the submissions record. It is not derivable from the facts table, which carries no CIK column.
The corpus spans 69 quarters, 2009q1 to 2026q1, of which 68 are populated.
The archive for 2009q1 exists but yields no submissions. It is the only empty quarter in the span.
The facts figure includes a small set of facts whose accessions are absent from the SEC's own quarterly submissions file. They are retained because the corpus preserves the SEC's published record, defects included.
Join integrity between facts and submissions is verified exhaustively over every fact row, not by sample. Certification passes only when the observed exception set matches the pinned list exactly.
Revision events live in a separate store of consecutive-pair revision events. It is a different store and a different counting unit from the corpus figures above.
Across the full revision-event store behind /v1/revisions there are 2,738,041 consecutive-pair revision events. The unit is events, not facts and not series.
Of those 2,738,041 consecutive-pair revision events in the full revision-event store, 294,819 are AMENDMENT events and 2,443,222 are RESTATED_COMPARATIVE events, counted per event and not per fact or per series.
Across all 2,738,041 consecutive-pair revision events in the full revision-event store, the revising filings that produced them were filed 2009-08-04 to 2026-06-30.
Revisions coverage
/v1/revisions serves the revision timeline of any company that has revision events in the revision-event store. Companies are addressed by CIK.
The handler filters the revision-event store by the requested CIK, by the optional concept, and by the optional as_of, and by nothing else.
The separate nightly ticker ingest writes to a different table and does not define which companies this endpoint serves.
A request must name exactly one CIK. There is no corpus-wide revision scan on this endpoint, and a request without a CIK is rejected as an invalid request.
The optional concept parameter restricts the timeline to one XBRL element name. Omitted, the timeline spans every concept reported for the CIK.
A CIK with no revision events in the store, or none on or before the given as_of, receives an empty timeline. An empty timeline is a valid answer, not an error.
Arklēon does not publish the number of companies with revision events. That count is excluded from the claimable figures until it is certified, and coverage is stated in words until then.
The distinct-companies figure above counts CIKs on the submissions record. It is not a count of companies with revision events and does not describe this endpoint's coverage.
A read-only census script, restricted to revising filings filed on or before the filed-date cutoff 2026-10-03 with null filed dates excluded, counted 2,738,041 consecutive-pair revision events, the total across the full revision-event store behind the revisions endpoint. Across those 2,738,041 consecutive-pair revision events in the full revision-event store behind the revisions endpoint, with revising filings filed on or before the filed-date cutoff 2026-10-03, the revising filings span filed dates 2009-08-04 to 2026-06-30. Both equal the figures already published for the revision layer, which the census therefore reproduced. The count of companies with revision events is not published.
In the 2026-07-24 snapshot of edgar_xbrl_facts, the served store behind the fundamentals endpoint, the census reproduced 70,082 re-reported series (73% of 96,063 distinct series), each reported under at least two distinct filing accessions. In the same 2026-07-24 snapshot of edgar_xbrl_facts, the census reproduced 6,774 value-revised series (7.1% of 96,063 distinct series), each holding a value distinct from the preceding row in the documented order, changes to or from null included. A series is keyed by company CIK, concept and both period endpoints. These series counts and the revision-event counts describe different stores and different units and are never summed or compared.
Trailing-twelve-month values from as-filed quarters
A trailing-twelve-month value on /v1/ttm is built from the four fiscal quarters ending at the requested fiscal_year and fiscal_quarter, using only 10-Q, 10-Q/A, 10-K and 10-K/A filings and discrete duration_quarters=1 facts for reported quarters, never cumulative year-to-date facts, plus a duration_quarters=4 FY source when deriving Q4. The tag, taxonomy, unit, segments and coreg must agree exactly, and for each period and duration the filing with the greatest filed date, acceptance instant and accession is selected. A reported Q4 is preferred; otherwise Q4 is derived as FY minus Q1, Q2 and Q3, with every contributing source listed in the derivation. Adjacent anchored period ends must be 2, 3 or 4 calendar months apart, and the first and last window ends, as well as the Q1 and Q4 ends of any fiscal year used to derive Q4, must be 8, 9 or 10 calendar months apart; any other spacing returns 422 unprocessable.
as_of is required on /v1/ttm and applies to every quarter and every source in the window. A date as_of selects filings with filed on or before that date, while a datetime as_of with an explicit offset selects filings accepted on or before that instant and is normalized to UTC milliseconds as on /v1/facts. When as_of is a datetime, each source also reports accepted_at. Identical inputs and source data produce byte-identical successful JSON, and scans exceeding 5000 eligible filings or 50000 matching facts return 422 unprocessable rather than a partial value.
Known limits
The corpus is refreshed quarterly from the SEC's archives. The newest quarter is usually unpublished until several weeks after quarter end, so a recently submitted filing is not queryable until the quarter containing it is published and ingested.
A separate nightly ingest covers a small fixed set of tickers and writes to a different table from the corpus behind /v1. The two are not interchangeable, and their freshness properties differ.
XBRL reporting was phased in by filer size, so the earliest years of the corpus are sparse. This is a property of the SEC's rollout, not of the ingest.
A query with as_of in those early years is evaluated against a small, size-biased subset of public companies. That is what was knowable then, and results from that window should be read accordingly.
A query with as_of earlier than the earliest filing date in the corpus returns an empty result set. That empty result is the correct answer.
/v1 serves numeric XBRL facts and filing metadata only. It does not serve market prices or volumes, analyst estimates or forward-looking figures, narrative disclosure, or derived analytics, ratios, or scores.
A small set of facts belongs to accessions that the SEC's own quarterly submissions file omits. Those facts have no filing date, cannot satisfy any as_of bound, and are unreachable through /v1. This is a corpus-completeness disclosure, not a serving caveat.
Ticker resolution is not served. Callers address companies by CIK, and an otherwise valid request carrying ticker receives a not-implemented response on every endpoint.
On /v1/facts, limit is a maximum, not a guarantee. A corpus-wide scan carries a per-request budget, and when that budget is spent before the page fills, the response carries the rows found so far and a non-null next_cursor.
On /v1/revisions, superseded_by_accn is derived from the events fetched for the request after any as_of filter. A null forward link means no later event within the returned history; it does not establish that no later revision exists in the store.
What Arklēon does not claim
Arklēon does not state a count of companies with revision events. The count is deliberately excluded from the claimable figures because it is not reproducible live through the read path, and it stays unpublished until an operator-run reproduction certifies it.
A companies-with-events count, once certified, will not be a recount of the certified distinct-companies figure. The two count different things over different stores.
The revision-event figures are not comparable to the snapshot on the /revisions page and are not a recomputation of it. The series key and the counting unit differ.
The revision-event figures do not re-measure, re-verify, or amend the corpus figures. Those remain governed by their own dated verification.
Arklēon does not claim that the related ticker table is fresh through yesterday. The nightly ingest covers its own narrower ticker set and writes to its own table. A related table holds a somewhat larger set: the nightly ingest tickers plus a residue of tickers present from earlier backfills that fall outside both the serving universe and the nightly ingest scope. The facts for those residue tickers are frozen and never refreshed, so the related table's ticker set as a whole is not fresh through yesterday, and no claim of that form is made.
/v1 is not a real-time filing feed and is not represented as one. It is a point-in-time research corpus.
The corpus preserves the SEC's published record, defects included. Arklēon does not claim to have corrected the source.
The corpus figures on this page are the only corpus figures the contract permits in documentation, marketing, or any other artifact.