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

# Cap table summary API

> Fetch aggregate cap table data — authorized vs. issued share totals, stakeholder and share class counts, and the latest approved valuation.

The cap table summary endpoint returns a single aggregated snapshot of your organization's equity state: total shares authorized across all classes, total shares issued, the number of distinct share classes and stakeholders, and the most recent approved valuation. This is the fastest way to populate an ownership dashboard, generate a board-level equity summary, or run a quick sanity check during due diligence — without iterating through every security individually.

Share totals are computed directly from live security records (not from denormalized counters), so the numbers you get back always reflect the current state of the ledger.

***

## Get the cap table summary

**`GET /api/v1/cap-table/summary`**

Requires role: **VIEWER**. No query parameters.

<CodeGroup>
  ```bash cURL theme={null}
  curl https://launchboard.xyz/api/v1/cap-table/summary \
    -H "Authorization: Bearer pg_live_your_key"
  ```
</CodeGroup>

**Response — `200 OK`**

```json theme={null}
{
  "data": {
    "orgId": "550e8400-e29b-41d4-a716-446655440000",
    "shareClassCount": 3,
    "stakeholderCount": 12,
    "totalAuthorized": "15000000",
    "totalIssued": "9250000",
    "latestValuation": {
      "id": "550e8400-e29b-41d4-a716-446655440080",
      "type": "409A",
      "pricePerShare": "1.50",
      "effectiveDate": "2024-01-01"
    }
  }
}
```

<ResponseField name="data.orgId" type="string (uuid)">
  Your organization ID.
</ResponseField>

<ResponseField name="data.shareClassCount" type="integer">
  Total number of share classes on your cap table, including classes with zero issued shares.
</ResponseField>

<ResponseField name="data.stakeholderCount" type="integer">
  Total number of stakeholder records in your organization.
</ResponseField>

<ResponseField name="data.totalAuthorized" type="string">
  Sum of `currentSharesAuthorized` across all share classes that have at least one authorized or issued share. Serialized as a string to preserve precision.
</ResponseField>

<ResponseField name="data.totalIssued" type="string">
  Sum of `quantity` across all `ACTIVE` stock securities. Serialized as a string to preserve precision.
</ResponseField>

<ResponseField name="data.latestValuation" type="object | null">
  The most recent valuation with `status: "APPROVED"`, ordered by `effectiveDate` descending. `null` if no approved valuation exists.
</ResponseField>

<ResponseField name="data.latestValuation.id" type="string (uuid)">
  Valuation ID. Use `GET /api/v1/valuations/{id}` for full valuation details.
</ResponseField>

<ResponseField name="data.latestValuation.type" type="string">
  Valuation type (e.g. `409A`, `FINANCING`).
</ResponseField>

<ResponseField name="data.latestValuation.pricePerShare" type="string">
  Per-share value from the most recent approved valuation, serialized as a string.
</ResponseField>

<ResponseField name="data.latestValuation.effectiveDate" type="string">
  Date the valuation took effect (`YYYY-MM-DD`).
</ResponseField>

***

## Common uses

**Ownership dashboard** — Poll this endpoint on page load to display headline equity metrics (shares issued, authorized headroom, current 409A price) without fetching individual securities.

**Investor reporting** — Use `totalIssued` and `totalAuthorized` to populate the cover page of board materials or investor updates.

**Due diligence** — Cross-check `shareClassCount` and `stakeholderCount` against your cap table records during a financing or acquisition process.

**Reconciliation** — Compare `totalIssued` against the sum of individual security quantities to verify ledger integrity.

<Tip>
  For a stakeholder-by-stakeholder or share-class-by-share-class ownership breakdown, use `GET /api/v1/securities` with the appropriate filters and aggregate in your application, or export the full OCF bundle via `GET /api/v1/cap-table/ocf-export`.
</Tip>

***

## Error codes

| Status | When it occurs                                                             |
| ------ | -------------------------------------------------------------------------- |
| `401`  | Missing or invalid API key.                                                |
| `429`  | Rate limit exceeded. Retry after the interval in the `Retry-After` header. |
