> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.spreadspace.app/api/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.spreadspace.app/_mcp/server. # API ## Docs - [Authentication](https://docs.spreadspace.app/api/authentication.md): Bearer API keys identify the caller and select the environment. - [Versioning](https://docs.spreadspace.app/api/versioning.md): Date-stamped API versions, pinned per request or per key. - [Changelog](https://docs.spreadspace.app/api/changelog.md): API updates and official SDK releases. - [Idempotency](https://docs.spreadspace.app/api/idempotency.md): Retry mutating requests safely, without double-applying them. - [Errors](https://docs.spreadspace.app/api/errors.md): One envelope for every error, with stable machine-readable types. - [Rate limits](https://docs.spreadspace.app/api/rate-limits.md): Per-key budgets, standard headers, and how to back off. - [Security and compliance](https://docs.spreadspace.app/api/security.md): How the API protects the documents and figures it handles, and where the supporting documents live. - [Export value conventions](https://docs.spreadspace.app/api/conventions.md): One set of value rules for every export file. Decimals are strings; integers are numbers. - [Provenance and validation](https://docs.spreadspace.app/api/provenance.md): What a value in an extracted document means, and which signals ride beside it. - [Sample documents](https://docs.spreadspace.app/api/sample-documents.md): Downloadable PDFs for exercising test mode. Each one maps to a premade extraction that returns instantly, at no cost. - [Webhooks](https://docs.spreadspace.app/api/webhooks.md): A signed JSON event posted to your endpoint the moment work finishes, so your backend never polls. - [Spreads](https://docs.spreadspace.app/api/spreads.md): Finalized figures as data: the spread lifecycle and the attribute payload. - [Statement mapping](https://docs.spreadspace.app/api/statement-mapping.md): A profit and loss statement or a balance sheet placed on the chart of accounts: the figures a loan origination system posts, recomputable from the body. - [Attribute catalog](https://docs.spreadspace.app/api/attributes-catalog.md): Every fixed figure a finalized spread can carry, with its label, unit and the conditions it appears under. - [Credit memos](https://docs.spreadspace.app/api/credit-memos.md): The underwriting write-up beside the numbers, rendered to a PDF your system can file. - [Loan workbooks](https://docs.spreadspace.app/api/loan-workbooks.md): The loan's spread as two .xlsx workbooks your system can file. - [Exports](https://docs.spreadspace.app/api/exports.md): Line items from many documents, bundled in the background and handed back as one download. - [The Tax Return object](https://docs.spreadspace.app/api/api-reference/tax-returns/object.md): The extracted business or personal tax return record: every field the tax return readers return. - [The W-2 object](https://docs.spreadspace.app/api/api-reference/w2s/object.md): The extracted Form W-2 record: the boxes of each wage and tax statement as the readers return them. - [The paystub object](https://docs.spreadspace.app/api/api-reference/paystubs/object.md): The extracted paystub record: one pay period's gross pay, deductions and net pay, this period and year to date. - [The Personal Financial Statement object](https://docs.spreadspace.app/api/api-reference/personal-financial-statements/object.md): The extracted personal financial statement record: assets, liabilities, and contingent detail as the PFS readers return them. - [The Balance Sheet object](https://docs.spreadspace.app/api/api-reference/balance-sheets/object.md): The extracted balance sheet record: asset, liability, and equity lines as the balance sheet readers return them. - [The Profit Loss Statement object](https://docs.spreadspace.app/api/api-reference/profit-loss-statements/object.md): The extracted profit and loss statement record: revenue through net income as the readers return it. - [The Cash Flow Statement object](https://docs.spreadspace.app/api/api-reference/cash-flow-statements/object.md): The extracted cash flow statement record: operating, investing, and financing sections as the readers return them. - [The Equity Statement object](https://docs.spreadspace.app/api/api-reference/equity-statements/object.md): The extracted statement of changes in equity: its columns, rows and checks as the readers return them. - [The Comprehensive Income Statement object](https://docs.spreadspace.app/api/api-reference/comprehensive-income-statements/object.md): The extracted statement of comprehensive income: its lines, headline figures and checks as the readers return them. - [The Investment Income Statement object](https://docs.spreadspace.app/api/api-reference/investment-income-statements/object.md): The extracted net investment income table: its lines, headline figures and checks as the readers return them. - [The Supporting Table object](https://docs.spreadspace.app/api/api-reference/supporting-tables/object.md): A table from the notes to the financial statements, read as printed: the column heads across, the rows down, one cell per column. - [The Debt Schedule object](https://docs.spreadspace.app/api/api-reference/debt-schedules/object.md): The extracted debt schedule record: one row per obligation with balances, payments, and rates. - [The Bank Statement object](https://docs.spreadspace.app/api/api-reference/bank-statements/object.md): The extracted bank statement record: accounts, transactions, and statement-level analytics for one statement. - [The AR Aging object](https://docs.spreadspace.app/api/api-reference/ar-agings/object.md): The extracted AR aging record: customer balances across aging buckets as of the report date. - [The AP Aging object](https://docs.spreadspace.app/api/api-reference/ap-agings/object.md): The extracted AP aging record: vendor balances across aging buckets as of the report date. - [The Bank Statement Account object](https://docs.spreadspace.app/api/api-reference/bank-statement-accounts/object.md): One bank account rolled up across a borrower's statements, with balances, flows, and per-account analytics. - [The Borrower Owner object](https://docs.spreadspace.app/api/api-reference/borrower-owners/object.md): An owner surfaced from a borrower's documents, with identity, ownership share, and the documents that support it. - [The Profit Loss Mapping object](https://docs.spreadspace.app/api/api-reference/statement-mappings/profit-loss-mapping.md): A profit and loss statement placed on the chart of accounts, with the figure of every section and account per period, the printed lines behind each, and where each figure comes from in the document. - [The Balance Sheet Mapping object](https://docs.spreadspace.app/api/api-reference/statement-mappings/balance-sheet-mapping.md): A balance sheet placed on the chart of accounts, with the figure of every section and account per period, the printed lines behind each, and where each figure comes from in the document. ## API Docs - API > Borrowers [List borrowers](https://docs.spreadspace.app/api/api-reference/borrowers/list.md) - API > Borrowers [Create borrower](https://docs.spreadspace.app/api/api-reference/borrowers/create.md) - API > Borrowers [Get borrower](https://docs.spreadspace.app/api/api-reference/borrowers/get-by-id.md) - API > Borrowers [Delete borrower](https://docs.spreadspace.app/api/api-reference/borrowers/delete.md) - API > Borrowers [Update borrower](https://docs.spreadspace.app/api/api-reference/borrowers/update.md) - API > Borrowers [Complete borrower intake](https://docs.spreadspace.app/api/api-reference/borrowers/complete-intake.md) - API > Borrowers [List borrower jobs](https://docs.spreadspace.app/api/api-reference/borrowers/list-jobs.md) - API > Borrowers [Get job results](https://docs.spreadspace.app/api/api-reference/borrowers/get-job-results.md) - API > Chart of Accounts [Retrieve the chart of accounts](https://docs.spreadspace.app/api/api-reference/chart-of-accounts/get.md) - API > Chart of Accounts [Retrieve the export map](https://docs.spreadspace.app/api/api-reference/chart-of-accounts/get-export-map.md) - API > Chart of Accounts [Replace the export map](https://docs.spreadspace.app/api/api-reference/chart-of-accounts/put-export-map.md) - API > Documents [Generate presigned URL](https://docs.spreadspace.app/api/api-reference/documents/generate-presigned-url.md) - API > Documents [Generate presigned URLs batch](https://docs.spreadspace.app/api/api-reference/documents/generate-presigned-urls-batch.md) - API > Documents [Confirm upload](https://docs.spreadspace.app/api/api-reference/documents/confirm-upload.md) - API > Documents [Confirm uploads](https://docs.spreadspace.app/api/api-reference/documents/confirm-uploads.md) - API > Documents [Get job status](https://docs.spreadspace.app/api/api-reference/documents/get-job-status.md) - API > Documents [Get job status batch](https://docs.spreadspace.app/api/api-reference/documents/get-job-status-batch.md) - API > Documents [Generate download URL](https://docs.spreadspace.app/api/api-reference/documents/generate-download-url.md) - API > Documents [List all documents](https://docs.spreadspace.app/api/api-reference/documents/list.md) - API > Documents [Retrieve a document](https://docs.spreadspace.app/api/api-reference/documents/get.md) - API > Embed [List embed sessions](https://docs.spreadspace.app/api/api-reference/embed/list-sessions.md) - API > Embed [Create embed session](https://docs.spreadspace.app/api/api-reference/embed/create.md) - API > Embed [Get embed session](https://docs.spreadspace.app/api/api-reference/embed/get-session.md) - API > Embed [Revoke embed session](https://docs.spreadspace.app/api/api-reference/embed/revoke.md) - API > Embed [Get iframe handle](https://docs.spreadspace.app/api/api-reference/embed/get-iframe-url.md) - API > Embed [Revoke iframe handle](https://docs.spreadspace.app/api/api-reference/embed/revoke-iframe-url.md) - API > Embed [Create iframe URL](https://docs.spreadspace.app/api/api-reference/embed/create-iframe-url.md) - API > Embed [Create intake](https://docs.spreadspace.app/api/api-reference/embed/create-intake.md) - API > Embed [Confirm intake](https://docs.spreadspace.app/api/api-reference/embed/confirm-intake.md) - API > Extractions [List exports](https://docs.spreadspace.app/api/api-reference/extractions/list.md) - API > Extractions [Create export](https://docs.spreadspace.app/api/api-reference/extractions/create.md) - API > Extractions [Get export](https://docs.spreadspace.app/api/api-reference/extractions/get.md) - API > Extractions [Cancel export](https://docs.spreadspace.app/api/api-reference/extractions/cancel.md) - API > Extractions [Download export](https://docs.spreadspace.app/api/api-reference/extractions/download.md) - API > Extractions [List EBITDA add-back selections](https://docs.spreadspace.app/api/api-reference/extractions/get-fin-ebitda-addbacks.md) - API > Extractions [Replace EBITDA add-back selections](https://docs.spreadspace.app/api/api-reference/extractions/set-fin-ebitda-addbacks.md) - API > Extractions [List all extracted documents](https://docs.spreadspace.app/api/api-reference/extractions/list-extracted-documents.md) - API > Extractions [Retrieve a document's report data](https://docs.spreadspace.app/api/api-reference/extractions/get-report-data.md) - API > Extractions [Retrieve a report by category](https://docs.spreadspace.app/api/api-reference/extractions/get-report.md) - API > Extractions [Export an extracted document](https://docs.spreadspace.app/api/api-reference/extractions/export-single-document-sync.md) - API > Extractions [Query extractions](https://docs.spreadspace.app/api/api-reference/extractions/query-extractions.md) - API > Extractions [Query extractions in bulk](https://docs.spreadspace.app/api/api-reference/extractions/query-extractions-bulk.md) - API > Extractions [Delete an extracted document](https://docs.spreadspace.app/api/api-reference/extractions/delete-extracted-document.md) - API > Tax Returns [Retrieve a tax return](https://docs.spreadspace.app/api/api-reference/tax-returns/get-tax-return.md) - API > Tax Returns [List all tax returns](https://docs.spreadspace.app/api/api-reference/tax-returns/get-tax-returns.md) - API > W-2s [Retrieve a W-2](https://docs.spreadspace.app/api/api-reference/w2s/get-w-2.md) - API > W-2s [List all W-2s](https://docs.spreadspace.app/api/api-reference/w2s/get-w-2-s.md) - API > Paystubs [Retrieve a paystub](https://docs.spreadspace.app/api/api-reference/paystubs/get-paystub.md) - API > Paystubs [List all paystubs](https://docs.spreadspace.app/api/api-reference/paystubs/get-paystubs.md) - API > Personal Financial Statements [Retrieve a personal financial statement](https://docs.spreadspace.app/api/api-reference/personal-financial-statements/get-pfs.md) - API > Personal Financial Statements [List all personal financial statements](https://docs.spreadspace.app/api/api-reference/personal-financial-statements/get-personal-financial-statements.md) - API > Balance Sheets [Retrieve a balance sheet](https://docs.spreadspace.app/api/api-reference/balance-sheets/get-balance-sheet-statement.md) - API > Balance Sheets [List all balance sheets](https://docs.spreadspace.app/api/api-reference/balance-sheets/get-balance-sheets.md) - API > Profit Loss Statements [Retrieve a profit loss statement](https://docs.spreadspace.app/api/api-reference/profit-loss-statements/get-profit-loss-statement.md) - API > Profit Loss Statements [List all profit loss statements](https://docs.spreadspace.app/api/api-reference/profit-loss-statements/get-profit-loss-statements.md) - API > Cash Flow Statements [Retrieve a cash flow statement](https://docs.spreadspace.app/api/api-reference/cash-flow-statements/get-cash-flow-statement.md) - API > Cash Flow Statements [List all cash flow statements](https://docs.spreadspace.app/api/api-reference/cash-flow-statements/get-cash-flow-statements.md) - API > Equity Statements [Retrieve an equity statement](https://docs.spreadspace.app/api/api-reference/equity-statements/get-equity-statement.md) - API > Equity Statements [List all equity statements](https://docs.spreadspace.app/api/api-reference/equity-statements/get-equity-statements.md) - API > Comprehensive Income Statements [Retrieve a comprehensive income statement](https://docs.spreadspace.app/api/api-reference/comprehensive-income-statements/get-comprehensive-income-statement.md) - API > Comprehensive Income Statements [List all comprehensive income statements](https://docs.spreadspace.app/api/api-reference/comprehensive-income-statements/get-comprehensive-income-statements.md) - API > Investment Income Statements [Retrieve an investment income statement](https://docs.spreadspace.app/api/api-reference/investment-income-statements/get-investment-income-statement.md) - API > Investment Income Statements [List all investment income statements](https://docs.spreadspace.app/api/api-reference/investment-income-statements/get-investment-income-statements.md) - API > Supporting Tables [Retrieve a supporting table](https://docs.spreadspace.app/api/api-reference/supporting-tables/get-supporting-table.md) - API > Supporting Tables [List all supporting tables](https://docs.spreadspace.app/api/api-reference/supporting-tables/get-supporting-tables.md) - API > Debt Schedules [Retrieve a debt schedule](https://docs.spreadspace.app/api/api-reference/debt-schedules/get-debt-schedule.md) - API > Debt Schedules [List all debt schedules](https://docs.spreadspace.app/api/api-reference/debt-schedules/get-debt-schedules.md) - API > Bank Statements [Retrieve a bank statement](https://docs.spreadspace.app/api/api-reference/bank-statements/get-bank-statement.md) - API > Bank Statements [List all bank statements](https://docs.spreadspace.app/api/api-reference/bank-statements/get-bank-statements.md) - API > AR Agings [Retrieve an AR aging](https://docs.spreadspace.app/api/api-reference/ar-agings/get-ar-aging.md) - API > AR Agings [List all AR agings](https://docs.spreadspace.app/api/api-reference/ar-agings/get-ar-agings.md) - API > AP Agings [Retrieve an AP aging](https://docs.spreadspace.app/api/api-reference/ap-agings/get-ap-aging.md) - API > AP Agings [List all AP agings](https://docs.spreadspace.app/api/api-reference/ap-agings/get-ap-agings.md) - API > Bank Statement Accounts [List all bank statement accounts](https://docs.spreadspace.app/api/api-reference/bank-statement-accounts/get-bank-statement-accounts.md) - API > Borrower Owners [List all borrower owners](https://docs.spreadspace.app/api/api-reference/borrower-owners/get-borrower-owners.md) - API > Statement Mappings [Retrieve a profit loss mapping](https://docs.spreadspace.app/api/api-reference/statement-mappings/get-profit-loss-mapping.md) - API > Statement Mappings [List all profit loss mappings](https://docs.spreadspace.app/api/api-reference/statement-mappings/list-profit-loss-mappings.md) - API > Statement Mappings [Retrieve a balance sheet mapping](https://docs.spreadspace.app/api/api-reference/statement-mappings/get-balance-sheet-mapping.md) - API > Statement Mappings [List all balance sheet mappings](https://docs.spreadspace.app/api/api-reference/statement-mappings/list-balance-sheet-mappings.md) - API > Jobs [List jobs](https://docs.spreadspace.app/api/api-reference/jobs/list.md) - API > Jobs [Get job status](https://docs.spreadspace.app/api/api-reference/jobs/get-status.md) - API > Jobs [Get job results](https://docs.spreadspace.app/api/api-reference/jobs/get-results.md) - API > Jobs [Delete job](https://docs.spreadspace.app/api/api-reference/jobs/delete-job.md) - API > Loan Credit Memos [List loan credit memos](https://docs.spreadspace.app/api/api-reference/loan-credit-memos/list.md) - API > Loan Credit Memos [Render credit memo](https://docs.spreadspace.app/api/api-reference/loan-credit-memos/request-render.md) - API > Loan Credit Memos [Get credit memo render](https://docs.spreadspace.app/api/api-reference/loan-credit-memos/get-render.md) - API > Loan Credit Memos [Cancel credit memo render](https://docs.spreadspace.app/api/api-reference/loan-credit-memos/cancel-render.md) - API > Loan Credit Memos [Get credit memo PDF](https://docs.spreadspace.app/api/api-reference/loan-credit-memos/get-pdf.md) - API > Loan Workbooks [Get tables workbook](https://docs.spreadspace.app/api/api-reference/loan-workbooks/get-tables.md) - API > Loan Workbooks [Get statements workbook](https://docs.spreadspace.app/api/api-reference/loan-workbooks/get-statements.md) - API > Loans [List loans](https://docs.spreadspace.app/api/api-reference/loans/list-all.md) - API > Loans [List borrower loans](https://docs.spreadspace.app/api/api-reference/loans/list-by-borrower.md) - API > Loans [Create loan](https://docs.spreadspace.app/api/api-reference/loans/create.md) - API > Loans [Get loan](https://docs.spreadspace.app/api/api-reference/loans/get-by-id.md) - API > Loans [Delete loan](https://docs.spreadspace.app/api/api-reference/loans/delete.md) - API > Loans [Update loan](https://docs.spreadspace.app/api/api-reference/loans/update.md) - API > Me [Get current user](https://docs.spreadspace.app/api/api-reference/me/get-me.md) - API > Organizations [List organizations](https://docs.spreadspace.app/api/api-reference/organizations/list.md) - API > Sandbox [Reset the sandbox](https://docs.spreadspace.app/api/api-reference/sandbox/reset.md) - API > Spreads [Get latest attributes](https://docs.spreadspace.app/api/api-reference/spreads/get-latest.md) - API > Spreads [List attribute versions](https://docs.spreadspace.app/api/api-reference/spreads/list-versions.md) - API > Spreads [Get attribute snapshot](https://docs.spreadspace.app/api/api-reference/spreads/get-by-id.md) - API > Webhooks [List webhooks](https://docs.spreadspace.app/api/api-reference/webhooks/list.md) - API > Webhooks [Create webhook](https://docs.spreadspace.app/api/api-reference/webhooks/create.md) - API > Webhooks [Get webhook](https://docs.spreadspace.app/api/api-reference/webhooks/get.md) - API > Webhooks [Delete webhook](https://docs.spreadspace.app/api/api-reference/webhooks/delete.md) - API > Webhooks [Update webhook](https://docs.spreadspace.app/api/api-reference/webhooks/update.md) - API > Webhooks [Rotate webhook secret](https://docs.spreadspace.app/api/api-reference/webhooks/rotate.md) - API > Webhooks [List deliveries](https://docs.spreadspace.app/api/api-reference/webhooks/list-deliveries.md) - API > Webhooks [Replay delivery](https://docs.spreadspace.app/api/api-reference/webhooks/replay-delivery.md) - API > Webhook Events [document.failed](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-document-failed.md) - API > Webhook Events [document.processed](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-document-processed.md) - API > Webhook Events [embed.session.created](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-embed-session-created.md) - API > Webhook Events [embed.session.revoked](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-embed-session-revoked.md) - API > Webhook Events [export.cancelled](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-export-cancelled.md) - API > Webhook Events [export.failed](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-export-failed.md) - API > Webhook Events [export.succeeded](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-export-succeeded.md) - API > Webhook Events [extraction.mapped](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-extraction-mapped.md) - API > Webhook Events [extraction.ready](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-extraction-ready.md) - API > Webhook Events [extraction.updated](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-extraction-updated.md) - API > Webhook Events [job.completed](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-job-completed.md) - API > Webhook Events [loan.classified](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-loan-classified.md) - API > Webhook Events [memo.finalized](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-memo-finalized.md) - API > Webhook Events [memo.reopened](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-memo-reopened.md) - API > Webhook Events [memo_render.cancelled](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-memo-render-cancelled.md) - API > Webhook Events [memo_render.failed](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-memo-render-failed.md) - API > Webhook Events [memo_render.succeeded](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-memo-render-succeeded.md) - API > Webhook Events [spread.finalized](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-spread-finalized.md) - API > Webhook Events [spread.reopened](https://docs.spreadspace.app/api/api-reference/webhook-events/webhook-spread-reopened.md) ## OpenAPI Specification The raw OpenAPI 3.1 specification for this API is available at: - [OpenAPI JSON](https://docs.spreadspace.app/api/openapi.json) - [OpenAPI YAML](https://docs.spreadspace.app/api/openapi.yaml) > **Note:** This page contains both a page directory (above) and the landing page content (below). The page directory is generated for agent use and does not appear on the landing page. > For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://docs.spreadspace.app/api/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.spreadspace.app/_mcp/server. # API Reference The SpreadSpace API is organized by resource. Pick a group from the sidebar to see its endpoints, request and response schemas, and copy-paste examples in cURL and every official SDK. ## Base URL Every request goes to one base URL. The API key **prefix** (not the URL) selects the environment: ``` https://api.spreadspace.app ``` * **`ss_live_…`** operates on live workspace data. * **`ss_test_…`** routes to the isolated developer sandbox (test mode), where uploads return premade sample extractions at no charge. ## Authentication Every request carries a bearer token in the `Authorization` header: ```bash curl https://api.spreadspace.app/api/borrowers \ -H "Authorization: Bearer ss_live_..." ``` Key management, prefixes, and secret handling: [Authentication](/api/authentication). ## Find an extraction When browsing a mixed document packet, list the borrower's extractions first. The optional `loan_id` query parameter limits the list to one loan; omit it to browse across the borrower's loans. ```bash curl "https://api.spreadspace.app/api/borrowers/111111111111111111111111/extractions?loan_id=222222222222222222222222" \ -H "Authorization: Bearer ss_test_..." ``` Each row describes one extraction. These selected fields from a fictional row identify the statement, its reporting period and its source pages: ```json { "extracted_document_id": "333333333333333333333333", "document_category": "balance_sheet", "display_name": "Balance sheet (2025-12-31)", "period_label": "2025-12-31", "period_start": null, "period_end": "2025-12-31", "fiscal_year": 2025, "created_at": "2026-01-15T14:30:00Z", "original_filename": "annual-statements (2 of 3).pdf", "source_pages": [4, 5], "links": { "data": "/api/borrowers/111111111111111111111111/extractions/333333333333333333333333/balance-sheet-statement" } } ``` `display_name` is a concise document label. `period_label`, `period_start`, `period_end` and `fiscal_year` describe the reporting period when known; `created_at` records when the extraction was stored, not the report date. `original_filename` is the stored source or document label and may include a section suffix. `source_pages` contains positive, 1-based page numbers in the original uploaded PDF: cited pages when available, otherwise the source section's full page coverage. It is null when that coverage is unknown. Follow `links.data` with a GET request and the same bearer token. The link is relative to the API base URL, and the request uses the same access checks as any other extraction read: ```bash curl "https://api.spreadspace.app/api/borrowers/111111111111111111111111/extractions/333333333333333333333333/balance-sheet-statement" \ -H "Authorization: Bearer ss_test_..." ``` The link selects the typed read when one exists, otherwise the generic `report-data` read. `links.data` is null when the document is unextractable or has no extracted data. If you already know the document kind, use its typed list, such as `GET /api/borrowers/{borrower_id}/extractions/balance-sheets`. The generic `GET /api/borrowers/{borrower_id}/extractions/{doc_id}/report-data` route remains available for advanced integrations that handle several kinds through one read. ## Versioning The API surface is versioned with date stamps. Pin one per request with the optional `SpreadSpace-Version` header; omit it to get the latest. Resolution order, supported versions, and drift detection: [Versioning](/api/versioning). What changed on the public surface: [Changelog](/api/changelog). ## Idempotency Mutating calls accept an optional `Idempotency-Key` header so retries never double-apply an operation: [Idempotency](/api/idempotency). ## Request IDs Every response carries an `X-Request-ID` header: yours echoed back if you sent one shaped `req_` plus 1 to 64 letters or digits, otherwise minted server-side as `req_<24 hex chars>`. Quote it in support tickets so we can find the request's logs. ## SDKs Prefer a typed client? The [SDKs](/sdks/overview) wrap the core integration surface (borrowers, loans and attributes, jobs, documents, exports, webhooks, embed sessions) with retries, cursor pagination, idempotency, and webhook verification. ## Resources * **OpenAPI spec**: `https://api.spreadspace.app/v1/openapi.json` is the public contract used by these reference pages. Download it: ```bash curl -sS https://api.spreadspace.app/v1/openapi.json -o spreadspace-openapi.json ``` * **Postman**: a [collection](https://spreadspace.app/postman/spreadspace-api.postman_collection.json) with one request per public operation, grouped by resource, and a [test mode environment](https://spreadspace.app/postman/spreadspace-test-mode.postman_environment.json). Import both, select the environment, and paste an `ss_test_` key into its `apiKey` variable. * **Status**: [spreadspace.app/status](https://spreadspace.app/status) shows the result of a live probe of `GET https://api.spreadspace.app/health` (which answers `200` with the plain-text body `Healthy` when the API is up), the version stamp the API resolved for it, and, when available, the trailing successful request rate. * **SDK packages**: [`@spreadspace/sdk`](https://www.npmjs.com/package/@spreadspace/sdk) 1.1.0 (npm), [`spreadspace`](https://pypi.org/project/spreadspace/) 1.1.0 (PyPI), [`SpreadSpace`](https://www.nuget.org/packages/SpreadSpace) 1.1.0 (NuGet), [`@spreadspace/react`](https://www.npmjs.com/package/@spreadspace/react) 0.2.0 (npm), [`@spreadspace/embed`](https://www.npmjs.com/package/@spreadspace/embed) 1.0.0 (npm). * **Agents**: `https://docs.spreadspace.app/llms.txt` indexes every page, and any page is served as Markdown when you append `.md` to its URL, for example `https://docs.spreadspace.app/api/versioning.md`. A coding agent can follow [Agent-assisted integration](/get-started/agent-assisted-integration). * **Changelog**: what changed on the public surface: [Changelog](/api/changelog). * **Support**: contact `support@spreadspace.app` and include the request's `X-Request-ID`.