Create rounds

Opens a priced round that investments can be added to.

POST /v1/captable/rounds

Addresshttps://api.hanzo.ai/v1/captable/rounds
MethodPOST
Operationpost_captable_rounds
AuthAuthorization: Bearer $HANZO_API_KEY

Opens a priced round that investments can be added to.

The round opens OPEN; investing into a closed one is refused.

Request

6 fields, body application/json (required).

FieldInTypeRequiredDescription
namebodyany—Name is the round's name, e.g. "Series A".
preMoneyValuationbodyany—PreMoneyValuation is the company's valuation before the new money.
pricePerSharebodyany—PricePerShare is the price investors pay per share.
roundTypebodyany—RoundType is PRICED, SAFE or CONVERTIBLE.
shareClassIdbodyany—ShareClassID is the class investors receive.
targetAmountbodyany—TargetAmount is how much the round aims to raise, in the company's currency.

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 rounds create
import { Configuration, CaptableApi } from 'hanzoai';

const api = new CaptableApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.postCaptableRounds({ name: "<name>", preMoneyValuation: "<preMoneyValuation>" });
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_rounds(name="<name>", pre_money_valuation="<preMoneyValuation>")
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.CaptableAPI.PostCaptableRounds(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_rounds(&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).postCaptableRounds();
curl -X POST https://api.hanzo.ai/v1/captable/rounds \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "name": "<name>",
       "preMoneyValuation": "<preMoneyValuation>"
     }'

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?