Create shares

Issues a share certificate to a stakeholder.

POST /v1/captable/shares

Addresshttps://api.hanzo.ai/v1/captable/shares
MethodPOST
Operationpost_captable_shares
AuthAuthorization: Bearer $HANZO_API_KEY

Issues a share certificate to a stakeholder.

The certificate id must be UNIQUE within the company — a duplicate is refused 409, not silently merged — and both the stakeholder and the share class must belong to this company, so an id from another tenant is a 400 rather than a cross-company issuance.

Request

17 fields, body application/json (required).

FieldInTypeRequiredDescription
boardApprovalDatebodyany—BoardApprovalDate is when the board approved the issuance, YYYY-MM-DD.
capitalContributionbodyany—CapitalContribution is cash paid for the shares.
certificateIdbodyany—CertificateID is the certificate number.
cliffYearsbodyany—CliffYears is how long before ANY of the grant vests.
companyLegendsbodyany[]—CompanyLegends are the restrictive legends printed on the certificate.
debtCancelledbodyany—DebtCancelled is debt forgiven as consideration.
ipContributionbodyany—IPContribution is intellectual property assigned as consideration, valued in the company's currency.
issueDatebodyany—IssueDate is when the shares were issued, YYYY-MM-DD.
otherContributionsbodyany—OtherContributions is any other consideration, valued in the company's currency.
pricePerSharebodyany—PricePerShare is what was paid per share.
quantitybodyany—Quantity is how many shares to issue.
rule144Datebodyany—Rule144Date is when the Rule 144 holding period starts, YYYY-MM-DD.
shareClassIdbodyany—ShareClassID is the class being issued.
stakeholderIdbodyany—StakeholderID is who receives the shares.
statusbodyany—Status is ACTIVE, DRAFT, SIGNED or PENDING.
vestingStartDatebodyany—VestingStartDate is when vesting begins, YYYY-MM-DD.
vestingYearsbodyany—VestingYears is the total vesting period.

Response

StatusBodyMeaning
201captable.captableCreatedcreated
defaultproblem-detailsrefused

201 body — 3 fields.

FieldInTypeAlwaysDescription
idbodystring—ID is the created row's id.
messagebodystring—Message is the human sentence the cap table wrote, e.g. "Share issued".
successbodyboolean—Success is true when the row was written.

Failure carries the platform error shape — see Errors.

Examples

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

const api = new CaptableApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postCaptableShares({ boardApprovalDate: "<boardApprovalDate>", capitalContribution: "<capitalContribution>" });
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).post_captable_shares(board_approval_date="<boardApprovalDate>", capital_contribution="<capitalContribution>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.CaptableAPI.PostCaptableShares(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::post_captable_shares(&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).postCaptableShares();
curl -X POST https://api.hanzo.ai/v1/captable/shares \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "boardApprovalDate": "<boardApprovalDate>",
       "capitalContribution": "<capitalContribution>"
     }'

MCP reaches captable through the captable tool, which names its 30 operations with its own verbs — this one among them, under a name only MCP declares. describe explains any of them:

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

Captable API · All Hanzo APIs · Interactive reference

Was this page useful?