> ## Documentation Index
> Fetch the complete documentation index at: https://doc.astreus.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Financial statements

> Standardized statements, the statements as printed, and the fact behind every cell.

Three endpoints cover a company's statements. `/financials` is the **standardized** view —
one template for every company, so revenue is `std:revenue` at NVIDIA and at Almarai.
`/financials/as-filed` is the company's **own** statement, every caption it ever printed.
`/fact-source` turns any cell of either into a citation.

## Standardized statements

```
GET /api/v1/companies/{id}/financials
```

| Parameter         | Values                                | Default               | Notes                                                                                                                                                                                                                                     |
| ----------------- | ------------------------------------- | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `period_type`     | `annual` · `semiannual` · `quarterly` | `annual`              | Anything else is a 400. Half-years are the statutory interim for Japanese and Transparency-Directive filers: H1 is the filer's own six-month figure, H2 is derived as FY − H1.                                                            |
| `reporting_basis` | `individual` · `as_reported`          | `individual`          | Quarterly and semiannual only. `individual` = the discrete three-month value; `as_reported` = the cumulative year-to-date column exactly as the 10-Q prints it. Annual ignores it. This is a **period basis, not a vintage** — see below. |
| `basis`           | an accounting-basis code              | the company's primary | For companies that publish under more than one rulebook (TSMC: `ifrs-tw` beside its 20-F). An unknown code returns 400 with the company's `accounting_bases`.                                                                             |
| `limit`           | 1–200                                 | 200                   | Number of filings to serve, newest first. The default is the whole history.                                                                                                                                                               |

The response is one object per company, with every statement inside it:

```json theme={null}
{
  "company_id": "NVDA",
  "period_type": "quarterly",
  "reporting_basis": "individual",
  "total_periods": 52,
  "financials": {
    "income_statement":   { "data": { "std:revenue": { "label": "Total Revenue", "values": { "Q3 2026": 57006000000, "Q4 2026": 68127000000 }, "is_total": true, "depth": 1 }, "us-gaap:Revenues": { "parent_key": "std:revenue", "...": "..." } } },
    "balance_sheet":      { "data": { "...": "..." } },
    "cash_flow_statement": { "data": { "...": "..." } },
    "income_statement_reported":    { "data": { "...": "the filer's own XBRL presentation tree, keyed by tag" } },
    "balance_sheet_reported":       { "data": { "...": "..." } },
    "cash_flow_statement_reported": { "data": { "...": "..." } },
    "segments_kpis": { "data": { "seg::SEGMENT::OPERATING_INCOME::nvda:ComputeAndNetworkingSegmentMember": { "...": "..." } } },
    "ratios":        { "data": { "Gross Margin %": { "...": "..." } } },
    "period_meta":   { "Q4 2026": { "end_date": "2026-01-25", "fiscal_year": 2026, "fiscal_quarter": 4 } },
    "reporting_currency": "USD",
    "accounting_basis": "us-gaap",
    "interim_cadence": "quarterly",
    "ttm_cadence": "quarterly",
    "ttm_period_end": "2026-04-26"
  }
}
```

How to read it:

* **Statements are maps of line key → row.** Standardized rows are keyed `std:<key>`
  (`std:revenue`, `std:cost_of_revenue`, `std:gross_profit`, `std:rnd`, `std:sga`, `std:cfo`,
  …). The filer's own XBRL lines sit beneath them, keyed by tag (`us-gaap:Revenues`) with
  `parent_key` pointing at the standardized row they roll into. Each row carries `label`,
  `values`, `depth`, `is_header`, `is_total`, `computed` (a derived line such as a margin),
  `negated`, `no_scale`, `percent` and `value_format`.
* **Columns are period labels**, the same in every statement: `"2024"` for annual,
  `"Q3 2024"` for quarterly, `"H1 2024"` / `"H2 2024"` for semiannual, plus `"TTM"` on the
  annual income statement. `period_meta` gives each column its `end_date`, `fiscal_year`,
  `fiscal_quarter` (and `fiscal_half`, `derivation`, `months` where relevant). Use `end_date`
  when you call `fact-source`.
