Hanzo

Captable

Package captable is your cap table: stakeholders, share classes, grants, SAFEs, rounds, and who owns what.

Package captable is your cap table: stakeholders, share classes, grants, SAFEs, rounds, and who owns what.

Base URLhttps://api.hanzo.ai
Operations31
AuthAuthorization: Bearer $HANZO_API_KEY

captable

GetCompany returns the caller org's cap-table company record.

GET /v1/captable/company

GetCompany returns the caller org's cap-table company record. The row is seeded when the tenant's store first opens, so it always exists; its name and incorporation details are set with PUT /v1/captable/company.

UpdateCompany sets the caller org's company name and incorporation details.

PUT /v1/captable/company

UpdateCompany sets the caller org's company name and incorporation details. The name is required; the three incorporation fields are optional and each is stored as empty when omitted, so a call that sends only a name CLEARS them. The company row itself is seeded when the tenant's store first opens, so this never creates one.

Request bodyapplication/json (required)

FieldTypeRequiredDescription
incorporationCountryIncorporationCountry is the ISO country the entity is incorporated in. Optional; omitted, null or empty clears it.
incorporationStateIncorporationState is the state or province of incorporation. Optional; omitted, null or empty clears it.
incorporationTypeIncorporationType is the entity kind, e.g. LLC or C_CORP. Optional; omitted, null or empty clears it.
nameName is the company's legal name. Required, and it must be a non-empty string — anything else is refused with the cap ta

DeleteConvertible removes one of the caller org's convertible notes, taking its principal out of the cap table's unconverted-instrument totals.

DELETE /v1/captable/convertibles/{id}

DeleteConvertible removes one of the caller org's convertible notes, taking its principal out of the cap table's unconverted-instrument totals. An id this org does not hold is not found.

ParameterInTypeRequiredDescription
idpathstringyesID is the convertible note to delete.

ListConvertibles returns the caller org's convertible notes, newest first.

GET /v1/captable/convertibles

ListConvertibles returns the caller org's convertible notes, newest first. A note's principal sits OUTSIDE issued equity until it converts, so it is not part of the share counts.

post_v1_captable_convertibles

POST /v1/captable/convertibles

ListEquityPlans returns the caller org's equity plans, newest first.

GET /v1/captable/equity-plans

ListEquityPlans returns the caller org's equity plans, newest first. An equity plan is an option pool: a reserve of shares, drawn from one share class, that option grants are written against.

post_v1_captable_equity-plans

POST /v1/captable/equity-plans

ListInvestments returns the caller org's investments, newest first.

GET /v1/captable/investments

ListInvestments returns the caller org's investments, newest first. It spans every round, so it is the flat ledger of cheques written into the company, each naming its investor and the round it went into.

DeleteOption removes one of the caller org's option grants, taking its shares out of the cap table's granted-options and fully-diluted counts.

DELETE /v1/captable/options/{id}

DeleteOption removes one of the caller org's option grants, taking its shares out of the cap table's granted-options and fully-diluted counts. An id this org does not hold is not found.

ParameterInTypeRequiredDescription
idpathstringyesID is the option grant to delete.

ListOptions returns the caller org's option grants, newest first.

GET /v1/captable/options

ListOptions returns the caller org's option grants, newest first. Each row is joined to its grantee and its equity plan. Grants that are EXERCISED, EXPIRED or CANCELLED are listed here but do not dilute the cap table.

post_v1_captable_options

POST /v1/captable/options

CloseRound closes one of the caller org's fundraising rounds, recording the close date and moving its status to CLOSED.

POST /v1/captable/rounds/{id}/close

CloseRound closes one of the caller org's fundraising rounds, recording the close date and moving its status to CLOSED. Only an OPEN round can be closed: a round that is already closed — like an id this org does not hold — is not found. Closing a round does not change what was invested in it.

ParameterInTypeRequiredDescription
idpathstringyesID is the round to close. It is the path segment: the URL is the addressing authority, and the org it is resolved in com

Request bodyapplication/json (required)

FieldTypeRequiredDescription
closeDateCloseDate is the date to record the round as closed on. Optional: omitted, null or empty records TODAY.
idstringID is the round to close. It is the path segment: the URL is the addressing authority, and the org it is resolved in com

post_v1_captable_rounds_by_id_investments

POST /v1/captable/rounds/{id}/investments

ParameterInTypeRequiredDescription
idpathstringyes

GetRound returns one of the caller org's fundraising rounds together with every investment written into it, oldest first.

GET /v1/captable/rounds/{id}

GetRound returns one of the caller org's fundraising rounds together with every investment written into it, oldest first. A round id that does not exist in the caller's org is not found — including one that exists in another tenant, since the org comes from the caller's principal and is part of the lookup.

ParameterInTypeRequiredDescription
idpathstringyesID is the round to read. It is the path segment: the URL is the addressing authority, and the org it is resolved in come

ListRounds returns the caller org's fundraising rounds, newest first.

GET /v1/captable/rounds

ListRounds returns the caller org's fundraising rounds, newest first. A round groups a fundraising event; a PRICED round also carries the share class and price per share it issues at.

post_v1_captable_rounds

POST /v1/captable/rounds

DeleteSafe removes one of the caller org's SAFEs, taking its capital out of the cap table's unconverted-instrument totals.

DELETE /v1/captable/safes/{id}

DeleteSafe removes one of the caller org's SAFEs, taking its capital out of the cap table's unconverted-instrument totals. An id this org does not hold is not found.

ParameterInTypeRequiredDescription
idpathstringyesID is the SAFE to delete.

ListSafes returns the caller org's SAFEs, newest first.

GET /v1/captable/safes

