---
title: "List financial statements for a vehicle"
method: GET
path: "/v1/financial_statements"
tags: ["financial_statements"]
---

# List financial statements for a vehicle

`GET /v1/financial_statements`

## Request

- Base URL: `https://api.angellist.com`
- URL: `https://api.angellist.com/v1/financial_statements`
- Auth: OAuth 2
  - Authorization code: `https://gateway.angellist.com/oauth/authorize`
  - Client credentials
  - Token URL: `https://gateway.angellist.com/oauth/token` scopes: `financial_statements:read`

The source of truth for performance metrics. When the caller needs MOIC, TVPI, DPI, RVPI, IRR, NAV, fund-level paid-in / called / distributed, J-curve, or any gross-vs.-net-of-fees/ carry cut, this is the endpoint: call it for the vehicle and read the canonical figure straight out of the body. Don't derive these from `/v1/assets` fields — the statement reconciles fees, carry, recyclables, and FX that the raw fields don't.

Returns the financial-statement workbooks stored for a vehicle, as parsed JSON. `vehicle` is required. One row per workbook (typically one per period close); the page is ordered from most-recent to oldest by `created`. **Supported vehicle types: `spv`, `ruv`, `venture_fund`, and `institutional_fund`.** Other vehicle types return 404.

Each row carries an opaque `body` object — the workbook's contents as JSON, sheet- and cell-shaped. The body's sheets are a parsed projection of the workbook: `Fund Summary` carries the headline multiples and IRRs (Total Fund and LP, net and gross of fees) alongside paid-in capital, total invested, distributions, and NAV; `unaudited_SOI` carries per-position cost, fair value, and unrealized gain; `SOC` (Statement of Changes in Partners' Capital) carries the capital activity and NAV roll-forward; `Realizations` carries exit proceeds. The exact shape is defined upstream; consumers should navigate the body's keys rather than rely on a fixed schema here. New sheets / columns may appear over time; treat unknown keys gracefully.

`/v1/assets` reads its rows from the vehicle's most recent statement; list statements for the vehicle to fetch the backing workbook contents.

## Query parameters

- `vehicle` string, required
- `limit` integer
- `starting_after` string
- `ending_before` string

## Response `200`

A list of financial statements held by the vehicle.

- FinancialStatementList
  - `data` FinancialStatement[], required
    - `as_of` integer, nullable, required: The date this financial statement is "as of" — the period-end date the workbook was generated for. Measured in seconds since the Unix epoch. Null when the upstream record lacks an as-of date.
    - `body` object, required: Parsed contents of the financial-statement workbook. Values are expressed in whole units of the fund's currency, not integer cents. The internal structure (sheet names, row shapes, cell values) is per-fund and may evolve; do not assume a fixed schema beyond "JSON object."
    - `created` integer, required: Time at which the financial-statement record was created in the upstream system. Measured in seconds since the Unix epoch. Approximates the workbook's "as of" date for most statements but is the upstream record creation time, not a period-end date.
    - `document_id` string, nullable, required: Public ID of the document backing this statement's workbook file. Pass it to `getDocument` for the file's metadata and a short-lived download URL, or to `downloadDocument` to stream the file bytes. Null when no backing document exists. Statement documents are only addressable this way; they do not appear in `searchDocuments` results.
    - `id` string, required: Unique identifier for this financial statement. The underlying record id is encoded through a salted Sqid alphabet so the internal database identifier is never on the wire.
    - `livemode` boolean, required: Whether this object exists in live mode (`true`) or test mode (`false`).
    - `object` 'financial_statement', required: Object type identifier.
    - `period_type` 'interim' | 'closed', required: Whether this statement is for the current open period (`interim`) or a finalized, closed quarter (`closed`). Use `closed` rows for historical EOQ snapshots and `interim` for the latest in-progress period.
    - `vehicle` object, required: The vehicle this financial statement belongs to.
      - `id` string, required: Encoded vehicle identifier.
  - `has_more` boolean, required: Whether there are more items available after this page.
  - `object` 'list', required
  - `url` string, required: The URL for this list endpoint.

## Other responses

- `400`: The request was malformed or contained invalid parameters.
- `401`: Authentication required or token invalid.
- `403`: The authenticated user does not have permission to access this resource, or the vehicle's data is not available through the API. Vehicle-scoped financial-data endpoints return code `not_available` when a vehicle's data isn't served through the API yet — the API returns verified data or none, never partial data. One account can hold a mix of covered and uncovered vehicles; support for uncovered vehicles is on the roadmap and will be added in the coming months.
- `404`: Resource not found.
- `429`: Rate limit exceeded.
- `500`: An unexpected error occurred.

---

[API](https://skmtc.dev/angellist/apis/angellist-funds-api.md) - [All operations](https://skmtc.dev/angellist/apis/angellist-funds-api/llms.txt) - [OpenAPI document](https://skmtc.dev/angellist/apis/angellist-funds-api/revisions/b339e0e06c02?raw)