* **Currency.** Values are in `reporting_currency`. For non-USD reporters `fx_usd_rates`
  gives the units-per-USD rate for every column, so you can convert without a second source.
  `accounting_basis`, `accounting_basis_label` and `accounting_bases` say which rulebook the
  numbers follow.
* **Cadence.** `interim_cadence` is `quarterly`, `semiannual` or `annual_only`;
  `ttm_cadence` and `ttm_period_end` describe the trailing-twelve-month column.
* **`segments_kpis`** is the segment and KPI statement — see [Segments & KPIs](/segments-and-kpis).
* **`ratios`** is a categorised block (Valuation, Profitability, …) of derived metrics,
  keyed by label.
* **`cell_notes`** (quarterly only) carries per-cell footnotes where the platform had to say
  something about a value — for example how a cash-flow quarter was derived.

### Which filing a value comes from

The standardized view serves the **latest restated** figure for each period: if a later
filing restates a prior quarter in its comparative column, that later value is what you get.
`fact-source` always names the filing the value was read from, which is why NVIDIA's Q3
FY2025 revenue cites a 10-Q filed a year later:

```bash theme={null}
curl "…/companies/NVDA/fact-source?statement=income_statement&key=std:revenue&end_date=2024-10-27&period_type=quarterly" -H "X-API-KEY: $KEY"
```

```json theme={null}
{
  "provenance": "filed",
  "std_value": 35082000000,
  "source_tags": ["us-gaap:Revenues"],
  "filing": { "accession_number": "0001045810-25-000230", "filing_type": "10-Q", "filing_date": "2025-11-19", "fiscal_year": 2026, "fiscal_quarter": 3, "period_end_date": "2025-10-26" },
  "facts": [{ "tag_name": "us-gaap:Revenues", "context_id": "c-4", "raw_value": 35082000000, "unit": "iso4217:USD", "decimals": -6, "start_date": "2024-07-29", "end_date": "2024-10-27" }]
}
```

If you need what the company **originally** filed for a period, use
`/financials/as-filed` with `vintage=original` (below). `reporting_basis` does not do that.

### Derived fourth quarters

Most US filers file no Q4 10-Q. The fourth quarter is derived — annual total minus Q1–Q3 —
and `fact-source` says so, with the arithmetic:

```json theme={null}
{
  "provenance": "derived_q4",
  "std_value": 39331000000,
  "composition": {
    "kind": "period_arithmetic",
    "inputs": [
      { "label": "Total Revenue — FY2025", "value": 130497000000, "operation": "total" },
      { "label": "Total Revenue — Q1 2025", "value": 26044000000, "operation": "subtract" },
      { "label": "Total Revenue — Q2 2025", "value": 30040000000, "operation": "subtract" },
      { "label": "Total Revenue — Q3 2025", "value": 35082000000, "operation": "subtract" }
    ],
    "foots": true
  }
}
```

A fiscal year only gets a Q4 column when its first three quarters were ingested, and a
filing that failed a gate never anchors a column at all.

## Statements as the company printed them

```
GET /api/v1/companies/{id}/financials/as-filed?statement=income_statement
```

Every line item the company ever printed on that statement — one row per printed caption
(a renamed line is a new row), one column per period, values in the units exactly as
filed. XBRL filings and printed statements (IFRS PDFs from Gulf exchanges, legacy HTML,
prospectuses) come through the same shape.

| Parameter         | Values                                                                                                                                   | Default      |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------ |
| `statement`       | `income_statement` · `comprehensive_income` · `balance_sheet` · `balance_sheet_parenthetical` · `cash_flow_statement` · `equity` · `all` | required     |
| `period_type`     | `annual` · `semiannual` · `quarterly`                                                                                                    | `annual`     |
| `reporting_basis` | `individual` · `as_reported`                                                                                                             | `individual` |
| `vintage`         | `original` — each period from the filing the company made for it · `latest` — the restated comparatives                                  | `original`   |
| `format`          | `json` · `csv` · `xlsx` (one sheet per statement plus a Provenance sheet)                                                                | `json`       |

