> This page is for API.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.spreadspace.app/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.spreadspace.app/_mcp/server.

# Retrieve a document

GET https://api.spreadspace.app/api/documents/{document_id}

Reads one extracted document: its envelope and its extracted object, whose first key, document_type, says which shape it has.

Requires the `extractions:read` scope. Rate limit: 200 requests per minute per key (the `api` lane).

Reference: https://docs.spreadspace.app/api/api-reference/documents/get

## Authentication

- `Authorization` header (bearer token, required) — Bearer token. Use `ss_live_…` for live data or `ss_test_…` for the sandbox (test mode). See [Authentication](https://docs.spreadspace.app/api/authentication).

## Request

### Path parameters

- `document_id` (string, required)

### Headers

- `SpreadSpace-Version` (string, optional) — Pin the API version, e.g. `2026-10-07`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).

## Response

### 200

OK

- `document_id` (string, required) — The document's id.
- `borrower_id` (string, required) — The borrower the document belongs to.
- `status` (string, required) — The document's lifecycle status: `extracted`, `duplicate`, `superseded`, `undated`, `paused`, `unextractable` or `deleted`.
- `period` (JsonObject, required, nullable)
- `updated_at` (datetime, required) — When the document last changed.
- `document_type` (string, optional, nullable) — The document's type, which also names the shape of its `report_data`.
- `loan_id` (string, optional, nullable) — The loan the document belongs to.
- `status_reason` (string, optional, nullable) — Why an `unextractable` document was not extracted, when there is a sentence for it; null otherwise.
- `duplicate_of_document_id` (string, optional, nullable) — The document this one duplicates, for a `duplicate`.
- `extraction_version` (integer, optional, nullable) — The extraction's version; it moves with `updated_at` when the extracted object changes.
- `created_at` (datetime, optional, nullable) — When the document was created.
- `deleted_at` (datetime, optional, nullable) — When the document was deleted, for a `deleted`.
- `report_data` (ReportData, optional, nullable) — The extracted object, its first key `document_type`. Served by the read, and by the list with `include=report_data`; present as null when the document has no extracted object.

## Errors

### 400 Bad Request Error

Bad request: validation failed, the cursor is malformed, or the API version is unknown.

- `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope.

### 401 Unauthorized Error

Unauthorized: the bearer token or API key is missing or invalid.

- `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope.

### 402 Payment Required Error

Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.

- `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope.

### 403 Forbidden Error

Forbidden: authentication succeeded but the caller is not permitted to perform this action, for example an API key missing the required scope, an embed session reaching a loan it was not minted for, or a feature outside the workspace's plan.

- `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope.

### 404 Not Found Error

Not found: the resource does not exist or is not visible to the calling tenant.

- `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope.

### 429 Too Many Requests Error

Too many requests: the rate limit was hit, or an idempotency-key replay is still in progress.

- `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope.

### 500 Internal Server Error

Internal server error: an unexpected failure. Quote the `request_id` in support tickets. A mutation sent with an `Idempotency-Key` replays this fault under that key rather than re-running; confirm the resource state before resending with a new key.

- `error` (ApiErrorBody, required) — Inner body of the canonical API error envelope.

## Types

### JsonObject

### ReportData

The extracted object stored for a document, in the shape of its family: a tax return, a Form W-2, a personal financial statement, a balance sheet, a profit and loss statement, a cash flow statement, a statement of changes in equity, a statement of comprehensive income, a debt schedule, a bank statement, or an accounts receivable or payable aging. Its document_type names the family.

- `document_type`: `tax_return` (Tax Return)
- `document_type`: `w2` (Form W-2)
  - `data` (W2ReportData_W2Data, required) — The boxes of the first statement in the file, with every statement of the file under `forms_w2`.
  - `form` ("w2", required) — Always `w2`.
  - `k1_partners` (list of string, required) — Always empty on a Form W-2.
  - `metadata` (W2ReportData_W2Metadata, required) — How the file was read.
  - `statements` (list of string, required) — Always empty on a Form W-2.
  - `depreciation_reports` (W2ReportDataDepreciationReports, optional, nullable) — Always null on a Form W-2.
- `document_type`: `paystub` (Paystub)
  - `deductions` (list of PaystubReportData_PaystubLine, required) — The deductions rows the stub lists, one per tax or withholding, in the order stated.
  - `deductions_total_current` (string, required, nullable) — Total deductions for the pay period.
  - `deductions_total_ytd` (string, required, nullable) — Total deductions for the year to date.
  - `distributions` (list of PaystubReportData_PaystubDistribution, required) — Where the net pay was deposited, one row per receiving account.
  - `earnings` (list of PaystubReportData_PaystubLine, required) — The earnings rows the stub lists, one per kind of pay, in the order stated.
  - `employee_address` (string, required, nullable) — The employee's address on one line: street, city, state and postal code.
  - `employee_name` (string, required, nullable) — The employee's name.
  - `employee_ssn_last4` (string, required, nullable) — The last four digits of the employee's social security number; the rest of the number is never served.
  - `employer_address` (string, required, nullable) — The employer's address on one line: street, city, state and postal code.
  - `employer_name` (string, required, nullable) — The employer's name.
  - `gross_current` (string, required, nullable) — Gross pay for the pay period.
  - `gross_ytd` (string, required, nullable) — Gross pay for the year to date.
  - `hours_current` (string, required, nullable) — Hours worked in the pay period, as a decimal string.
  - `marital_status` (string, required, nullable) — The employee's marital status for tax withholding, lower case as stated.
  - `net_current` (string, required, nullable) — Net pay for the pay period.
  - `net_ytd` (string, required, nullable) — Net pay for the year to date.
  - `pay_basis` (string, required, nullable) — How the employee is paid, for example salary or hourly, lower case as stated.
  - `pay_date` (string, required, nullable) — The date the pay was issued, as YYYY-MM-DD.
  - `pay_frequency` (string, required, nullable) — How often the employee is paid: weekly, biweekly, semimonthly, monthly, quarterly, annual, or unknown when the frequency stated is none of these.
  - `period_end` (string, required, nullable) — The last day of the pay period, as YYYY-MM-DD.
  - `period_start` (string, required, nullable) — The first day of the pay period, as YYYY-MM-DD.
  - `rate_of_pay_amount` (string, required, nullable) — The employee's rate of pay, in the unit rate_of_pay_basis names.
  - `rate_of_pay_basis` (string, required, nullable) — The unit of the rate of pay, for example annual or hourly, lower case as stated.
  - `signals` (list of PaystubReportData_PaystubSignal, required) — Notes about the paystub; empty when there are none.
  - `status` ("EXTRACTED", required) — Always `EXTRACTED` on a paystub the API returns.
  - `job_title` (string, optional, nullable) — The employee's job title or position as the stub prints it; null when the stub prints none; absent on paystubs extracted before the field was introduced.
