Create a project
Creates a project for a client you already have. title, company_id
and billing_type are required; find the company id with
GET /public-api/v1/companies.
billing_fee and billing_cycle have to agree with billing_type, and
a mismatch is rejected rather than ignored:
billing_type |
billing_fee |
billing_cycle |
|---|---|---|
fixed_fee |
required | must be omitted |
retainer |
required | required |
time |
must be omitted | must be omitted |
not_billable |
must be omitted | must be omitted |
Bonsai fills in the rest: the project number, its client-facing URL
token, its color, and its starting members. currency follows the
client's currency and start_date defaults to today.
Body
required
application/json
Project attributes, wrapped in a project key.
- Type: objectprojectrequired
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
Request Example for post/public-api/v1/projects
curl https://app.hellobonsai.com/public-api/v1/projects \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"project": {
"title": "Acme Website",
"company_id": 42,
"currency": "USD",
"start_date": "2026-05-01",
"billing_type": "fixed_fee",
"billing_fee": "5000",
"billing_cycle": "monthly"
}
}'
{
"data": {
"id": 51,
"title": "Acme Website",
"public_url_token": "acme-website-x4n2",
"currency": "USD",
"start_date": "2026-05-01",
"sequence": 1,
"number": "ACME-0001",
"board_group_id": "0c8f1e2a-3b4c-4d5e-6f70-8192a3b4c5d6",
"company_name": "Acme Corp",
"billing_type": "fixed_fee",
"billing_cycle": "monthly",
"billing_fee": "5000.0",
"company_id": 42,
"url": "https://app.hellobonsai.com/projects/acme-website-x4n2"
},
"meta": {
"request_id": "b1f0d2c4-7a9e-4c3b-8d5f-1e2a3b4c5d6e"
}
}