• Stocks
  • Etfs
  • Chat
  • Docs
  • Dataset Showcase
CoverageBlog

Documentation

Artifacts

Artifacts

  • Overview

Company

  • Beneficial ownership
  • Officers and directors

Financial

  • Debt instruments
  • Income flow
  • Income flow interpretation
  • Share repurchase

Business

  • Acquisitions
  • Customer concentration
  • Physical properties
  • Products, services, and brands

Legal

  • Legal proceedings

Artifacts

  • Overview

Company

  • Beneficial ownership
  • Officers and directors

Financial

  • Debt instruments
  • Income flow
  • Income flow interpretation
  • Share repurchase

Business

  • Acquisitions
  • Customer concentration
  • Physical properties
  • Products, services, and brands

Legal

  • Legal proceedings
Loading docs…

The infrastructure layer for financial AI

PricingUse casesBlogContactPrivacy PolicyTerms of Service

© 2026 Lucy AI. All rights reserved.

Use casesResponse schemaExample datasetPlayground
Developers›Docs›Income flow

Income flow

Structured income-flow facts, periods, views, and validation details from financial filings.

Category
Financial
Forms
10-K10-Q20-F40-F
Use casesResponse schemaExample datasetPlayground

Use cases#

  • Inspect reported income-flow facts by fiscal period and currency.
  • Render the filing's saved flow views and validation state.

Response schema#

Fields 89

Field pathTypeDescription
schema_version#
required
string

Schema Version

fiscal_year#
string

Fiscal Year

period#
required
object

Reporting period of the flow. Empty strings when the linkbase pins neither end of the span.

period.start#
required
string

Start

period.end#
required
string

End

currency#
required
string

Currency

facts#
object

Every statement line the extraction resolved, keyed by role (revenue, gross_profit, source:0, use:1, …).

facts.*#
object

One named entry of the facts registry.

facts.*.value#
required
number

Current-period amount in the document currency; never rescaled.

facts.*.prior#
number| null

Prior comparable period amount. Absent when no prior period is tagged.

facts.*.yoy#
number| null

Fractional change against prior (0.12 means +12%).

facts.*.margin#
number| null

Fraction of revenue this amount represents.

facts.*.tag#
string

Source concept — an XBRL QName, or the printed statement label when the value was rebuilt from calculation edges rather than tagged directly.

facts.*.derived#
boolean

True when the value was computed from sibling calculation edges instead of being tagged as its own fact.

facts.*.axis_summed#
boolean

True when the value is the sum of dimensional facts along one axis rather than a single consolidated fact.

facts.*.label#
required
string

Display label for the line.

default_view_id#
string

Default View Id

views#
array
items: object

Views

views[].id#
required
string

Id

views[].kind#
required
string

Kind

views[].label#
required
string

Label

views[].is_default#
boolean

Is Default

views[].breakdown#
object| null

How one node of the graph splits along a single axis.

views[].breakdown.subject_node_id#
required
string

Id of the graph node this breakdown decomposes.

views[].breakdown.axis#
string

Axis QName the members belong to.

views[].breakdown.source_tag#
string

Concept whose dimensional facts produced the members.

views[].breakdown.coverage#
number

Member sum divided by the subject amount (1.0 means fully explained).

views[].breakdown.members#
array
items: object

Members

views[].breakdown.members[].member#
required
string

Member QName, or the printed member name when the source has no QName.

views[].breakdown.members[].label#
required
string

Label

views[].breakdown.members[].value#
required
number

Value

views[].breakdown.members[].prior#
number| null

Prior

views[].breakdown.members[].yoy#
number| null

Yoy

views[].breakdown.other#
object| null

Residual amount not attributed to any member.

views[].breakdown.other.value#
required
number

Current-period amount in the document currency; never rescaled.

views[].breakdown.other.prior#
number| null

Prior comparable period amount. Absent when no prior period is tagged.

views[].breakdown.other.yoy#
number| null

Fractional change against prior (0.12 means +12%).

views[].breakdown.other.margin#
number| null

Fraction of revenue this amount represents.

views[].breakdown.other.tag#
string

Source concept — an XBRL QName, or the printed statement label when the value was rebuilt from calculation edges rather than tagged directly.

views[].breakdown.other.derived#
boolean

True when the value was computed from sibling calculation edges instead of being tagged as its own fact.

views[].breakdown.other.axis_summed#
boolean

True when the value is the sum of dimensional facts along one axis rather than a single consolidated fact.

views[].breakdown.adjustment#
object| null

Negative reconciliation amount when the member sum exceeds the subject — kept rather than dropped so the difference stays visible.

