POST /api/v1/projects
Requires projects.write permission. The slug is automatically generated from the provided name.
Request body
Display name for the project. Example: My Project.
Optional description for the project. Pass null to leave it unset.
Response
The newly created project.
UUID of the owning organization.
URL-safe identifier auto-generated from the name.
ISO 8601 creation timestamp.
ISO 8601 last-updated timestamp.
Errors
| Status | When |
|---|
400 | Request body is invalid or missing required fields |
401 | Missing or invalid Bearer token |
403 | Caller lacks projects.write permission |
409 | A project with the generated slug already exists |
Example
curl -X POST http://localhost:8080/api/v1/projects \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"name": "My Project", "description": "Main product feature flags"}'
{
"project": {
"id": "p1b2c3d4-e5f6-7890-abcd-ef1234567890",
"organization_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"slug": "my-project",
"name": "My Project",
"description": "Main product feature flags",
"created_at": "2026-03-21T10:00:00Z",
"updated_at": "2026-03-21T10:00:00Z"
}
}