---
title: "Create a Project"
method: POST
path: "/v1/projects"
tags: ["Projects"]
---

# Create a Project

`POST /v1/projects`

Creates a project owned by a team. The requester must be an
editor-or-above member of the owning team, or an admin of that team's
organization. The project name and slug must each be unique within the
owning team.

## Request body

- CreateProjectRequest
  - `team_id` string, uuid, required — The team that will own the project.
  - `name` string, required — Human-readable project name.
  - `slug` string — Optional normalized slug; derived from the name when omitted.

## Response `201`

Project created successfully

- ProjectResponse
  - `project` Project, required
    - `id` string, uuid, required
    - `owning_team_id` string, uuid, required — The team that owns the project.
    - `name` string, required — Human-readable project name, unique within the owning team.
    - `slug` string, required — Normalized identifier, unique within the owning team.
    - `created_at` string, date-time, required

## Other responses

- `400` — Invalid request (invalid body, invalid team_id, or missing name)
- `401` — Unauthorized
- `403` — Forbidden (requester is not an editor of the team or an org admin)
- `404` — Owning team not found
- `409` — A project with this name or slug already exists in the team
- `500` — Internal Server Error

---

[API](https://skmtc.net/px0-ai/apis/px0-api.md) · [All operations](https://skmtc.net/px0-ai/apis/px0-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/px0-ai/px0-api/versions/3ed72443989d/schema)
