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

# Create a project

`POST /v1/projects`

## Request

- Base URL: `https://api.masko.ai`
- URL: `https://api.masko.ai/v1/projects`
- Auth: HTTP bearer

Creates a new project under the authenticated user. Projects are lightweight containers - create one per product or per workspace. Returns 201 with the new project record. No credit cost.

Select Masko-API-Version: 2026-09-26 (or api_version=2026-09-26) for the canonical mascot contract shown first. Existing unversioned clients keep legacy collection fields. A mascot_id query filter also selects the canonical contract. Mixing identifier names returns 400.

## Query parameters

- `api_version` '2026-09-26' | 'legacy'

## Headers

- `Idempotency-Key` string
- `Masko-API-Version` '2026-09-26' | 'legacy'

## Request body

- CreateProjectBody
  - `name` string, required: Project display name. 1 to 255 characters.

## Response `201`

Created project

- ProjectResponse
  - `data` Project, required
    - `object` 'project': Resource type. Always "project".
    - `id` string, uuid, required
    - `name` string, required
    - `organization_id` string, uuid, nullable, required
    - `created_at` string, required
    - `updated_at` string, required

## Other responses

- `400`: Validation error
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not found
- `409`: Conflict

---

[API](https://skmtc.dev/masko/apis/masko-api.md) · [All operations](https://skmtc.dev/masko/apis/masko-api/llms.txt) · [OpenAPI document](https://skmtc.dev/masko/apis/masko-api/revisions/91eb3006a92f?raw)