A single statement returns one grid; `statement=all` returns `{ "grids": [...] }` with
empty statements omitted. Each grid carries `lane` (`xbrl` or `printed`), `currency`,
`columns[]` (`key`, `periodEnd`, `fiscalYear`, `fiscalQuarter`, `ownDocRef`), `rows[]`
(`caption`, `depth`, `isHeader`, `isTotal`, `concept`, `member`, `mapped`) and, in every
cell, `value`, `docRef` and `vintage` (`own` or `comparative`) — plus `page` for printed
statements. `documents[]` lists every filing the grid drew from. This is what `astreus as-filed`
reads (`-s cf -q` for the quarterly cash-flow grid, `--ytd` for the cumulative column,
`--vintage latest` for the restated comparatives, `--documents` for the filing list); the
CSV and XLSX formats are REST-only.

## Overview series

```
GET /api/v1/companies/{id}/overview-series
```

The series the company Overview charts read, already shaped: `revenueEps` (revenue and
diluted EPS by fiscal year), `fcf`, `profitConversion` (revenue → gross profit → operating
income → pretax → net income, annual and quarterly) and `debtCoverage` (debt, free cash
flow, cash). Null blocks mean the company has no served data for that chart.

## Citing a cell: fact-source

```
GET /api/v1/companies/{id}/fact-source
```

| Parameter          | Values                                                                                                                                                                                       |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `statement`        | `income_statement` · `balance_sheet` · `cash_flow_statement` · `segments_kpis`                                                                                                               |
| `key`              | a standardized key (`std:revenue`), a raw XBRL tag (`us-gaap:Revenues`), a segment row (`seg::<axis>::<metric>::<member>`) or a KPI row (`kpi::<kpi_key>`) — the row keys from `/financials` |
| `end_date`         | the column's period end, `YYYY-MM-DD` (from `period_meta`)                                                                                                                                   |
| `period_type`      | must match the `/financials` call you are citing (default `annual`)                                                                                                                          |
| `basis`            | `individual` (default) or `as_reported` — must match too                                                                                                                                     |
| `accounting_basis` | the basis code, when you asked `/financials` for a non-primary one                                                                                                                           |

The response carries `provenance`, `std_value`, `source_tags`, the `filing`
(`accession_number`, `document_ref`, `filing_type`, `filing_date`, `fiscal_year`,
`fiscal_quarter`, `period_end_date`) and the `facts[]` behind the number — each with its
`tag_name`, `context_id`, `raw_value`, `selected_value`, `unit`, `decimals`, period dates,
and any later `revisions[]` of the same fact. For values read from a printed PDF the fact
carries `printed_text` and a `locator` (page and position) instead of an XBRL context.

`provenance` tells you how the number was produced:

| Value                                                                                                               | Meaning                                                                |
| ------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
| `filed`                                                                                                             | Read directly from a tagged fact in the named filing                   |
| `component_sum`, `residual`, `derived`                                                                              | Built from other lines; `composition` shows the arithmetic             |
| `derived_q4`                                                                                                        | Annual minus the first three quarters                                  |
| `as_reported`                                                                                                       | A raw XBRL tag row, as filed                                           |
| `pdf_ifrs`, `pdf_cas`, `xml_kgaap`, `html_banz`, `html_legacy`, `prospectus`                                        | Read from a document lane rather than XBRL — the lane names the source |
| `segment_filed`, `segment_derived_q4`, `segment_residual`, `segment_reconciling`, `segment_note`, `segment_deck`, … | Segment rows — see [Segments & KPIs](/segments-and-kpis)               |
| `kpi_press_release`                                                                                                 | A disclosed KPI, cited to the results release page                     |
| `not_found`                                                                                                         | Nothing served for that cell                                           |

Quote the accession (or document reference) next to the figure — that is the citation. The
[trace-a-number guide](/guides/trace-a-number) walks through it once, end to end.