ListSafes returns the caller org's SAFEs, newest first. A SAFE is a simple agreement for future equity: its capital sits OUTSIDE issued equity until it converts, so it is not part of the share counts.

post_v1_captable_safes

POST /v1/captable/safes

patch_v1_captable_share-classes_by_id

PATCH /v1/captable/share-classes/{id}

ParameterInTypeRequiredDescription
idpathstringyes

ListShareClasses returns the caller org's share classes, in creation order.

GET /v1/captable/share-classes

ListShareClasses returns the caller org's share classes, in creation order. A share class is what a certificate is issued in, and every class the company has authorized appears. The response is a bare JSON array, not an envelope.

post_v1_captable_share-classes

POST /v1/captable/share-classes

DeleteShare removes one of the caller org's share certificates, taking its shares out of the cap table's outstanding and fully-diluted counts.

DELETE /v1/captable/shares/{id}

DeleteShare removes one of the caller org's share certificates, taking its shares out of the cap table's outstanding and fully-diluted counts. An id this org does not hold is not found.

ParameterInTypeRequiredDescription
idpathstringyesID is the share certificate to delete.

post_v1_captable_shares_transfer

POST /v1/captable/shares/transfer

ListShares returns the caller org's share certificates, newest first.

GET /v1/captable/shares

ListShares returns the caller org's share certificates, newest first. Each row is joined to its holder and its share class, so a certificate names who holds it and what class it is in without a second call.

post_v1_captable_shares

POST /v1/captable/shares

UpdateStakeholder changes one of the caller org's stakeholders.

PATCH /v1/captable/stakeholders/{id}

UpdateStakeholder changes one of the caller org's stakeholders. It is a PARTIAL update: only the fields the request names are written, and a field sent as null clears that column. A request that names no updatable field is refused, and an id this org does not hold is not found.

The values are stored as sent. Unlike adding a stakeholder, this route does not check the email's shape or the type and relationship vocabularies, so it can record a value that adding one would have rejected.

ParameterInTypeRequiredDescription
idpathstringyesID is the stakeholder to update. It is the path segment: the URL is the addressing authority, and the org it is resolved

Request bodyapplication/json (required)

FieldTypeRequiredDescription
cityCity is the stakeholder's city.
currentRelationshipCurrentRelationship is how the stakeholder relates to the company, e.g. FOUNDER, INVESTOR or EMPLOYEE.
emailEmail is the stakeholder's email. This route stores it as sent — unlike adding a stakeholder, it is not checked for shap
idstringID is the stakeholder to update. It is the path segment: the URL is the addressing authority, and the org it is resolved
institutionNameInstitutionName names the institution, when the stakeholder is one.
nameName is the stakeholder's full name.
stakeholderTypeStakeholderType is INDIVIDUAL or INSTITUTION.
stateState is the stakeholder's state or province.
streetAddressStreetAddress is the stakeholder's street address.
taxIdTaxID is the stakeholder's tax identifier.
zipcodeZipcode is the stakeholder's postal code.

DeleteStakeholder removes one of the caller org's stakeholders.

DELETE /v1/captable/stakeholders/{id}

DeleteStakeholder removes one of the caller org's stakeholders. It REFUSES to orphan issued equity: a holder that still holds share certificates or option grants cannot be deleted, and answers 400 saying so — release or transfer the holdings first. An id this org does not hold is not found.

ParameterInTypeRequiredDescription
idpathstringyesID is the stakeholder to delete.

ListStakeholders returns the caller org's stakeholders, newest first.

GET /v1/captable/stakeholders

ListStakeholders returns the caller org's stakeholders, newest first. The response is a bare JSON array, not an envelope. Each row carries the holder's contact and address fields alongside the company's name.

post_v1_captable_stakeholders

POST /v1/captable/stakeholders

GetSummary computes the caller org's cap table.

GET /v1/captable/summary

GetSummary 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.


Captable guide · All Hanzo APIs · Interactive reference

How is this guide?

On this page

captableGetCompany returns the caller org's cap-table company record.UpdateCompany sets the caller org's company name and incorporation details.DeleteConvertible removes one of the caller org's convertible notes, taking its principal out of the cap table's unconverted-instrument totals.ListConvertibles returns the caller org's convertible notes, newest first.post_v1_captable_convertiblesListEquityPlans returns the caller org's equity plans, newest first.post_v1_captable_equity-plansListInvestments returns the caller org's investments, newest first.DeleteOption removes one of the caller org's option grants, taking its shares out of the cap table's granted-options and fully-diluted counts.ListOptions returns the caller org's option grants, newest first.post_v1_captable_optionsCloseRound closes one of the caller org's fundraising rounds, recording the close date and moving its status to CLOSED.post_v1_captable_rounds_by_id_investmentsGetRound returns one of the caller org's fundraising rounds together with every investment written into it, oldest first.ListRounds returns the caller org's fundraising rounds, newest first.post_v1_captable_roundsDeleteSafe removes one of the caller org's SAFEs, taking its capital out of the cap table's unconverted-instrument totals.ListSafes returns the caller org's SAFEs, newest first.post_v1_captable_safespatch_v1_captable_share-classes_by_idListShareClasses returns the caller org's share classes, in creation order.post_v1_captable_share-classesDeleteShare removes one of the caller org's share certificates, taking its shares out of the cap table's outstanding and fully-diluted counts.post_v1_captable_shares_transferListShares returns the caller org's share certificates, newest first.post_v1_captable_sharesUpdateStakeholder changes one of the caller org's stakeholders.DeleteStakeholder removes one of the caller org's stakeholders.ListStakeholders returns the caller org's stakeholders, newest first.post_v1_captable_stakeholdersGetSummary computes the caller org's cap table.