views[].breakdown.adjustment.value#
required
number

Current-period amount in the document currency; never rescaled.

views[].breakdown.adjustment.prior#
number| null

Prior comparable period amount. Absent when no prior period is tagged.

views[].breakdown.adjustment.yoy#
number| null

Fractional change against prior (0.12 means +12%).

views[].breakdown.adjustment.margin#
number| null

Fraction of revenue this amount represents.

views[].breakdown.adjustment.tag#
string

Source concept — an XBRL QName, or the printed statement label when the value was rebuilt from calculation edges rather than tagged directly.

views[].breakdown.adjustment.derived#
boolean

True when the value was computed from sibling calculation edges instead of being tagged as its own fact.

views[].breakdown.adjustment.axis_summed#
boolean

True when the value is the sum of dimensional facts along one axis rather than a single consolidated fact.

views[].breakdown.subject_label#
string

Name of what the members actually decompose, set only when that is NOT the revenue shown in facts: the filing tagged this axis on another concept and the members cover less than the revenue, so other carries the rest (e.g. a bank whose segment axis is tagged on net interest income). Absent means the members decompose the revenue itself. A consumer that draws revenue breakdowns should skip the views that carry it — the parts are real and members + other still equals the revenue, but the parts are shares of a smaller quantity.

views[].sankey#
required
object

The flow graph of one view. Node/link/column arrays are always present.

views[].sankey.basis#
required
string

Which shape the graph took — business-model cascade, gross-profit split, degraded gross profit, or flat.

views[].sankey.summary#
required
object

Headline totals of a flow graph.

Every key is defaulted because a graph without a summary serializes as an empty object rather than null (Go mirror).

views[].sankey.summary.earned_label#
string

Earned Label

views[].sankey.summary.earned#
number

Earned

views[].sankey.summary.spent_label#
string

Spent Label

views[].sankey.summary.spent#
number

Spent

views[].sankey.summary.bottom_label#
string

Bottom Label

views[].sankey.summary.bottom#
number

Bottom

views[].sankey.nodes#
required
array
items: object

Nodes

views[].sankey.nodes[].id#
required
string

Id

views[].sankey.nodes[].label#
required
string

Label

views[].sankey.nodes[].role#
required
string

Flow role — revenue, cost, profit, loss, or contra.

views[].sankey.nodes[].kind#
required
string

What the node stands for — a statement total, a subtotal, a use of funds, the bottom line, or one member of a revenue breakdown.

views[].sankey.nodes[].value#
required
number

Magnitude of the node; loss nodes carry the size of the loss, not a negative amount.

views[].sankey.nodes[].tag#
string

Tag

views[].sankey.nodes[].member#
string

Member

views[].sankey.nodes[].prior#
number| null

Prior

views[].sankey.nodes[].yoy#
number| null

Yoy

views[].sankey.nodes[].margin#
number| null

Margin

views[].sankey.nodes[].derived#
boolean

Derived

views[].sankey.nodes[].axis_summed#
boolean

Axis Summed

views[].sankey.links#
required
array
items: object

Links

views[].sankey.links[].source#
required
string

Source

views[].sankey.links[].target#
required
string

Target

views[].sankey.links[].value#
required
number

Value

views[].sankey.links[].role#
string

Role

views[].sankey.columns#
required
array
items: array

Node ids grouped into render columns, left to right.

views[].validation#
object| null

Deterministic checks on one view.

views[].validation.balanced#
required
boolean

Every node's inflow and outflow reconcile within the rounding tolerance.

views[].validation.coverage_ok#
required
boolean

The breakdown members explain enough of the subject amount.

views[].validation.derived_values_count#
integer

Derived Values Count

validation#
required
object

Deterministic checks on the document as a whole.

validation.segment_sum_ok#
required
boolean

Segment Sum Ok

validation.gross_profit_ok#
required
boolean

Gross Profit Ok

validation.bottom_line_ok#
required
boolean

Bottom Line Ok

validation.sankey_balance_ok#
boolean

Sankey Balance Ok

validation.derived_values_count#
integer

Derived Values Count

validation.warnings#
array
items: string

Why a breakdown candidate was dropped, or which candidate stayed unexplained. Absent when nothing was dropped.

Example dataset#

An illustrative example for income_flow. Use it to see the shape of the data before running a live request.

Top-level fields in the example dataset
FieldSummary
fiscal_year2025
period2 fields
currencyUSD
facts2 fields
views0 items

Playground#

← PreviousDebt instrumentsNext →Income flow interpretation

Related

  • Debt instruments
  • Income flow interpretation
  • Share repurchase

On this page

Use casesResponse schemaExample datasetPlayground