Skip to main content
POST
Create a project

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
name
string | null

Display name. Defaults to 'Untitled project'.

Maximum string length: 255
render_request
RenderRequest · object | null

Seed composition. An empty project is created when omitted.

author
enum<string>
default:user

Who is creating this project, for version provenance — user or agent. Name the values here because MCP advertises this body as an opaque object: a caller sees the key but not its enum, so anything else is learned only from the 422.

Available options:
user,
agent

Response

Successful Response

A freshly created project, plus the advisory lint of its seed composition.

Returned only by POST /v1/projects. A subclass rather than two more fields on :class:ProjectOut, because ProjectOut also backs GET /v1/projects, which would then have to either carry permanently-null fields or lint every project on the page.

id
string
required

Unique project id.

Example:

"proj_01J8QR2K5VKDGN2T4FBM3CZYX7"

name
string
required

Display name.

Example:

"Launch teaser"

version
integer
required

Head version. Bumped on every applied ops batch.

Example:

3

workspace_id
string
required

Owning workspace id.

created_at
string<date-time>
required
updated_at
string<date-time>
required
summary
ProjectSummary · object
required

Compact, always-present view of the head composition.

ok
boolean
required

Advisory — the project was still created and stored at version 1. False means the seed composition has error-severity findings; a project is allowed to hold an invalid head while you repair it with ops.

Example:

true

render_request
RenderRequest · object | null

The full head composition. Present only when requested with view=full.

violations
Violation · object[]

Advisory — the project was still created and stored at version 1. The same findings POST /v1/projects/{id}/ops returns after an edit, so you can see what needs repairing without a round trip.Truncated to the first 40 findings (errors first) on very large compositions, with a VIOLATIONS_TRUNCATED marker carrying the full count; the free dry run is never truncated.