List summary

Computes the caller org's cap table.

GET /v1/captable/summary

Addresshttps://api.hanzo.ai/v1/captable/summary
MethodGET
Operationget_captable_summary
AuthAuthorization: Bearer $HANZO_API_KEY

Computes the caller org's cap table. It answers who owns what on a fully-diluted basis: outstanding shares, granted options, per-stakeholder ownership percentages, each share class's authorized versus issued position, and the capital sitting on SAFEs and convertible notes that have not yet converted. Only non-terminal option grants dilute — EXERCISED, EXPIRED and CANCELLED grants are excluded, so equity issued through an exercised option is never counted twice.

Request

GET /v1/captable/summary takes no parameters and no body — the credential is the whole request.

Response

StatusBodyMeaning
200captable.captableSummaryok
defaultproblem-detailsrefused

200 body — 32 fields.

FieldInTypeAlwaysDescription
byShareClassbodycaptable.captableClassHolding[]—ByShareClass is each share class's authorized-versus-issued position, in class creation order.
byShareClass[].authorizedbodyinteger (int64)—Authorized is how many shares of the class are authorized.
byShareClass[].classTypebodystring—ClassType is COMMON or PREFERRED.
byShareClass[].issuedbodyinteger (int64)—Issued is how many shares of the class have been issued.
byShareClass[].namebodystring—Name is the class name.
byShareClass[].shareClassIdbodystring—ShareClassID addresses the class this position is for.
byStakeholderbodycaptable.captableHolding[]—ByStakeholder is each stakeholder's position, largest holding first.
byStakeholder[].fullyDilutedbodyinteger (int64)—FullyDiluted is shares plus options.
byStakeholder[].namebodystring—Name is the stakeholder's name.
byStakeholder[].optionsbodyinteger (int64)—Options is the shares under this stakeholder's non-terminal option grants.
byStakeholder[].ownershipPctbodynumber (double)—OwnershipPct is fullyDiluted as a percentage of the company's fullyDilutedShares, rounded to two decimals; 0 when nothing is issued.
byStakeholder[].sharesbodyinteger (int64)—Shares is the shares this stakeholder holds by certificate.
byStakeholder[].stakeholderIdbodystring—StakeholderID addresses the stakeholder these totals are for.
companybodycaptable.captableSummaryCompany—
company.idbodystring—ID is the company id, which is the tenant's own org id.
company.namebodystring—Name is the company's legal name.
convertiblesbodycaptable.captableConvertibles—
convertibles.notesbodycaptable.captableInstrumentTotal—
convertibles.notes.capitalbodynumber (double)—Capital is the total capital across those instruments.
convertibles.notes.countbodyinteger (int64)—Count is how many instruments there are.
convertibles.safesbodycaptable.captableInstrumentTotal—
convertibles.safes.capitalbodynumber (double)—Capital is the total capital across those instruments.
convertibles.safes.countbodyinteger (int64)—Count is how many instruments there are.
roundsbodycaptable.captableRoundTotals—
rounds.countbodyinteger (int64)—Count is how many rounds the company has recorded.
rounds.totalRaisedbodynumber (double)—TotalRaised is the sum of every round's raised amount.
totalsbodycaptable.captableTotals—
totals.fullyDilutedSharesbodyinteger (int64)—FullyDilutedShares is outstandingShares plus grantedOptions.
totals.grantedOptionsbodyinteger (int64)—GrantedOptions is the shares under non-terminal option grants — grants that are EXERCISED, EXPIRED or CANCELLED are excluded, so nothing double-counts.
totals.outstandingSharesbodyinteger (int64)—OutstandingShares is the sum of every issued share certificate.
totals.shareClassesbodyinteger (int64)—ShareClasses is how many share classes the company has authorized.
totals.stakeholdersbodyinteger (int64)—Stakeholders is how many stakeholders the company has.

Failure carries the platform error shape — see Errors.

Examples

hanzo captable summary
import { Configuration, CaptableApi } from 'hanzoai';

const api = new CaptableApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getCaptableSummary();
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import CaptableApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = CaptableApi(client).get_captable_summary()
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.CaptableAPI.GetCaptableSummary(context.Background()).Execute()
if err != nil {
	return err
}
use hanzo_client::apis::{configuration::Configuration, captable_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = captable_api::get_captable_summary(&cfg, Default::default()).await?;
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.CaptableApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new CaptableApi(client).getCaptableSummary();
curl https://api.hanzo.ai/v1/captable/summary \
  -H "Authorization: Bearer $HANZO_API_KEY"

Tool captable, op get_captable_summary — POST the JSON-RPC envelope to https://api.hanzo.ai/v1/mcp.

curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "captable",
         "arguments": {
           "op": "get_captable_summary",
           "input": {}
         }
       }
     }'

Captable API · All Hanzo APIs · Interactive reference

Was this page useful?