- `document_type`: `personal_financial_statement` (Personal Financial Statement)
- `document_type`: `balance_sheet` (Balance Sheet)
  - `balance_sheet` (list of BalanceSheetReportData_BalanceSheetRow, required) — The printed lines as a tree: section headings, their lines, and subtotals.
  - `billing_years` (integer, required) — Years of data billed: the distinct years among columns that print a non-zero figure; 0 when no column prints one (such a document is not billed).
  - `period_count` (integer, required) — Number of period columns.
  - `periods` (list of BalanceSheetReportData_BalanceSheetPeriod, required) — The statement's columns, one entry per period, newest first.
  - `sections` (list of BalanceSheetReportData_BalanceSheetSection, required) — The printed lines grouped by section, with subtotals marked.
  - `status` (enum, required) — `RECONCILED` when total assets equal total liabilities and equity in every period; `FLAGGED` otherwise.
    - Allowed values: `RECONCILED`, `FLAGGED`
  - `total_assets` (string, required, nullable) — Total assets for the latest period.
  - `total_equity` (string, required, nullable) — Total equity for the latest period.
  - `total_liabilities` (string, required, nullable) — Total liabilities for the latest period.
  - `total_liabilities_and_equity` (string, required, nullable) — Total liabilities and equity for the latest period.
  - `as_of_year` (integer, optional, nullable) — The year of the latest period, when the document states one.
  - `canonical` (BalanceSheetReportData_CanonicalAnnotation, optional) — The printed lines mapped onto standard line names.
  - `cpa_engagement` (integer, optional) — The accountant's level of assurance: 0 unaudited, 1 compiled, 2 reviewed, 3 audited.
  - `cpa_engagement_label` (string, optional) — The assurance level in words.
  - `entity` (string, optional, nullable) — The reporting entity's name as printed.
  - `entity_source` (string, optional) — What names the entity when the statement's own page does not: the page image (`page_image`), the filing's cover page (`filing_cover`), or the opening pages of the financial statement packet the statement arrived in (`packet_text`); absent when the statement's own page names it.
  - `entity_source_sheet` (string, optional) — The sheet of the uploaded workbook that names the company, when this statement's own sheet does not and the workbook names exactly one company; absent otherwise.
  - `packet` (BalanceSheetReportData_PacketProvenance, optional) — Where the statement sat in the financial statement packet it arrived in, when it arrived in one.
  - `period_source` (string, optional) — Which part of the document dates the periods when the column headers state no date: the date the statement was printed on (`print_stamp`), a year a column prints alone (`year_only`, the period being that year's end), the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); absent when the column headers date the periods.
  - `presentation` (enum, optional) — How the statement is presented: `formal` when it is presented as issued financial statements (a CPA engagement stated, a reference to the notes to the financial statements, a per-share block, the supplemental cash flow disclosures, the preparation legend that no assurance is provided, a plural statement title such as balance sheets or statements of income, or a statement of changes in equity or plural statement titles in the packet it arrived in); `free_form` when it is a report out of the books (accounting software or a spreadsheet).
    - Allowed values: `formal`, `free_form`
  - `receivable_allowances` (list of BalanceSheetReportData_BalanceSheetReceivableAllowance, optional) — The allowance each receivables line states in its own caption, when a caption states one.
  - `reporting_unit` (enum, optional) — The unit the figures are printed in; on the wire the figures are already whole dollars.
    - Allowed values: `ones`, `thousands`, `millions`, `billions`
  - `scale_multiplier` (integer, optional) — Scale of the printed figures: 1 for whole dollars, 1000 when the statement is stated in thousands, 1000000 when it is stated in millions, 1000000000 when it is stated in billions.
  - `signals` (list of BalanceSheetReportData_StatementSignal, optional) — Notes about the statement's reporting period, when any.
  - `summary` (BalanceSheetReportData_StatementSummary, optional) — The statement's headline figures by section, on the single-document read.
  - `total_mezzanine_equity` (string, optional, nullable) — Mezzanine equity for the latest period: the lines the statement prints between its liabilities and its equity, such as a redeemable noncontrolling interest or redeemable preferred stock, which are in neither total liabilities nor total equity. Null when the latest period prints none.
  - `totals` (BalanceSheetReportData_BalanceSheetTotals, optional) — The headline totals per period, the totals the balance check used, and whether each of those is printed.
  - `unit_exceptions` (list of string, optional) — The carve-outs the statement's unit declaration lists, such as per share amounts, whose lines and columns keep their printed figures; empty when it lists none.
  - `unit_source` (enum, optional) — Where the statement states its unit: `printed` when the statement header, a column header or a heading line prints it; `none` when nothing is printed and the figures are whole dollars as printed.
    - Allowed values: `printed`, `none`
- `document_type`: `profit_loss_statement` (Profit and Loss Statement)
  - `billing_years` (integer, required) — Years of data billed: the distinct years among columns that print a non-zero figure; 0 when no column prints one (such a document is not billed).
  - `columns` (integer, required) — Number of figure columns.
  - `entity` (string, required, nullable) — The reporting entity's name as printed.
  - `lines` (list of ProfitLossStatementReportData_ProfitLossLine, required) — The printed lines in order.
  - `period` (string, required, nullable) — The reporting period as printed in the heading.
  - `period_source` (string, required, nullable) — Which part of the document states the reporting period: the printed heading (`printed`), the date the statement was printed on (`print_stamp`), a year the heading prints alone (`year_only`, the period being that year's end), the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); null when none of these dates the statement.
  - `periods` (list of ProfitLossStatementReportData_ProfitLossPeriod, required) — The statement's figure columns, one entry per column.
  - `title` (string, required, nullable) — The statement's printed title.
  - `canonical` (ProfitLossStatementReportData_CanonicalAnnotation, optional) — The printed lines mapped onto standard line names.
  - `component_columns` (list of ProfitLossStatementReportData_ProfitLossComponentColumn, optional) — The columns the statement prints beside a total as its parts, such as one per class or location, when it prints any.
  - `cpa_engagement` (integer, optional) — The accountant's level of assurance: 0 unaudited, 1 compiled, 2 reviewed, 3 audited.
  - `cpa_engagement_label` (string, optional) — The assurance level in words.
  - `entity_source` (string, optional) — What names the entity when the statement's own page does not: the page image (`page_image`), the filing's cover page (`filing_cover`), or the opening pages of the financial statement packet the statement arrived in (`packet_text`); absent when the statement's own page names it.
  - `entity_source_sheet` (string, optional) — The sheet of the uploaded workbook that names the company, when this statement's own sheet does not and the workbook names exactly one company; absent otherwise.
  - `entity_split` (ProfitLossStatementReportData_ProfitLossEntitySplit, optional) — Which part of a page whose columns are separate companies this statement is; absent on every other statement.
  - `packet` (ProfitLossStatementReportData_PacketProvenance, optional) — Where the statement sat in the financial statement packet it arrived in, when it arrived in one.
  - `per_share` (ProfitLossStatementReportData_ProfitLossPerShare, optional) — The per-share block printed under the bottom line, when the statement prints one: earnings per share and weighted-average shares, basic and diluted, one row each as printed.
  - `presentation` (enum, optional) — How the statement is presented: `formal` when it is presented as issued financial statements (a CPA engagement stated, a reference to the notes to the financial statements, a per-share block, the supplemental cash flow disclosures, the preparation legend that no assurance is provided, a plural statement title such as balance sheets or statements of income, or a statement of changes in equity or plural statement titles in the packet it arrived in); `free_form` when it is a report out of the books (accounting software or a spreadsheet).
    - Allowed values: `formal`, `free_form`
  - `reporting_unit` (enum, optional) — The unit the figures are printed in; on the wire the figures are already whole dollars.
    - Allowed values: `ones`, `thousands`, `millions`, `billions`
  - `scale_multiplier` (integer, optional) — Scale of the printed figures: 1 for whole dollars, 1000 when the statement is stated in thousands, 1000000 when it is stated in millions, 1000000000 when it is stated in billions.
  - `signals` (list of ProfitLossStatementReportData_StatementSignal, optional) — Notes about the statement's reporting period, when any.
  - `summary` (ProfitLossStatementReportData_StatementSummary, optional) — The statement's headline figures, on the single-document read.
  - `supplemental` (ProfitLossStatementReportData_ProfitLossSupplemental, optional) — The rows printed under the bottom line besides the per-share block, when the statement prints any: other comprehensive income, a retained earnings roll-forward, supplemental lines.
  - `unit_exceptions` (list of string, optional) — The carve-outs the statement's unit declaration lists, such as per share amounts, whose lines and columns keep their printed figures; empty when it lists none.
  - `unit_source` (enum, optional) — Where the statement states its unit: `printed` when the statement header, a column header or a heading line prints it; `none` when nothing is printed and the figures are whole dollars as printed.
    - Allowed values: `printed`, `none`
- `document_type`: `cash_flow_statement` (Cash Flow Statement)
  - `adjustments_subtotal` (CashFlowStatementReportData_CashFlowTotal, required, nullable) — Total adjustments to reconcile net income, when printed.
  - `beginning_cash` (CashFlowStatementReportData_CashFlowTotal, required, nullable) — Cash at the beginning of the period.
  - `billing_years` (integer, required) — Years of data billed: the distinct years among columns that print a non-zero figure; 0 when no column prints one (such a document is not billed).
  - `cpa_engagement` (integer, required) — The accountant's level of assurance: 0 unaudited, 1 compiled, 2 reviewed, 3 audited.
  - `cpa_engagement_label` (string, required) — The assurance level in words.
  - `discontinued_operations` (CashFlowStatementReportData_CashFlowTotal, required, nullable) — Cash flows of discontinued operations, when printed.
  - `ending_cash` (CashFlowStatementReportData_CashFlowTotal, required, nullable) — Cash at the end of the period.
  - `entity` (string, required, nullable) — The reporting entity's name as printed.
  - `financing` (list of CashFlowStatementReportData_CashFlowLine, required) — The financing activities lines.
  - `financing_subtotal` (CashFlowStatementReportData_CashFlowTotal, required, nullable) — Net cash from financing activities, as printed.
  - `fx` (CashFlowStatementReportData_CashFlowTotal, required, nullable) — Effect of exchange rate changes on cash, when printed.
  - `investing` (list of CashFlowStatementReportData_CashFlowLine, required) — The investing activities lines.
  - `investing_subtotal` (CashFlowStatementReportData_CashFlowTotal, required, nullable) — Net cash from investing activities, as printed.
  - `net_change` (CashFlowStatementReportData_CashFlowTotal, required, nullable) — Net change in cash.
  - `operating` (list of CashFlowStatementReportData_CashFlowLine, required) — The operating activities lines.
  - `operating_subtotal` (CashFlowStatementReportData_CashFlowTotal, required, nullable) — Net cash from operating activities, as printed.
  - `periods` (list of CashFlowStatementReportData_CashFlowPeriod, required) — The statement's figure columns, one entry per column.
  - `reporting_unit` (string, required, nullable) — The unit the figures are printed in, such as ones or thousands.
  - `scale_multiplier` (integer, required, nullable) — Scale of the printed figures: 1 for whole dollars, 1000 when the statement is stated in thousands, 1000000 when it is stated in millions.
  - `supplemental` (list of CashFlowStatementReportData_CashFlowLine, required) — Supplemental disclosures such as cash paid for interest and for income taxes.
  - `title` (string, required, nullable) — The statement's printed title.
  - `billing_group` (string, optional) — Present when one file carries several statements: an identifier shared by that file's statements.
  - `canonical` (CashFlowStatementReportData_CanonicalAnnotation, optional) — The printed lines mapped onto standard line names.
  - `consolidating` (boolean, optional) — True on a consolidating statement, whose columns are entities under one period; absent otherwise.
  - `discontinued` (list of CashFlowStatementReportData_CashFlowLine, optional) — The cash flows of discontinued operations printed outside the three sections, one row each, when the statement prints any.
  - `entity_source` (string, optional) — What names the entity when the statement's own page does not: the page image (`page_image`), the filing's cover page (`filing_cover`), or the opening pages of the financial statement packet the statement arrived in (`packet_text`); absent when the statement's own page names it.
  - `entity_source_sheet` (string, optional) — The sheet of the uploaded workbook that names the company, when this statement's own sheet does not and the workbook names exactly one company; absent otherwise.
  - `packet` (CashFlowStatementReportData_PacketProvenance, optional) — Where the statement sat in the financial statement packet it arrived in, when it arrived in one.
  - `period_source` (string, optional) — Which part of the document dates the periods when the column headers state no date: the date the statement was printed on (`print_stamp`), the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); absent when the column headers date the periods.
  - `presentation` (enum, optional) — How the statement is presented: `formal` when it is presented as issued financial statements (a CPA engagement stated, a reference to the notes to the financial statements, a per-share block, the supplemental cash flow disclosures, the preparation legend that no assurance is provided, a plural statement title such as balance sheets or statements of income, or a statement of changes in equity or plural statement titles in the packet it arrived in); `free_form` when it is a report out of the books (accounting software or a spreadsheet).
    - Allowed values: `formal`, `free_form`
  - `reconciling` (list of CashFlowStatementReportData_CashFlowLine, optional) — The rows printed between the last section total and the net change in cash, such as a reclassification to held for sale or an intermediate net change, when the statement prints any.
  - `signals` (list of CashFlowStatementReportData_StatementSignal, optional) — Notes about the statement's reporting period, when any.
  - `status` (enum, optional) — `RECONCILED` when the sections add up to the net change and beginning cash plus the net change equals ending cash in every period; `FLAGGED` otherwise.
    - Allowed values: `RECONCILED`, `FLAGGED`
  - `unit_exceptions` (list of string, optional) — The carve-outs the statement's unit declaration lists, such as per share amounts, whose lines and columns keep their printed figures; empty when it lists none.
  - `unit_source` (enum, optional) — Where the statement states its unit: `printed` when the statement header, a column header or a heading line prints it; `none` when nothing is printed and the figures are whole dollars as printed.
    - Allowed values: `printed`, `none`
- `document_type`: `equity_statement` (Equity Statement)
  - `billing_years` (integer, required) — Years of data billed for the statement.
  - `columns` (list of EquityStatementReportData_EquityColumn, required) — The statement's figure columns in print order.
  - `cpa_engagement` (integer, required) — The accountant's level of assurance: 0 unaudited, 1 compiled, 2 reviewed, 3 audited.
  - `cpa_engagement_label` (string, required) — The assurance level in words.
  - `entity` (string, required, nullable) — The reporting entity's name as printed.
  - `layout` (enum, required) — How the statement is laid out: `matrix` when the equity components run across as columns and the balances and movements run down as rows; `vertical` when the periods run across as columns.
    - Allowed values: `matrix`, `vertical`
  - `period_header` (string, required) — The period wording printed over the statement, such as the years ended; empty when the statement prints none.
  - `periods` (list of EquityStatementReportData_EquityPeriod, required) — The periods the statement covers, one entry per period.
  - `reporting_unit` (enum, required) — The unit the figures are printed in, such as ones or thousands.
    - Allowed values: `ones`, `thousands`, `millions`, `billions`
  - `rows` (list of EquityStatementReportData_EquityRow, required) — The statement's rows in print order.
  - `scale_multiplier` (integer, required) — Scale of the printed figures: 1 for whole dollars, 1000 when the statement is stated in thousands, 1000000 when it is stated in millions.
  - `status` (enum, required) — `RECONCILED` when every row's components add to its printed total and every opening balance plus the period's movements equals the closing balance; `FLAGGED` otherwise.
    - Allowed values: `RECONCILED`, `FLAGGED`
  - `title` (string, required, nullable) — The statement's printed title.
  - `total_column` (integer, required, nullable) — Position in `columns`, counting from zero, of the column that prints the total of the components; null when the statement has none.
  - `unit_exceptions` (list of string, required) — The carve-outs the statement's unit declaration lists, such as share data, which keep their printed figures; empty when it lists none.
  - `unit_source` (enum, required) — Where the statement states its unit: `printed` when the statement header, a column header or a heading line prints it; `none` when nothing is printed and the figures are whole dollars as printed.
    - Allowed values: `printed`, `none`
  - `entity_source` (string, optional) — Where the entity name was obtained when the statement does not name it: `page_image` from the page image, `filing_cover` from the filing cover, or `packet_text` from the opening pages of the financial statement packet it arrived in; absent when no additional source was used.
  - `packet` (EquityStatementReportData_PacketProvenance, optional) — Where the statement sat in the financial statement packet it arrived in, when it arrived in one.
  - `presentation` (enum, optional) — How the statement is presented: `formal` when it is presented as issued financial statements; `free_form` when it is a report out of the books (accounting software or a spreadsheet).
    - Allowed values: `formal`, `free_form`
  - `signals` (list of EquityStatementReportData_StatementSignal, optional) — Each check of the statement that does not hold, in words, when any does not.
- `document_type`: `comprehensive_income_statement` (Comprehensive Income Statement)
  - `billing_years` (integer, required) — Years of data billed for the statement.
  - `columns` (integer, required) — Number of figure columns.
  - `comprehensive_income` (list of string, required) — Comprehensive income per column.
  - `comprehensive_income_attributable_to_noncontrolling` (list of string, required, nullable) — Comprehensive income attributable to the noncontrolling interests per column; null when the statement prints no such line.
  - `comprehensive_income_attributable_to_noncontrolling_printed` (list of enum, required, nullable) — How each figure of the noncontrolling interests' share is printed, per column; null when the statement prints no such line.
    - Allowed values: `money`, `dash`, `blank`
  - `comprehensive_income_attributable_to_parent` (list of string, required, nullable) — Comprehensive income attributable to the company per column; null when the statement prints no such line.
  - `comprehensive_income_attributable_to_parent_printed` (list of enum, required, nullable) — How each figure of the company's share is printed, per column; null when the statement prints no such line.
    - Allowed values: `money`, `dash`, `blank`
  - `comprehensive_income_printed` (list of enum, required) — How each figure of `comprehensive_income` is printed, per column.
    - Allowed values: `money`, `dash`, `blank`
  - `entity` (string, required, nullable) — The reporting entity's name as printed.
  - `lines` (list of ComprehensiveIncomeStatementReportData_ComprehensiveIncomeLine, required) — The statement's printed lines from net income through comprehensive income and its split, in print order.
  - `nci_direction` (enum, required) — Whether the noncontrolling interests' line is deducted from (`subtract`) or added to (`add`) comprehensive income to reach the company's share, as the statement prints its sign; null when the statement prints no split.
    - Allowed values: `subtract`, `add`
  - `net_income` (list of string, required) — Net income per column.
  - `net_income_printed` (list of enum, required) — How each figure of `net_income` is printed, per column: `money`, `dash` for a printed dash, `blank` for an empty cell.
    - Allowed values: `money`, `dash`, `blank`
  - `period` (string, required, nullable) — The period wording printed over the statement, such as the years ended, when it prints one.
  - `periods` (list of ComprehensiveIncomeStatementReportData_ComprehensiveIncomePeriod, required) — The statement's figure columns, one entry per column.
  - `reporting_unit` (enum, required) — The unit the figures are printed in, such as ones or thousands.
    - Allowed values: `ones`, `thousands`, `millions`, `billions`
  - `scale_multiplier` (integer, required) — Scale of the printed figures: 1 for whole dollars, 1000 when the statement is stated in thousands, 1000000 when it is stated in millions.
  - `status` (enum, required) — `RECONCILED` when net income plus other comprehensive income equals comprehensive income, the items add to the printed total and the split nets to the company's share in every column; `FLAGGED` otherwise.
    - Allowed values: `RECONCILED`, `FLAGGED`
  - `title` (string, required, nullable) — The statement's printed title.
  - `total_other_comprehensive_income` (list of string, required) — Total other comprehensive income per column: the printed total, or the total of the items when the statement prints none.
  - `total_other_comprehensive_income_derived` (boolean, required) — True when the statement prints no total of other comprehensive income and `total_other_comprehensive_income` is the total of its items.
  - `total_other_comprehensive_income_printed` (list of enum, required) — How each figure of `total_other_comprehensive_income` is printed, per column.
    - Allowed values: `money`, `dash`, `blank`
  - `cpa_engagement` (integer, optional) — The accountant's level of assurance: 0 unaudited, 1 compiled, 2 reviewed, 3 audited.
  - `cpa_engagement_label` (string, optional) — The assurance level in words.
  - `packet` (ComprehensiveIncomeStatementReportData_PacketProvenance, optional) — Where the statement sat in the financial statement packet it arrived in, when it arrived in one.
  - `presentation` (enum, optional) — How the statement is presented: `formal` when it is presented as issued financial statements; `free_form` when it is a report out of the books (accounting software or a spreadsheet).
    - Allowed values: `formal`, `free_form`
  - `signals` (list of ComprehensiveIncomeStatementReportData_StatementSignal, optional) — Each check of the statement that does not hold, in words, when any does not.
- `document_type`: `investment_income_statement` (Investment Income Statement)
  - `billing_years` (integer, required) — Years of data billed for the table.
  - `columns` (integer, required) — Number of figure columns.
  - `entity` (string, required, nullable) — The reporting entity's name as printed, when the page prints one.
  - `gross_investment_income` (list of string, required, nullable) — Gross investment income per column; null when the table prints no gross investment income line.
  - `gross_investment_income_printed` (list of enum, required, nullable) — How each figure of `gross_investment_income` is printed, per column; null when the table prints no gross investment income line.
    - Allowed values: `money`, `dash`, `blank`
  - `investment_expenses` (list of string, required, nullable) — Investment expenses per column, as a negative figure; null in a column where the table prints none.
  - `investment_expenses_printed` (list of enum, required) — How the investment expenses are printed, per column: `dash` when every expense cell in the column prints a dash, `blank` when the column prints none, `money` otherwise.
    - Allowed values: `money`, `dash`, `blank`
  - `lines` (list of InvestmentIncomeStatementReportData_InvestmentIncomeLine, required) — The table's printed lines from the first component through net investment income, in print order.
  - `net_investment_income` (list of string, required) — Net investment income per column.
  - `net_investment_income_printed` (list of enum, required) — How each figure of `net_investment_income` is printed, per column: `money`, `dash` for a printed dash, `blank` for an empty cell.
    - Allowed values: `money`, `dash`, `blank`
  - `period` (string, required, nullable) — The period wording printed over the table, such as the years ended, when it prints one.
  - `periods` (list of InvestmentIncomeStatementReportData_InvestmentIncomePeriod, required) — The table's figure columns, one entry per column.
  - `reporting_unit` (enum, required) — The unit the figures are printed in, such as ones or thousands.
    - Allowed values: `ones`, `thousands`, `millions`, `billions`
  - `scale_multiplier` (integer, required) — Scale of the printed figures: 1 for whole dollars, 1000 when the table is stated in thousands, 1000000 when it is stated in millions.
  - `status` (enum, required) — `RECONCILED` when the components less the investment expenses reach the printed net investment income and a printed gross investment income line equals the components above it, in every column; `FLAGGED` otherwise.
    - Allowed values: `RECONCILED`, `FLAGGED`
  - `title` (string, required, nullable) — The table's printed title.
  - `cpa_engagement` (integer, optional) — The accountant's level of assurance: 0 unaudited, 1 compiled, 2 reviewed, 3 audited.
  - `cpa_engagement_label` (string, optional) — The assurance level in words.
  - `packet` (InvestmentIncomeStatementReportData_PacketProvenance, optional) — Where the table sat in the financial statement packet it arrived in, when it arrived in one.
  - `presentation` (enum, optional) — How the statement is presented: `formal` when it is presented as issued financial statements; `free_form` when it is a report out of the books (accounting software or a spreadsheet).
    - Allowed values: `formal`, `free_form`
  - `signals` (list of InvestmentIncomeStatementReportData_StatementSignal, optional) — Each check of the table that does not hold, in words, when any does not.
- `document_type`: `supporting_table` (Supporting Table)
  - `as_of` (string, required, nullable) — The date the table is stated as of, when it states one; null otherwise.
  - `category` (string, required, nullable) — The note family the table belongs to, such as `debt` or `lease`; null when it is not known.
  - `columns` (list of SupportingTableReportData_SupportingTableColumn, required) — The table's figure columns in print order. The row labels are not a column.
  - `cpa_engagement` (integer, required) — The accountant's level of assurance: 0 unaudited, 1 compiled, 2 reviewed, 3 audited.
  - `cpa_engagement_label` (string, required) — The assurance level in words.
  - `entity` (string, required, nullable) — The reporting entity's name as printed; null when the page prints none.
  - `heading` (string, required, nullable) — The heading of the note the table sits under, as printed; null when none is printed.
  - `label_head` (string, required, nullable) — The heading printed over the row labels, when the table prints one; null otherwise.
  - `lines` (list of SupportingTableReportData_SupportingTableLine, required) — The table's rows in print order, captions included.
  - `period` (string, required, nullable) — The period or date wording printed over the table, such as the years ended or an as of date; null when none is printed.
  - `reporting_unit` (enum, required) — The unit the figures are printed in; null when it is not known.
    - Allowed values: `ones`, `thousands`, `millions`, `billions`
  - `scale_multiplier` (integer, required, nullable) — Scale of the printed figures: 1 for whole dollars, 1000 when the table is stated in thousands, 1000000 when it is stated in millions; null when it is not known.
  - `signals` (list of SupportingTableReportData_SupportingTableSignal, required) — Each check of the table that does not hold, in words; empty when every check holds.
  - `status` (enum, required) — `RECONCILED` when the table's printed totals agree with the rows above them; `FLAGGED` when one does not; `PRINTED` when the table prints no total to check.
    - Allowed values: `RECONCILED`, `FLAGGED`, `PRINTED`
  - `subject` (string, required, nullable) — What the table is about in a word or two, read from its caption, heading, rows and column heads; null when they name nothing.
  - `supports` (enum, required) — The side of the balance sheet, or the statement, the table supports; null when it is not known.
    - Allowed values: `asset`, `liability`, `equity`, `balance_sheet`, `income_statement`, `cash_flow`
  - `title` (string, required, nullable) — The table's caption as printed, such as the sentence that introduces it; null when the table prints none.
- `document_type`: `debt_schedule` (Debt Schedule)
- `document_type`: `bank_statement` (Bank Statement)
  - `account` (BankStatementReportData_BankStatementAccount, required) — The account the statement is for.
  - `dailyBalances` (list of BankStatementReportData_BankDailyBalance, required) — One entry per day of the period.
  - `metrics` (BankStatementReportData_BankStatementMetrics, required) — Totals over the statement period.
  - `period` (BankStatementReportData_BankStatementPeriod, required) — The statement period with its opening and closing balances.
  - `reportType` ("bank_statement_analysis", required) — Always bank_statement_analysis.
  - `transactions` (list of BankStatementReportData_BankTransaction, required) — Every transaction, in statement order.
  - `balance_source` (string, optional) — Where the period balances come from when the statement prints none: the linked account's current balance carried back through its own posted transactions, or the account's daily balances when the feed carries them (`feed_balance`); absent when the statement prints its balances.
  - `period_source` (string, optional) — Whether the statement prints both ends of its period (`declared`) or at least one end is a date stated elsewhere in the statement's own text (`statement_text`); absent when the statement states no period.
  - `underwritingFlags` (list of BankStatementReportData_UnderwritingFlag, optional) — Notes about fees, returned items and other events in the transactions, when any.
- `document_type`: `ar_aging` (Accounts Receivable Aging)
- `document_type`: `ap_aging` (Accounts Payable Aging)

### ApiErrorBody

Inner body of the canonical API error envelope.

- `type` (string, required) — Stable error type identifier. Pattern-match on this value, not the human-readable message.
- `message` (string, required) — Human-readable error message. Subject to wording changes; do not parse.
- `request_id` (string, optional, nullable) — Per-request correlation ID (matches `X-Request-ID` response header). Quote in support tickets.
- `details` (map from string to string, optional, nullable) — Structured detail. Some error types populate documented keys in every environment: a version conflict (409) carries `current_version`, the version the resource is actually at, so the client can reload and re-apply. Free-form diagnostic detail beyond those keys appears in development environments only. An `insufficient_credits` 402 carries `balance_usd`, `reserved_usd`, `in_flight_docs`, `incoming_docs` and `per_doc_reservation_usd` as decimal strings.

### W2ReportData_W2Data

The statements a Form W-2 upload prints, the first statement's boxes at the top level, every statement under forms_w2, and the employee's identity beside them.

- `copy` (string, required, nullable) — The copy letter printed on the form (A, B, C, D, 1 or 2), when the print carries one.
- `tax_year` (integer, required, nullable) — The tax year printed beside the form title.
- `control_number` (string, required, nullable) — Box d, control number, as printed.
- `employer_ein` (string, required, nullable) — Box b, employer identification number, masked to the last four digits.
- `employer_name` (string, required, nullable) — Box c, the employer's name.
- `employer_address` (string, required, nullable) — Box c, the employer's address below the name, on one line.
- `employee_name` (string, required, nullable) — Box e, the employee's first name, initial and last name, as printed.
- `employee_ssn_last4` (string, required, nullable) — Box a, the last four digits of the employee's social security number; the rest of the number is never served.
- `box_1_wages` (string, required, nullable) — Box 1, wages, tips, other compensation.
- `box_2_federal_tax_withheld` (string, required, nullable) — Box 2, federal income tax withheld.
- `box_3_ss_wages` (string, required, nullable) — Box 3, social security wages.
- `box_4_ss_tax_withheld` (string, required, nullable) — Box 4, social security tax withheld.
- `box_5_medicare_wages` (string, required, nullable) — Box 5, Medicare wages and tips.
- `box_6_medicare_tax_withheld` (string, required, nullable) — Box 6, Medicare tax withheld.
- `box_7_ss_tips` (string, required, nullable) — Box 7, social security tips.
- `box_8_allocated_tips` (string, required, nullable) — Box 8, allocated tips.
- `box_10_dependent_care_benefits` (string, required, nullable) — Box 10, dependent care benefits.
- `box_11_nonqualified_plans` (string, required, nullable) — Box 11, nonqualified plans.
- `box_12` (list of W2ReportData_W2Box12Item, required) — Box 12, one entry per printed code and amount, 12a through 12d.
- `box_13_statutory_employee` (boolean, required, nullable) — Box 13, the statutory employee box, true when checked.
- `box_13_retirement_plan` (boolean, required, nullable) — Box 13, the retirement plan box, true when checked.
- `box_13_third_party_sick_pay` (boolean, required, nullable) — Box 13, the third-party sick pay box, true when checked.
- `box_14_other` (list of W2ReportData_W2Box14Item, required) — Box 14, other, one entry per printed label and amount.
- `box_14b_tipped_occupation_codes` (list of string, required) — Box 14b, Treasury tipped occupation codes, on a form that prints the box.
- `state_rows` (list of W2ReportData_W2StateRow, required) — Boxes 15 through 17, one row per state.
- `local_rows` (list of W2ReportData_W2LocalRow, required) — Boxes 18 through 20, one row per locality.
- `omb_number` (string, required, nullable) — The OMB number printed on the form, 1545-0008 or 1545-0029.
- `layout` (enum, required) — The printing of the statement: irs_1up, the IRS form with one statement per page; irs_4up, the four-per-page sheet; substitute, a payroll or preparer print.
  - Allowed values: `irs_1up`, `irs_4up`, `substitute`
- `source_pages` (list of integer, required) — The pages of the uploaded file the statement is printed on, counting from one; several when the upload repeats it.
- `rescued_fields` (list of string, required) — The boxes whose figure was read from the page as a whole rather than from the box itself; empty when every figure was read from its box.
- `forms_w2` (list of W2ReportData_FormW2, required) — Every distinct statement the upload prints, one per employer, in document order; the first is the one at the top level.
- `taxpayer_name` (string, required, nullable) — The employee's name printed in box e of the first statement.
- `ssn_last4` (string, required, nullable) — The last four digits of the employee's social security number printed in box a of the first statement.

### W2ReportData_W2Metadata

How the file was read.

- `form_key` (string, required) — The form's key, w2.
- `detected_year` (integer, required, nullable) — The tax year the form was printed for.
- `parent_form` (string, required, nullable) — Null on a form uploaded on its own.
- `faces_read` (integer, required) — The number of statement faces printed across the upload, every copy counted, on a Form W-2.
- `copies_collapsed` (integer, required) — The number of printed faces that repeat another face of the same statement, on a Form W-2.
- `w2_count` (integer, required) — The number of distinct statements the upload prints, one per employer, on a Form W-2.
- `base_page` (integer, optional) — The page of the uploaded file the form starts on, counting from zero.
- `layout` (enum, optional) — The printing of the first statement on a Form W-2: irs_1up, the IRS form with one statement per page; irs_4up, the four-per-page sheet; substitute, a payroll or preparer print.
  - Allowed values: `irs_1up`, `irs_4up`, `substitute`
- `rescued_fields` (list of string, optional) — The boxes whose figure the page-level read supplied rather than the box itself, on a Form W-2; absent when every figure was read from its box.
- `standalone` (boolean, optional) — True on a form uploaded on its own.

### W2ReportDataDepreciationReports

Always null on a Form W-2.

### PaystubReportData_PaystubLine

One earnings or deductions row of a paystub.

- `description` (string, required, nullable) — The row's label as stated.
- `kind` (string, required, nullable) — The row's standard kind when the payroll provider states one, for example `regular_pay`, `overtime` or `bonus`; null otherwise.
- `hours` (string, required, nullable) — Hours for the row in the pay period, as a decimal string, when stated.
- `rate` (string, required, nullable) — The hourly rate for the row, when stated.
- `current_amount` (string, required, nullable) — The row's amount for the pay period.
- `ytd_amount` (string, required, nullable) — The row's amount for the year to date.

### PaystubReportData_PaystubDistribution

One deposit of the net pay.

- `bank_name` (string, required, nullable) — The receiving bank's name.
- `account_name` (string, required, nullable) — The receiving account's name.
- `account_type` (string, required, nullable) — The receiving account's type, for example checking or savings.
- `account_last4` (string, required, nullable) — The last four digits of the receiving account number; the rest of the number is never served.
- `amount` (string, required, nullable) — The amount deposited to the account.

### PaystubReportData_PaystubSignal

A note about the paystub.

- `severity` (enum, required) — How much weight the note carries: info or warn.
  - Allowed values: `info`, `warn`
- `code` (string, required) — The note's identifier.
- `detail` (string, required) — The note in words.

### BalanceSheetReportData_BalanceSheetRow

One printed line, with the lines nested under it when it heads a section.

- `label` (string, required) — The line's name: its printed label without the figures and detail the label states, which are in caption, footnote and components.
- `values` (list of string, required, nullable) — The line's figure per period; null where the column is blank, and null as a whole for a heading with no figures.
- `path` (string, required) — The line's address in the tree.
- `children` (list of BalanceSheetReportData_BalanceSheetRow, required) — The lines nested under this one.
- `caption` (string, optional) — The line's label exactly as printed, present when it states more than the name.
- `footnote` (string, optional) — What the printed label states beyond the line's name, such as a par value or share counts, as printed.
- `components` (list of BalanceSheetReportData_BalanceSheetRowComponent, optional) — Present when the printed label states an amount the line is net of: the line before that deduction, then the deduction.

### BalanceSheetReportData_BalanceSheetPeriod

One period column.

- `label` (string, required, nullable) — The column header as printed; null when the column prints none.
- `as_of` (string, required, nullable) — The period's as-of date, when the header states one.
- `inferred` (boolean, required) — True when the document prints no header for the period.

### BalanceSheetReportData_BalanceSheetSection

One section of the statement.

- `name` (string, required) — The section heading as printed.
- `side` (enum, required) — One of assets, liabilities or equity.
  - Allowed values: `assets`, `liabilities`, `equity`
- `items` (list of BalanceSheetReportData_BalanceSheetSectionItem, required) — The section's lines in print order.

### BalanceSheetReportData_CanonicalAnnotation

The statement's printed lines mapped onto standard line names, with the footing of each printed subtotal.

- `schema_version` (string, required, nullable) — Version of the standard line vocabulary the names come from.
- `statement` (string, required) — Which statement vocabulary applies: balance_sheet, income_statement or cash_flow.
- `rows` (list of BalanceSheetReportData_CanonicalRow, required) — One entry per printed line, in print order.
- `blocks` (list of BalanceSheetReportData_CanonicalBlock, required) — One entry per printed subtotal and the lines that foot into it.
- `gates` (BalanceSheetReportData_CanonicalGates, required) — Summary verdicts over the whole statement.
- `entity_signal` (string, required, nullable) — A note about the entity the statement belongs to, when the line names carry one.

### BalanceSheetReportData_PacketProvenance

Where a statement sat in the financial statement packet it arrived in, when it arrived in one.

- `section_index` (integer, required) — Position of the statement among the packet's statements, counting from zero.
- `pages` (list of integer, required) — First and last page of the statement within the packet, counting from one.
- `letter_date` (string, required, nullable) — Date of the accountant's letter that accompanied the packet, when the letter printed one.
- `letter_page` (integer, required, nullable) — Page of the packet the accountant's letter is on, when the packet carries one.
- `page_list` (list of integer, optional) — Every page of the packet the statement is printed on, counting from one, when they are not one unbroken run; absent otherwise.

### BalanceSheetReportData_BalanceSheetReceivableAllowance

The allowance a receivables line states in its own caption.

- `label` (string, required) — The receivables line's label as printed.
- `path` (string, required) — The receivables line's address in the tree.
- `allowance_label` (string, required) — The allowance in words, for example Less allowance for credit losses.
- `values` (list of string, required) — The allowance per period; null where the caption states none for the period.

### BalanceSheetReportData_StatementSignal

A note about the statement's reporting period.

- `severity` (enum, required) — How much weight the note carries: info or warn.
  - Allowed values: `info`, `warn`
- `code` (enum, required) — The note's identifier.
  - Allowed values: `coverage_unreadable`, `no_reporting_period`, `year_from_file_metadata`, `year_from_filename`, `year_from_page_image`, `year_matches_print_stamp`
- `detail` (string, required) — The note in words.

### BalanceSheetReportData_StatementSummary

The statement's headline figures: one block of rows per section, titled by the period the rows cover.

- `title` (string, required) — The period the rows cover, as a heading.
- `sections` (list of BalanceSheetReportData_StatementSummarySection, required) — The row blocks, in display order.

### BalanceSheetReportData_BalanceSheetTotals

The headline totals per period, with the totals the balance check used and whether each is printed.

- `TOTAL_ASSETS` (list of string, optional, nullable) — Total assets per period as printed; null when the statement prints no such line.
- `TOTAL_LIABILITIES` (list of string, optional, nullable) — Total liabilities per period as printed; null when the statement prints no such line.
- `TOTAL_MEZZANINE_EQUITY` (list of string, optional, nullable) — Mezzanine equity per period as printed: the one line the statement prints between its liabilities and its equity, or the total it prints over several such lines; null when it prints several lines and no total over them.
- `TOTAL_EQUITY` (list of string, optional, nullable) — Total equity per period as printed; null when the statement prints no such line.
- `TOTAL_LIABILITIES_AND_EQUITY` (list of string, optional, nullable) — Total liabilities and equity per period as printed; null when the statement prints no such line.
- `effective` (BalanceSheetReportData_BalanceSheetEffectiveTotals, optional) — The totals the balance check used.
- `src` (BalanceSheetReportData_BalanceSheetTotalSources, optional) — Whether each total the balance check used is printed.

### ProfitLossStatementReportData_ProfitLossLine

One printed line.

- `label` (string, required) — The line's label as printed.
- `depth` (integer, required) — Indentation level of the line, counting from zero.
- `values` (list of string, required) — The line's figure per column; null where the column is blank.
- `component_values` (list of string, optional) — The line's figure in each component column, in the order of component_columns; null where the column is blank.

### ProfitLossStatementReportData_ProfitLossPeriod

One figure column.

- `label` (string, required, nullable) — The column header as printed.
- `coverage` (string, required, nullable) — The span of time the column covers.
- `start` (string, optional, nullable) — First day of the period, when the header states one.
- `end` (string, optional, nullable) — Last day of the period, when the header states one.
- `rollup` (boolean, optional) — True when the column totals the other columns.
- `consolidating_columns` (integer, optional) — On a consolidating statement, the number of entity columns the total spans.

### ProfitLossStatementReportData_CanonicalAnnotation

The statement's printed lines mapped onto standard line names, with the footing of each printed subtotal.

- `schema_version` (string, required, nullable) — Version of the standard line vocabulary the names come from.
- `statement` (string, required) — Which statement vocabulary applies: balance_sheet, income_statement or cash_flow.
- `rows` (list of ProfitLossStatementReportData_CanonicalRow, required) — One entry per printed line, in print order.
- `blocks` (list of ProfitLossStatementReportData_CanonicalBlock, required) — One entry per printed subtotal and the lines that foot into it.
- `gates` (ProfitLossStatementReportData_CanonicalGates, required) — Summary verdicts over the whole statement.
- `entity_signal` (string, required, nullable) — A note about the entity the statement belongs to, when the line names carry one.

### ProfitLossStatementReportData_ProfitLossComponentColumn

One column printed as a part of a total column.

- `label` (string, required, nullable) — The column header as printed; null when the column prints none.
- `total_column` (integer, required) — Position among the statement's period columns of the total the component is a part of, counting from zero.
- `after_total` (boolean, optional) — True when the column is printed to the right of its total; absent otherwise.

### ProfitLossStatementReportData_ProfitLossEntitySplit

The statement's place on a page whose columns are separate companies.

- `role` (enum, required) — `total` on the statement of the page's total column, `member` on the statement of one company's column.
  - Allowed values: `total`, `member`
- `members` (list of string, optional) — On the total's statement, the names of the companies whose columns the page prints.
- `total` (string, optional, nullable) — On a member's statement, the entity the page's total column is for, or null when the page prints no total.

### ProfitLossStatementReportData_PacketProvenance

Where a statement sat in the financial statement packet it arrived in, when it arrived in one.

- `section_index` (integer, required) — Position of the statement among the packet's statements, counting from zero.
- `pages` (list of integer, required) — First and last page of the statement within the packet, counting from one.
- `letter_date` (string, required, nullable) — Date of the accountant's letter that accompanied the packet, when the letter printed one.
- `letter_page` (integer, required, nullable) — Page of the packet the accountant's letter is on, when the packet carries one.
- `page_list` (list of integer, optional) — Every page of the packet the statement is printed on, counting from one, when they are not one unbroken run; absent otherwise.

### ProfitLossStatementReportData_ProfitLossPerShare

The per-share block under the bottom line.

- `rows` (list of ProfitLossStatementReportData_ProfitLossPerShareRow, required) — One row per printed per-share or share-count line, in print order.
- `share_unit` (string, required) — The unit the share counts were printed in (ones, thousands, millions); the values are already whole shares.

### ProfitLossStatementReportData_StatementSignal

A note about the statement's reporting period.

- `severity` (enum, required) — How much weight the note carries: info or warn.
  - Allowed values: `info`, `warn`
- `code` (enum, required) — The note's identifier.
  - Allowed values: `coverage_unreadable`, `interest_netted_with_other`, `line_enters_against_its_name`, `no_reporting_period`, `year_from_file_metadata`, `year_from_filename`, `year_from_page_image`, `year_matches_print_stamp`
- `detail` (string, required) — The note in words.

### ProfitLossStatementReportData_StatementSummary

The statement's headline figures: one block of rows per section, titled by the period the rows cover.

- `title` (string, required) — The period the rows cover, as a heading.
- `sections` (list of ProfitLossStatementReportData_StatementSummarySection, required) — The row blocks, in display order.

### ProfitLossStatementReportData_ProfitLossSupplemental

The rows printed under the bottom line besides the per-share block.

- `rows` (list of ProfitLossStatementReportData_ProfitLossSupplementalRow, required) — One row per printed line, in print order.

### CashFlowStatementReportData_CashFlowTotal

A printed total line.

- `label` (string, required) — The line's label as printed.
- `values` (list of string, required) — The line's figure per column; null where the column is blank.

### CashFlowStatementReportData_CashFlowLine

One printed line.

- `label` (string, required) — The line's label as printed.
- `account` (string, required, nullable) — The account number printed beside the line, when any.
- `subgroup` (string, required, nullable) — The sub-heading the line sits under, when any.
- `values` (list of string, required) — The line's figure per column; null where the column is blank.
- `subtotal` (boolean, optional) — True on a total printed among the lines that is not one of the amounts added: a group total inside its section, or a restated total or an intermediate net change among the reconciling rows. Absent otherwise.
- `addend` (boolean, optional) — On a discontinued operations row, true when the row is added to the net change in cash beside the discontinued operations total; absent on a row that total already stands for.

### CashFlowStatementReportData_CashFlowPeriod

One figure column.

- `label` (string, required, nullable) — The column header as printed.
- `range` (string, required, nullable) — The period as printed, when the header prints a range.
- `as_of` (string, required, nullable) — The period's end date as printed.
- `start` (string, optional, nullable) — First day of the period, when the header states one.
- `end` (string, optional, nullable) — Last day of the period, when the header states one.
- `column_role` (enum, optional) — On a restatement table, which version of the figures the column carries: `previously_reported`, `adjustment` or `restated`.
  - Allowed values: `previously_reported`, `adjustment`, `restated`
- `consolidating_columns` (integer, optional) — On a consolidating statement, the number of entity columns printed under the period.

### CashFlowStatementReportData_CanonicalAnnotation

The statement's printed lines mapped onto standard line names, with the footing of each printed subtotal.

- `schema_version` (string, required, nullable) — Version of the standard line vocabulary the names come from.
- `statement` (string, required) — Which statement vocabulary applies: balance_sheet, income_statement or cash_flow.
- `rows` (list of CashFlowStatementReportData_CanonicalRow, required) — One entry per printed line, in print order.
- `blocks` (list of CashFlowStatementReportData_CanonicalBlock, required) — One entry per printed subtotal and the lines that foot into it.
- `gates` (CashFlowStatementReportData_CanonicalGates, required) — Summary verdicts over the whole statement.
- `entity_signal` (string, required, nullable) — A note about the entity the statement belongs to, when the line names carry one.

### CashFlowStatementReportData_PacketProvenance

Where a statement sat in the financial statement packet it arrived in, when it arrived in one.

- `section_index` (integer, required) — Position of the statement among the packet's statements, counting from zero.
- `pages` (list of integer, required) — First and last page of the statement within the packet, counting from one.
- `letter_date` (string, required, nullable) — Date of the accountant's letter that accompanied the packet, when the letter printed one.
- `letter_page` (integer, required, nullable) — Page of the packet the accountant's letter is on, when the packet carries one.
- `page_list` (list of integer, optional) — Every page of the packet the statement is printed on, counting from one, when they are not one unbroken run; absent otherwise.

### CashFlowStatementReportData_StatementSignal

A note about the statement's reporting period.

- `severity` (enum, required) — How much weight the note carries: info or warn.
  - Allowed values: `info`, `warn`
- `code` (enum, required) — The note's identifier.
  - Allowed values: `coverage_unreadable`, `no_reporting_period`, `year_from_file_metadata`, `year_from_filename`, `year_from_page_image`, `year_matches_print_stamp`
- `detail` (string, required) — The note in words.

### EquityStatementReportData_EquityColumn

One figure column.

- `label` (string, required, nullable) — The column heading as printed.
- `group` (string, required, nullable) — The heading printed over a group of columns, such as a class of stock, when the column sits under one.
- `kind` (enum, required) — What the column holds: `money` for an equity component in dollars, `total` for the total of the components, `shares` for a share count, `par` for a par value per share as printed, `period` for a period's figures on a vertical statement.
  - Allowed values: `money`, `total`, `shares`, `par`, `period`

### EquityStatementReportData_EquityPeriod

One period the statement covers.

- `label` (string, required, nullable) — The period as printed, such as a year.
- `start` (string, required, nullable) — First day of the period, when the statement states one.
- `end` (string, required, nullable) — Last day of the period, when the statement states one.

### EquityStatementReportData_EquityRow

One printed row.

- `kind` (enum, required) — `balance` for a balance at a date, `movement` for a change during a period, `header` for a caption that prints no figures, `note` for a sentence printed among the rows.
  - Allowed values: `balance`, `movement`, `header`, `note`
- `label` (string, required) — The row's caption as printed.
- `date` (string, required, nullable) — The date a balance row states, when it states one; null on every other row.
- `block` (integer, required, nullable) — The roll-forward the row belongs to, numbered from zero in print order: an opening balance, the period's movements and the closing balance share one number. Null on a row outside every roll-forward.
- `opens` (integer, required, nullable) — On a balance row, the number of the roll-forward it opens; null otherwise.
- `closes` (integer, required, nullable) — On a balance row, the number of the roll-forward it closes; null otherwise.
- `component` (string, required, nullable) — On a vertical statement, the equity component the row belongs to, as its caption prints it; null otherwise.
- `values` (list of string, required) — The row's figure per column, in `columns` order; null where the cell is blank. A cell printed as money is a decimal string with exactly two decimals, in dollars, except under a par value column, which keeps its printed figure. A share count is a whole number as text, and a printed dash reads `0`.
- `printed` (list of enum, required) — How each cell is printed, in `columns` order: `money`, `shares` for a share count, `dash` for a printed dash, `blank` for an empty cell.
  - Allowed values: `money`, `dash`, `shares`, `blank`

### EquityStatementReportData_PacketProvenance

Where a statement sat in the financial statement packet it arrived in, when it arrived in one.

- `section_index` (integer, required) — Position of the statement among the packet's statements, counting from zero.
- `pages` (list of integer, required) — First and last page of the statement within the packet, counting from one.
- `letter_date` (string, required, nullable) — Date of the accountant's letter that accompanied the packet, when the letter printed one.
- `letter_page` (integer, required, nullable) — Page of the packet the accountant's letter is on, when the packet carries one.
- `page_list` (list of integer, optional) — Every page of the packet the statement is printed on, counting from one, when they are not one unbroken run; absent otherwise.

### EquityStatementReportData_StatementSignal

A check of the statement that does not hold, or a note about its reporting period.

- `severity` (enum, required) — How much weight the note carries: info or warn.
  - Allowed values: `info`, `warn`
- `code` (enum, required) — The note's identifier.
  - Allowed values: `coverage_unreadable`, `equity_rollforward_mismatch`, `equity_row_footing_mismatch`, `no_reporting_period`, `year_from_file_metadata`, `year_from_filename`, `year_from_page_image`, `year_matches_print_stamp`
- `detail` (string, required) — The note in words.

### ComprehensiveIncomeStatementReportData_ComprehensiveIncomeLine

One printed line.

- `label` (string, required) — The line's caption as printed.
- `kind` (enum, required) — `net` for net income, `ni_adjust` for a line that adjusts net income before the items (a preferred dividend, the noncontrolling interests' share of net income), `caption` for a heading that prints no figures, `item` for an other comprehensive income item, `subtotal` for a subtotal of items, `total_oci` for total other comprehensive income, `ci` for comprehensive income, `nci` for the noncontrolling interests' share of comprehensive income, `ci_parent` for the company's share.
  - Allowed values: `net`, `ni_adjust`, `caption`, `item`, `subtotal`, `total_oci`, `ci`, `nci`, `ci_parent`
- `values` (list of string, required) — The line's figure per column; null where the cell is blank.
- `printed` (list of enum, required) — How each cell is printed, per column: `money`, `dash` for a printed dash, `blank` for an empty cell.
  - Allowed values: `money`, `dash`, `blank`

### ComprehensiveIncomeStatementReportData_ComprehensiveIncomePeriod

One figure column.

- `label` (string, required, nullable) — The column heading as printed.
- `coverage` (string, required, nullable) — The span the column covers as printed, such as a year ended date, when the statement prints one.
- `start` (string, required, nullable) — First day of the period the column covers, when it can be dated.
- `end` (string, required, nullable) — Last day of the period the column covers, when it can be dated.

### ComprehensiveIncomeStatementReportData_PacketProvenance

Where a statement sat in the financial statement packet it arrived in, when it arrived in one.

- `section_index` (integer, required) — Position of the statement among the packet's statements, counting from zero.
- `pages` (list of integer, required) — First and last page of the statement within the packet, counting from one.
- `letter_date` (string, required, nullable) — Date of the accountant's letter that accompanied the packet, when the letter printed one.
- `letter_page` (integer, required, nullable) — Page of the packet the accountant's letter is on, when the packet carries one.
- `page_list` (list of integer, optional) — Every page of the packet the statement is printed on, counting from one, when they are not one unbroken run; absent otherwise.

### ComprehensiveIncomeStatementReportData_StatementSignal

A check of the statement that does not hold, or a note about its reporting period.

- `severity` (enum, required) — How much weight the note carries: info or warn.
  - Allowed values: `info`, `warn`
- `code` (enum, required) — The note's identifier.
  - Allowed values: `coverage_unreadable`, `no_reporting_period`, `oci_ci_identity_mismatch`, `oci_nci_identity_mismatch`, `oci_total_identity_mismatch`, `year_from_file_metadata`, `year_from_filename`, `year_from_page_image`, `year_matches_print_stamp`
- `detail` (string, required) — The note in words.

### InvestmentIncomeStatementReportData_InvestmentIncomeLine

One printed line.

- `label` (string, required) — The line's caption as printed; empty on an unlabelled subtotal.
- `kind` (enum, required) — `component` for an investment income component, `expense` for an investment expense, `gross` for gross investment income, `net` for net investment income, `subtotal` for a line that prints the running total of the lines above it, `caption` for a heading that prints no figures.
  - Allowed values: `component`, `expense`, `gross`, `net`, `subtotal`, `caption`
- `values` (list of string, required) — The line's figure per column; null where the cell is blank.
- `printed` (list of enum, required) — How each cell is printed, per column: `money`, `dash` for a printed dash, `blank` for an empty cell.
  - Allowed values: `money`, `dash`, `blank`

### InvestmentIncomeStatementReportData_InvestmentIncomePeriod

One figure column.

- `label` (string, required, nullable) — The column heading as printed.
- `coverage` (string, required, nullable) — The span the column covers as printed, such as a year ended date, when the table prints one.
- `start` (string, required, nullable) — First day of the period the column covers, when it can be dated.
- `end` (string, required, nullable) — Last day of the period the column covers, when it can be dated.

### InvestmentIncomeStatementReportData_PacketProvenance

Where a statement sat in the financial statement packet it arrived in, when it arrived in one.

- `section_index` (integer, required) — Position of the statement among the packet's statements, counting from zero.
- `pages` (list of integer, required) — First and last page of the statement within the packet, counting from one.
- `letter_date` (string, required, nullable) — Date of the accountant's letter that accompanied the packet, when the letter printed one.
- `letter_page` (integer, required, nullable) — Page of the packet the accountant's letter is on, when the packet carries one.
- `page_list` (list of integer, optional) — Every page of the packet the statement is printed on, counting from one, when they are not one unbroken run; absent otherwise.

### InvestmentIncomeStatementReportData_StatementSignal

A check of the table that does not hold, or a note about its reporting period.

- `severity` (enum, required) — How much weight the note carries: info or warn.
  - Allowed values: `info`, `warn`
- `code` (enum, required) — The note's identifier.
  - Allowed values: `coverage_unreadable`, `nii_gross_identity_mismatch`, `nii_net_identity_mismatch`, `no_reporting_period`, `year_from_file_metadata`, `year_from_filename`, `year_from_page_image`, `year_matches_print_stamp`
- `detail` (string, required) — The note in words.

### SupportingTableReportData_SupportingTableColumn

One figure column.

- `label` (string, required, nullable) — The column heading as printed; null when the column prints none.
- `group` (string, required, nullable) — The heading printed over a run of columns, when the column sits under one; null otherwise.
- `kind` (string, required, nullable) — What the column holds, when it is known, such as `money`, `percent` or `total`; null otherwise.
- `period_start` (string, required, nullable) — First day of the period the column covers, when the table states one; null otherwise.
- `period_end` (string, required, nullable) — Last day of the period the column covers, or the date the column is stated as of, when the table states one; for a head that prints only a year, the filer's fiscal year end in that year when the filing's statements state it; null otherwise.

### SupportingTableReportData_SupportingTableLine

One printed row.

- `label` (string, required, nullable) — The row's label as printed; an empty string when the row prints figures with no label, null when none is known.
- `kind` (string, required, nullable) — What the row is, as the table prints it, such as `item`, `total` or `caption`; null when it is not known.
- `indent` (integer, required, nullable) — How far the label is indented under the row above, counting from zero; null when it is not known.
- `values` (list of string, required) — The row's cell per column, in `columns` order; null where the cell is blank. A cell `kinds` calls money is a decimal string with exactly two decimals, in dollars, and a printed dash in it reads `0.00`; every other cell keeps its printed figure, such as a percentage without its percent sign, or its printed text.
- `printed` (list of enum, required) — How each cell is printed, in `columns` order: `money` for a figure, `dash` for a printed dash, `blank` for an empty cell, `text` for words.
  - Allowed values: `money`, `dash`, `blank`, `text`
- `kinds` (list of enum, required) — What each cell holds, in `columns` order: `money`, `percent`, `count`, `per_share`, `price` or `text`; null when it is not known.
  - Allowed values: `money`, `percent`, `count`, `per_share`, `price`, `text`

### SupportingTableReportData_SupportingTableSignal

A check of the table that does not hold, or a note about its reporting period.

- `severity` (enum, required) — How much weight the note carries: info or warn.
  - Allowed values: `info`, `warn`
- `code` (enum, required) — The note's identifier.
  - Allowed values: `coverage_unreadable`, `debt_maturity_class_total_mismatch`, `debt_maturity_total_mismatch`, `debt_total_mismatch`, `eps_quotient_mismatch`, `interest_other_total_mismatch`, `lease_class_total_mismatch`, `lease_payments_total_mismatch`, `lease_present_value_mismatch`, `lease_split_mismatch`, `no_reporting_period`, `notes_cross_foot_mismatch`, `notes_cross_table_mismatch`, `notes_percent_mismatch`, `notes_rollforward_mismatch`, `notes_total_mismatch`, `year_from_file_metadata`, `year_from_filename`, `year_from_page_image`, `year_matches_print_stamp`
- `detail` (string, required) — The note in words.

### BankStatementReportData_BankStatementAccount

The account the statement is for.

- `holder` (string, required, nullable) — Name of the account holder as printed.
- `institution` (string, required, nullable) — Name of the bank as printed.
- `accountNumberLast4` (string, required, nullable) — The last four digits of the account number.
- `type` (string, required, nullable) — The account type as printed, for example checking or savings.
- `linkedAccountLast4` (list of string, optional) — Last four digits of the other accounts that appear on a statement covering several accounts. Empty for a statement of one account.

### BankStatementReportData_BankDailyBalance

One day of the statement period.

- `date` (string, required) — The day.
- `closing` (string, required, nullable) — Closing balance for the day; null when the period's opening balance is null.
- `opening` (string, optional, nullable) — Opening balance for the day; null when the period's opening balance is null.
- `deposits` (string, optional, nullable) — Total deposits for the day.
- `withdrawals` (string, optional, nullable) — Total withdrawals for the day.
- `transactionCount` (integer, optional) — Number of transactions posted that day.
- `low_cash` (boolean, optional) — True when the day's closing balance is low relative to the statement's other balances.

### BankStatementReportData_BankStatementMetrics

Totals over the statement period.

- `totalDeposits` (string, required, nullable) — Total deposits.
- `totalWithdrawals` (string, required, nullable) — Total withdrawals.
- `netCashFlow` (string, required, nullable) — Deposits less withdrawals.
- `transactionCount` (integer, required) — Number of transactions.
- `avgDailyBalance` (string, optional, nullable) — Average of the daily closing balances; null when the period's opening balance is null.
- `minDailyBalance` (string, optional, nullable) — Lowest daily closing balance; null when the period's opening balance is null.
- `maxDailyBalance` (string, optional, nullable) — Highest daily closing balance; null when the period's opening balance is null.
- `daysNegative` (integer, optional, nullable) — Number of days the closing balance was below zero; null when the period's opening balance is null.

### BankStatementReportData_BankStatementPeriod

The statement period and its opening and closing balances.

- `start` (string, required, nullable) — First day of the statement period.
- `end` (string, required, nullable) — Last day of the statement period.
- `openingBalance` (string, required, nullable) — Balance at the start of the period, as printed; for a statement that prints none, the linked account's current balance carried back through its own transactions.
- `closingBalance` (string, required, nullable) — Balance at the end of the period, as printed; for a statement that prints none, the linked account's current balance carried back through its own transactions.

### BankStatementReportData_BankTransaction

One posted transaction.

- `date` (string, required) — Posting date.
- `description` (string, required) — The description as printed.
- `amount` (string, required) — Signed amount: deposits positive, withdrawals negative.
- `checkNumber` (string, optional, nullable) — Check number, when the transaction is a check.
- `transactionType` (string, optional) — The transaction's kind: check, ach, wire, transfer, debit_card, fee, interest, atm, deposit or other.
- `lineOrder` (integer, optional) — Position of the transaction on the statement, in posting order.
- `accountLast4` (string, optional) — Last four digits of the account the transaction posted to, on a feed that carries several accounts.

### BankStatementReportData_UnderwritingFlag

A note about events in the transactions: fees, returned items, overdrafts.

- `category` (string, required) — The note's category.
- `severity` (enum, required) — One of high, medium or low.
  - Allowed values: `high`, `medium`, `low`
- `code` (string, required) — The note's identifier.
- `message_customer` (string, required) — The note in words.
- `field_ref` (string, required, nullable) — The field the note refers to, when it refers to one.
- `detail` (BankStatementReportData_UnderwritingFlagDetail, optional) — The transactions behind the note.

### W2ReportData_W2Box12Item

One box 12 entry of a Form W-2.

- `code` (string, required, nullable) — The one or two letter code printed beside the amount.
- `amount` (string, required, nullable) — The amount printed for the code.
- `slot` (string, optional, nullable) — The letter of the box 12 line the entry is printed on, a through d, when the form letters its box 12 lines; null when the form prints one box 12 caption.

### W2ReportData_W2Box14Item

One box 14 entry of a Form W-2.

- `label` (string, required, nullable) — The label the employer printed.
- `amount` (string, required, nullable) — The amount printed beside the label.

### W2ReportData_W2StateRow

One state row of a Form W-2, boxes 15 through 17.

- `state` (string, required, nullable) — Box 15, the state.
- `employer_state_id` (string, required, nullable) — Box 15, employer's state ID number.
- `box_16_state_wages` (string, required, nullable) — Box 16, state wages, tips, etc.
- `box_17_state_tax` (string, required, nullable) — Box 17, state income tax.

### W2ReportData_W2LocalRow

One local row of a Form W-2, boxes 18 through 20.

- `box_18_local_wages` (string, required, nullable) — Box 18, local wages, tips, etc.
- `box_19_local_tax` (string, required, nullable) — Box 19, local income tax.
- `box_20_locality` (string, required, nullable) — Box 20, locality name.

### W2ReportData_FormW2

Form W-2, Wage and Tax Statement, one employer's statement of one employee's wages and withholding for one year.

- `copy` (string, required, nullable) — The copy letter printed on the form (A, B, C, D, 1 or 2), when the print carries one.
- `tax_year` (integer, required, nullable) — The tax year printed beside the form title.
- `control_number` (string, required, nullable) — Box d, control number, as printed.
- `employer_ein` (string, required, nullable) — Box b, employer identification number, masked to the last four digits.
- `employer_name` (string, required, nullable) — Box c, the employer's name.
- `employer_address` (string, required, nullable) — Box c, the employer's address below the name, on one line.
- `employee_name` (string, required, nullable) — Box e, the employee's first name, initial and last name, as printed.
- `employee_ssn_last4` (string, required, nullable) — Box a, the last four digits of the employee's social security number; the rest of the number is never served.
- `box_1_wages` (string, required, nullable) — Box 1, wages, tips, other compensation.
- `box_2_federal_tax_withheld` (string, required, nullable) — Box 2, federal income tax withheld.
- `box_3_ss_wages` (string, required, nullable) — Box 3, social security wages.
- `box_4_ss_tax_withheld` (string, required, nullable) — Box 4, social security tax withheld.
- `box_5_medicare_wages` (string, required, nullable) — Box 5, Medicare wages and tips.
- `box_6_medicare_tax_withheld` (string, required, nullable) — Box 6, Medicare tax withheld.
- `box_7_ss_tips` (string, required, nullable) — Box 7, social security tips.
- `box_8_allocated_tips` (string, required, nullable) — Box 8, allocated tips.
- `box_10_dependent_care_benefits` (string, required, nullable) — Box 10, dependent care benefits.
- `box_11_nonqualified_plans` (string, required, nullable) — Box 11, nonqualified plans.
- `box_12` (list of W2ReportData_W2Box12Item, required) — Box 12, one entry per printed code and amount, 12a through 12d.
- `box_13_statutory_employee` (boolean, required, nullable) — Box 13, the statutory employee box, true when checked.
- `box_13_retirement_plan` (boolean, required, nullable) — Box 13, the retirement plan box, true when checked.
- `box_13_third_party_sick_pay` (boolean, required, nullable) — Box 13, the third-party sick pay box, true when checked.
- `box_14_other` (list of W2ReportData_W2Box14Item, required) — Box 14, other, one entry per printed label and amount.
- `box_14b_tipped_occupation_codes` (list of string, required) — Box 14b, Treasury tipped occupation codes, on a form that prints the box.
- `state_rows` (list of W2ReportData_W2StateRow, required) — Boxes 15 through 17, one row per state.
- `local_rows` (list of W2ReportData_W2LocalRow, required) — Boxes 18 through 20, one row per locality.
- `omb_number` (string, required, nullable) — The OMB number printed on the form, 1545-0008 or 1545-0029.
- `layout` (enum, required) — The printing of the statement: irs_1up, the IRS form with one statement per page; irs_4up, the four-per-page sheet; substitute, a payroll or preparer print.
  - Allowed values: `irs_1up`, `irs_4up`, `substitute`
- `source_pages` (list of integer, required) — The pages of the uploaded file the statement is printed on, counting from one; several when the upload repeats it.
- `rescued_fields` (list of string, required) — The boxes whose figure was read from the page as a whole rather than from the box itself; empty when every figure was read from its box.

### BalanceSheetReportData_BalanceSheetRowComponent

One figure a net line's label states.

- `role` (enum, required) — `gross` for the line before the deduction (the line's figure and the deduction added together), `deduction` for the amount the label states.
  - Allowed values: `gross`, `deduction`
- `label` (string, required) — The figure's name.
- `values` (list of string, required) — The figure per period; null where the label states none for the period.

### BalanceSheetReportData_BalanceSheetSectionItem

One line of a section.

- `label` (string, required) — The line's name.
- `value` (string, required, nullable) — The line's figure for the latest period.
- `is_subtotal` (boolean, required) — True when the line is a printed subtotal.

### BalanceSheetReportData_CanonicalRow

One printed line and the standard line name it corresponds to.

- `key` (string, required) — Address of the printed line within the statement.
- `raw_label` (string, required, nullable) — The line's label as printed.
- `concept_id` (string, required, nullable) — The standard line name the printed label corresponds to, or null when it corresponds to none.
- `method` (enum, required) — How closely the printed label matches the standard name: exact, fuzzy, structural, or reconciled when it matches none.
  - Allowed values: `exact`, `fuzzy`, `keyword`, `structural`, `reconciled`
- `block` (string, required, nullable) — The subtotal block the line belongs to, when it belongs to one.
- `parent_concept_id` (string, required, nullable) — The standard name of the subtotal the line foots into, when it foots into one.

### BalanceSheetReportData_CanonicalBlock

A printed subtotal and whether its lines foot into it.

- `id` (string, required) — Address of the subtotal's printed line.
- `parent_concept_id` (string, required, nullable) — The standard name of the subtotal, when it corresponds to one.
- `footing` (string, required) — Whether the lines above the subtotal add up to it: pass, fail or not_applicable.

### BalanceSheetReportData_CanonicalGates

Verdicts over the whole statement.

- `identity` (string, required) — Whether total assets equal total liabilities plus equity on every column: pass, fail or not_applicable.
- `classified_footing` (string, required) — Whether the current and noncurrent subtotals foot: pass, fail or not_applicable.
- `blocks_failed` (integer, required) — Number of printed subtotals whose lines do not add up to them.

### BalanceSheetReportData_StatementSummarySection

A block of headline rows under one heading.

- `key` (string, required) — The block's identifier, for example assets, liabilities or pl.
- `heading` (string, required, nullable) — The block's heading, or null when the block has none.
- `rows` (list of BalanceSheetReportData_StatementSummaryRow, required) — The rows of the block, in display order.

### BalanceSheetReportData_BalanceSheetEffectiveTotals

The totals per period the balance check used: the printed total where the statement prints one, else the total the statement's own figures give. `src` states which.

- `TOTAL_ASSETS` (list of string, optional, nullable) — Total assets per period used by the balance check: the printed total when the statement prints one, else the total its own figures give; null when neither exists.
- `TOTAL_LIABILITIES` (list of string, optional, nullable) — Total liabilities per period used by the balance check: the printed total when the statement prints one, else the total its own figures give; null when neither exists.
- `TOTAL_MEZZANINE_EQUITY` (list of string, optional, nullable) — Mezzanine equity per period used by the balance check: the printed figure when the statement prints one, else the total of the mezzanine lines it prints; null in a period that prints none.
- `TOTAL_EQUITY` (list of string, optional, nullable) — Total equity per period used by the balance check: the printed total when the statement prints one, else the total its own figures give; null when neither exists.
- `TOTAL_LIABILITIES_AND_EQUITY` (list of string, optional, nullable) — Total liabilities and equity per period used by the balance check: the printed total when the statement prints one, else the total its own figures give; null when neither exists.

### BalanceSheetReportData_BalanceSheetTotalSources

Whether each total the balance check used is printed: `printed` or `derived` per total.

- `TOTAL_ASSETS` (string, optional, nullable) — `printed` when the statement prints a total assets line, `derived` otherwise; null when the balance check had no such total.
- `TOTAL_LIABILITIES` (string, optional, nullable) — `printed` when the statement prints a total liabilities line, `derived` otherwise; null when the balance check had no such total.
- `TOTAL_MEZZANINE_EQUITY` (string, optional, nullable) — `printed` when the statement prints its mezzanine equity as one line or as a total over several lines, `derived` when it prints several lines and no total over them.
- `TOTAL_EQUITY` (string, optional, nullable) — `printed` when the statement prints a total equity line, `derived` otherwise; null when the balance check had no such total.
- `TOTAL_LIABILITIES_AND_EQUITY` (string, optional, nullable) — `printed` when the statement prints a total liabilities and equity line, `derived` otherwise; null when the balance check had no such total.

### ProfitLossStatementReportData_CanonicalRow

One printed line and the standard line name it corresponds to.

- `key` (string, required) — Address of the printed line within the statement.
- `raw_label` (string, required, nullable) — The line's label as printed.
- `concept_id` (string, required, nullable) — The standard line name the printed label corresponds to, or null when it corresponds to none.
- `method` (enum, required) — How closely the printed label matches the standard name: exact, fuzzy, structural, or reconciled when it matches none.
  - Allowed values: `exact`, `fuzzy`, `keyword`, `structural`, `reconciled`
- `block` (string, required, nullable) — The subtotal block the line belongs to, when it belongs to one.
- `parent_concept_id` (string, required, nullable) — The standard name of the subtotal the line foots into, when it foots into one.

### ProfitLossStatementReportData_CanonicalBlock

A printed subtotal and whether its lines foot into it.

- `id` (string, required) — Address of the subtotal's printed line.
- `parent_concept_id` (string, required, nullable) — The standard name of the subtotal, when it corresponds to one.
- `footing` (string, required) — Whether the lines above the subtotal add up to it: pass, fail or not_applicable.

### ProfitLossStatementReportData_CanonicalGates

Verdicts over the whole statement.

- `identity` (string, required) — Whether total assets equal total liabilities plus equity on every column: pass, fail or not_applicable.
- `classified_footing` (string, required) — Whether the current and noncurrent subtotals foot: pass, fail or not_applicable.
- `blocks_failed` (integer, required) — Number of printed subtotals whose lines do not add up to them.

### ProfitLossStatementReportData_ProfitLossPerShareRow

One per-share line as printed.

- `kind` (enum, required) — `eps` for a per-share figure (dollars per share to the cent, as printed), `shares` for a share count (whole shares).
  - Allowed values: `eps`, `shares`
- `basis` (enum, required) — `basic`, `diluted`, `basic_and_diluted`, or empty when the line states neither.
  - Allowed values: `basic`, `diluted`, `basic_and_diluted`, ``
- `label` (string, required) — The line's printed caption.
- `values` (list of string, required) — One value per figure column, as strings; null where the column prints none.

### ProfitLossStatementReportData_StatementSummarySection

A block of headline rows under one heading.

- `key` (string, required) — The block's identifier, for example assets, liabilities or pl.
- `heading` (string, required, nullable) — The block's heading, or null when the block has none.
- `rows` (list of ProfitLossStatementReportData_StatementSummaryRow, required) — The rows of the block, in display order.

### ProfitLossStatementReportData_ProfitLossSupplementalRow

One line printed under the bottom line.

- `kind` (enum, required) — What the line belongs to: `oci` for other comprehensive income, `retained_earnings` for a retained earnings or equity roll-forward, `supplemental_info` for a supplemental disclosure, `other` for any other line.
  - Allowed values: `oci`, `retained_earnings`, `supplemental_info`, `other`
- `label` (string, required) — The line's printed caption.
- `is_header` (boolean, required) — True when the line heads the lines under it.
- `values` (list of string, required) — The line's figure per column; null where the column is blank.

### CashFlowStatementReportData_CanonicalRow

One printed line and the standard line name it corresponds to.

- `key` (string, required) — Address of the printed line within the statement.
- `raw_label` (string, required, nullable) — The line's label as printed.
- `concept_id` (string, required, nullable) — The standard line name the printed label corresponds to, or null when it corresponds to none.
- `method` (enum, required) — How closely the printed label matches the standard name: exact, fuzzy, structural, or reconciled when it matches none.
  - Allowed values: `exact`, `fuzzy`, `keyword`, `structural`, `reconciled`
- `block` (string, required, nullable) — The subtotal block the line belongs to, when it belongs to one.
- `parent_concept_id` (string, required, nullable) — The standard name of the subtotal the line foots into, when it foots into one.

### CashFlowStatementReportData_CanonicalBlock

A printed subtotal and whether its lines foot into it.

- `id` (string, required) — Address of the subtotal's printed line.
- `parent_concept_id` (string, required, nullable) — The standard name of the subtotal, when it corresponds to one.
- `footing` (string, required) — Whether the lines above the subtotal add up to it: pass, fail or not_applicable.

### CashFlowStatementReportData_CanonicalGates

Verdicts over the whole statement.

- `identity` (string, required) — Whether total assets equal total liabilities plus equity on every column: pass, fail or not_applicable.
- `classified_footing` (string, required) — Whether the current and noncurrent subtotals foot: pass, fail or not_applicable.
- `blocks_failed` (integer, required) — Number of printed subtotals whose lines do not add up to them.

### BankStatementReportData_UnderwritingFlagDetail

The transactions behind a note.

- `count` (integer, optional) — Number of matching transactions.
- `total_amount` (string, optional) — Their amounts added together.
- `matches` (list of BankStatementReportData_UnderwritingFlagMatch, optional) — The matching transactions.

### BalanceSheetReportData_StatementSummaryRow

One headline figure and the printed line it names.

- `key` (string, required) — The row's identifier, for example revenue, cash or total_assets.
- `label` (string, required) — The row's wording as displayed.
- `value` (string, required, nullable) — The figure in dollars, or null when the printed line carries no figure.
- `aggregated` (boolean, optional) — True when the figure combines more than one printed line rather than reading a single printed cell.
- `emphasis` (boolean, optional) — True on a section total or a bottom line.
- `depth` (integer, optional) — Indentation of the row beneath the row above it, counting from zero.
- `pinned` (boolean, optional) — True on a row that stays in view when its section is collapsed.

### ProfitLossStatementReportData_StatementSummaryRow

One headline figure and the printed line it names.

- `key` (string, required) — The row's identifier, for example revenue, cogs or net_profit.
- `label` (string, required) — The row's wording as displayed.
- `value` (string, required, nullable) — The figure in dollars, or null when the printed line carries no figure.
- `aggregated` (boolean, optional) — True when the figure combines more than one printed line rather than reading a single printed cell.
- `emphasis` (boolean, optional) — True on a section total or a bottom line.
- `depth` (integer, optional) — Indentation of the row beneath the row above it, counting from zero.
- `pinned` (boolean, optional) — True on a row that stays in view when its section is collapsed.

### BankStatementReportData_UnderwritingFlagMatch

One transaction behind a note.

- `date` (string, required) — Posting date.
- `description` (string, required) — The description as printed.
- `amount` (string, required) — Signed amount: deposits positive, withdrawals negative.

## Examples

**Response**

```json
{
  "document_id": "string",
  "borrower_id": "string",
  "status": "string",
  "period": {},
  "updated_at": "2024-01-15T09:30:00Z",
  "document_type": "string",
  "loan_id": "string",
  "status_reason": "string",
  "duplicate_of_document_id": "string",
  "extraction_version": 1,
  "created_at": "2024-01-15T09:30:00Z",
  "deleted_at": "2024-01-15T09:30:00Z",
  "report_data": null
}
```

**SDK Code**

```python
import requests

url = "https://api.spreadspace.app/api/documents/document_id"

headers = {"Authorization": "Bearer <token>"}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.spreadspace.app/api/documents/document_id';
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.spreadspace.app/api/documents/document_id"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.spreadspace.app/api/documents/document_id")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://api.spreadspace.app/api/documents/document_id")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.spreadspace.app/api/documents/document_id', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.spreadspace.app/api/documents/document_id");
var request = new RestRequest(Method.GET);
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Authorization": "Bearer <token>"]

let request = NSMutableURLRequest(url: NSURL(string: "https://api.spreadspace.app/api/documents/document_id")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```