periods | One record per reporting period, newest first. Each record carries the period identity (fiscal_year, fiscal_quarter, fiscal_year_as_reported, fiscal_quarter_as_reported, fiscal_label_source, period_start, period_end, period_days, filing_date, timeframe, period_source, non_reliance_reason) plus the line items for the requested statement type, and on income_statement a “suspect” verdict on its own line items. Amounts are in USD; a missing line item is null. “period_days” is the inclusive length of the period and is published on every record, null when no opening date was reported or the pair does not parse. Check it before comparing periods: in a 53-week fiscal year the fourth quarter runs 98 days against 91 for the others, so a year-over-year comparison that ignores it books roughly 7.7% of growth that is only extra selling days. It also exposes a cumulative year-to-date figure that has leaked in as a quarter, which shows up as a ~273-day “quarter” rather than an exceptional one. “period_source” says how the record was produced: “reported” when a filing carried the period, or “q4_from_annual” for a fiscal fourth quarter. No company files a fourth 10-Q — the 10-K reports the full year — so that quarter is computed as the annual figure minus the three filed quarters. It runs on the two flow statements, income_statement and cash_flow, and never on balance_sheet, whose line items are instants. Derived only when the annual and all three quarters are present and contiguous from the start of the fiscal year. Each line item derives independently: one absent from the annual or from any quarter is null on the derived period, and the period still ships as long as one item derived. A fiscal year whose fourth quarter IS reported is never derived over. It carries the 10-K’s filing_date, because that is when the figure became knowable. Two consequences worth pricing in: a restatement of an earlier quarter inside the annual report is inherited silently by the subtraction, and share counts and per-share figures (“shares_outstanding”, “shares_outstanding_diluted”, “earnings_per_share”, “earnings_per_share_diluted”) are null on a derived period rather than subtracted, because a period-average share count and a ratio over it are not additive across periods. A derived period takes “fiscal_year” from the annual and “fiscal_quarter” 4, unless a reported period already holds that pair, in which case it reports “fiscal_quarter” as null rather than duplicate the key. Filter on “period_source” to find derived periods reliably. Requesting an explicit “fiscal_quarter” of 4 returns only what was reported and never derives. A derived fourth quarter also absorbs every full-year charge the first three quarters did not carry — a discrete inventory write-down taken on exiting a product line, say — so a margin that collapses there is more often a real fourth-quarter event than a fault in the subtraction. The annual report is what settles it. “fiscal_year” and “fiscal_quarter” are ALIGNED to the filing company’s own fiscal calendar wherever its annual period can place them, and “fiscal_label_source” says which labelling a record carries. Unlike the fourth-quarter derivation, alignment runs on every quarterly request, balance_sheet included, so the three statements can be joined on the labels. Alignment matters for 52/53-week filers, mostly retailers, whose quarters are labelled a year out at source: a period ending 2026-04-04 that the company calls Q1 2026 arrives labelled FY2027 Q1, and the first quarter of a fiscal year arrives labelled Q4 of that same year. A year-over-year lookup on such a label lands silently on the wrong quarter. The correction is derived, never invented: an annual period carries both the exact fiscal-year window and the correct fiscal-year number, so a quarter inside that window takes its ordinal from its position in the run of quarters that tiles the window from its first day. “fiscal_label_source” reads “aligned_to_annual” for those; “aligned_to_projected_year” for quarters of the year in progress, which has no annual report yet and whose quarters are numbered forward from the day after the last fiscal year closed; and “reported” where no annual window could place the record, in which case the source labels stand unchanged. A window whose quarters do not tile it is left alone rather than numbered by position. “fiscal_year_as_reported” and “fiscal_quarter_as_reported” carry the source labels on EVERY record, aligned or not, so the correction is auditable; where “fiscal_label_source” is “reported” the two pairs are equal. The “fiscal_year” and “fiscal_quarter” request filters select on the aligned labels, so every record returned satisfies the filter under the labels the response publishes. Calendar-year filers are unaffected: their aligned labels reproduce their reported ones. Key a period on “period_end” for the strongest identity — it is the date the period closed and is independent of every fiscal label. On “cash_flow”, four line items are structurally empty rather than occasionally missing: “depreciation_amortization”, “stock_based_compensation”, and “capital_expenditures” are not carried upstream at all, and “free_cash_flow” is computed from capital expenditures so it is empty downstream of them. EBITDA is therefore not computable from this statement. On a derived cash-flow period “free_cash_flow” is RECOMPUTED from the derived operating cash and capital expenditures rather than subtracted, because it is a computed figure and subtracting it would not equal the same formula over the derived members. “change_in_working_capital” is likewise always null: no upstream key carries a working-capital change, and the field reports that absence rather than restating operating cash flow. The populated cash-flow fields are the activity aggregates and the financing and investing detail. “non_reliance_reason” says why the period is disclaimed, and is null on a period no filed non-reliance event covers. “superseded_by_amendment” means the company has filed a 10-K/A or 10-Q/A restating this period AND this record predates that amendment, so the figures here are the ones the company has told investors not to rely on. The record is still served, because a point-in-time consumer legitimately wants the figures that were public at the time; the flag is what stops it being served silently. An amendment counts only when the company filed an Item 4.02 8-K after the original filing being amended and at or before the amendment itself: a 10-K/A is also the ordinary way to add Part III information when the proxy misses its window, re-file an exhibit or correct a consent, and none of those disclaims anything, so the form type alone never marks a record. Given a qualifying amendment, a 10-Q/A covers the period whose period_end equals the period it reports on; a 10-K/A covers that annual period and every quarter inside the same fiscal year, because the year’s quarterly figures come from the same restated books. “check_unavailable” means the SEC filing index could not be read for this request, so the period’s status is undetermined rather than clean — see “non_reliance”. Read this field together with “period_source”: a derived fourth quarter inherits the annual report it was subtracted from, so an amendment covering the year covers it too. On “income_statement”, “total_revenue”, “cost_of_revenue” and “gross_profit” are passed through exactly as reported for the period. Nothing upstream guarantees that gross_profit equals total_revenue minus cost_of_revenue across the three, and on some filers it does not: the break reaches 8.5% of revenue on reported quarters and over 50% on some older annual periods, while adjacent periods of the same company reconcile exactly. “suspect” reports that: “identity_mismatch” when all three are present and the gap exceeds 1% of revenue, null otherwise, including whenever any of the three is missing. None of the three values is ever rewritten to close the gap — with all three reported and disagreeing, nothing says which one is wrong, so recomputing one would be a guess presented as a derivation. A derived fourth quarter can inherit the break from the quarters it subtracts and is flagged on the same test. Treat a flagged period as a reason to read the filing rather than as a broken record: any one of the three may still be the number you want. The SEC XBRL statements projection is the lane that DOES enforce the identity — it selects concepts by it and rejects a combination that misses the band — so a period flagged here is worth re-reading there. |
non_reliance | The filing company’s own non-reliance position as of the requested date, read from SEC EDGAR. Null when the company has filed no such event at or before that date, which is the ordinary case. Point-in-time throughout: only events filed at or before the as-of date are considered, so a request dated before a restatement sees what an investor saw then. An Item 4.02 8-K — the form on which a company states that previously issued financial statements should no longer be relied upon — is what establishes that anything has been disclaimed, and an amendment is what says which periods; a company that has filed no such notice returns null here however many 10-K/A or 10-Q/A filings it has made. “status” is “superseded” when an amendment that a notice qualifies names the periods it restates; “notice_unresolved” when the company has filed a notice but no amendment that resolves it, in which case some periods returned may be disclaimed and no record can be marked; and “check_unavailable” when the filing index could not be read, which is NOT a finding that the company is clean, and under which every record’s “non_reliance_reason” reads “check_unavailable”. A failed check never fails the request: the statements are served either way. “events” lists what was filed, oldest first: every Item 4.02 notice, and only the amendments a notice qualifies, so a 10-K/A listed here is a restatement rather than a routine re-filing. Both event kinds carry the same keys: “item” is “4.02” on a notice and null on an amendment, “period_end” is the period an amendment restates and null on a notice, and “form” and “accession_number” identify the filing on EDGAR so it can be read directly. |
miss_reason | Why “periods” is empty, so an empty result is never ambiguous; null whenever periods were returned. An empty result is a stated gap, not an error: the request succeeded. One of “ticker_not_covered” (coverage is domestic XBRL filers, 10-K/10-Q, so companies filing on other forms report no statements here even with a long reporting history), “classification_unavailable” (no statement matched, but the supporting checks needed to classify the gap were unavailable), “no_filing_before_as_of” (covered, but nothing filed at or before the as-of date), “no_filing_matching_filters” (covered, but no filing matches the requested timeframe or fiscal period), or “unfiled_records_only” (candidate periods existed but none carried a filing date, so none could be shown to have been public by the as-of date). |