Skip to content

Create a project

POST
/v1/projects
curl -X POST "https://api.summerbase.com/v1/projects" \
-H "Authorization: Bearer sb_..." \
-H "Content-Type: application/json" \
-d '{
"name": "Staging"
}'

Create a project in the organization you are working in. Send Summerbase-Organization.

A slug is derived from the name unless you name one. It is unique within the organization, and one already used there is refused rather than changed: name the project differently, or choose its slug.

expand[]
Array<string>
<= 10 items
Allowed values: organization reporting_currency

Relationships to include in the response instead of fetching separately. A dotted path expands what an expanded record can expand in turn — at most 4 deep, 10 paths a request, and never back to a record already on the path.

Media typeapplication/json
object
name
required

What the project is called.

string
>= 1 characters <= 255 characters
slug

How the project is addressed in a readable URL — the production in app.summerbase.com/projects/production@acme, or that one slug alone when it is the organization’s too. Lowercase letters, digits, hyphens and underscores, and never shaped like an id.

Unique within the organization: one already used there is refused. Derived from the name when you do not choose one. Changing it is allowed and breaks every address that used the old one.

string
>= 1 characters <= 100 characters

Example

{
"name": "Staging"
}

Returns the project object.

Media typeapplication/json

Example

{
"checklist_dismissed_at": null,
"churn_timing": "at_expiration",
"created_at": "2025-09-08T14:02:37Z",
"id": "0198f1a2-6c52-7b18-8e3f-2a9c4d6b1e07",
"movement_collapse_window_days": 7,
"name": "Production",
"object": "project",
"organization_id": "0198f1a2-6c3d-7e41-9a2b-5c8d1e4f7a90",
"recompute_failed_at": null,
"recompute_remaining": 0,
"recompute_started_at": null,
"recompute_total": 0,
"reporting_cadence": "monthly",
"reporting_currency_code": "USD",
"reporting_timezone": "America/New_York",
"slug": "production"
}