Company
Get the cap table
https://capable.so/api/v1/cap-tableRequires an API key with the captable:read scope · How keys work
Query parameters
asOfdateShow the cap table as it stood on this date, YYYY-MM-DD. Leave it out, or send another format, for today.
Response 200
One row per stakeholder with a holding on the date, plus class and plan totals.
asOfdateThe date of the cap table.
totalsobjectCompany-wide totals as of the date.
›Show 10 attributesHide attributes
outstandingSharesnumberIssued shares outstanding, every class.
optionsnumberOptions outstanding.
rsusnumberRSUs outstanding.
warrantsnumberWarrants outstanding.
availablePoolnumberShares still available to grant across equity plans.
fullyDilutednumberShares, options, RSUs, warrants and the available pool together.
safePrincipalnumberOutstanding SAFE investment, in US dollars.
notePrincipalnumberOutstanding convertible note principal, in US dollars.
capitalContributednumberCapital paid in for shares and convertibles, in US dollars.
stakeholdersWithSecuritiesnumberStakeholders who hold at least one outstanding security.
rowsobject[]One row per stakeholder.
›Show 12 attributesHide attributes
stakeholderIdstringThe stakeholder.
namestringTheir name.
relationshipstringHow they relate to the company.
One of
founderemployeeformer_employeeinvestoradvisorconsultantboard_memberothersharesnumberShares held, every class.
optionsnumberOptions outstanding.
rsusnumberRSUs outstanding.
warrantsnumberWarrants outstanding.
fullyDilutednumberTheir fully diluted shares.
fullyDilutedPercentnumberTheir share of the fully diluted total, from 0 to 100.
vestednumberVested quantity on the date.
unvestednumberUnvested quantity on the date.
byClassobjectShares held per share class, keyed by share class id.
shareClassesobject[]Totals per share class.
›Show 5 attributesHide attributes
idstringShare class id.
namestringName, such as Series Seed Preferred.
typestringCommon or preferred.
One of
commonpreferredoutstandingnumberShares outstanding in the class.
authorizednumber | nullShares authorized, when on record.
plansobject[]Totals per equity plan.
›Show 5 attributesHide attributes
idstringEquity plan id.
namestringPlan name.
sizenumberShares reserved for the plan.
outstandingnumberAwards outstanding from the plan.
availablenumberShares still available to grant.
Example
curl https://capable.so/api/v1/cap-table?asOf=2026-06-30 \
-H "Authorization: Bearer $CAPABLE_API_KEY"{
"asOf": "2026-06-30",
"totals": {
"outstandingShares": 9500000,
"options": 1015000,
"rsus": 0,
"warrants": 0,
"availablePool": 985000,
"fullyDiluted": 11500000,
"safePrincipal": 1250000,
"notePrincipal": 0,
"capitalContributed": 1252850,
"stakeholdersWithSecurities": 18
},
"rows": [
{
"stakeholderId": "stk_9d1rfoundr01",
"name": "Maya Chen",
"relationship": "founder",
"shares": 4500000,
"options": 0,
"rsus": 0,
"warrants": 0,
"fullyDiluted": 4500000,
"fullyDilutedPercent": 39.13,
"vested": 3375000,
"unvested": 1125000,
"byClass": {
"cls_common01x9": 4500000
}
},
{
"stakeholderId": "stk_4m8q2xw7ka1p",
"name": "Priya Raman",
"relationship": "employee",
"shares": 0,
"options": 48000,
"rsus": 0,
"warrants": 0,
"fullyDiluted": 48000,
"fullyDilutedPercent": 0.42,
"vested": 16000,
"unvested": 32000,
"byClass": {}
}
],
"shareClasses": [
{
"id": "cls_common01x9",
"name": "Common Stock",
"type": "common",
"outstanding": 9000000,
"authorized": 15000000
},
{
"id": "cls_seedpref02",
"name": "Series Seed Preferred",
"type": "preferred",
"outstanding": 500000,
"authorized": 500000
}
],
"plans": [
{
"id": "pln_2024plan7b",
"name": "2024 Equity Incentive Plan",
"size": 2000000,
"outstanding": 1015000,
"available": 985000
}
]
}Errors
| Status | When |
|---|---|
| 401 Unauthorized | The key is missing, invalid or revoked, or its creator lost access. |
| 402 Payment required | The company has no active plan in good standing: its trial ended without one, a payment has failed for over 21 days, or its subscription is paused or has ended. |
| 403 Forbidden | The key does not have the captable:read scope. |
| 429 Too many requests | The key went over its rate limit. Wait for Retry-After seconds. |
Every error has the same shape. See Errors, limits and conventions.