---
title: "Create project"
method: POST
path: "/api/admin/projects"
tags: ["Projects"]
---

# Create project

`POST /api/admin/projects`

**Enterprise feature**

Create a new [Unleash project](https://docs.getunleash.io/concepts/projects).

## Request body

- CreateProjectSchema — Data used to create a new [project](https://docs.getunleash.io/concepts/projects).
  - `id` string — The project's identifier. If this property is not present or is an empty string, Unleash will generate the project id automatically. This property is deprecated.
  - `name` string, required — The project's name. The name must contain at least one non-whitespace character.
  - `description` string, nullable — The project's description.
  - `mode` 'open' | 'protected' | 'private' — A mode of the project affecting what actions are possible in this project
  - `defaultStickiness` string — A default stickiness for the project affecting the default stickiness value for variants and Gradual Rollout strategy
  - `environments` string[] — A list of environments that should be enabled for this project. If this property is missing, Unleash will default to enabling all non-deprecated environments for the project. An empty list will result in no environment enabled for the project.
  - `changeRequestEnvironments` object[] — A list of environments that should have change requests enabled. If the list includes environments not in the `environments` list, they will still have change requests enabled.
    - `name` string, required — The name of the environment to configure change requests for.
    - `requiredApprovals` integer — The number of approvals required for a change request to be fully approved and ready to applied in this environment. If no value is provided, it will be set to the default number, which is 1. Values will be clamped to between 1 and 10 inclusive.

## Response `201`

The resource was successfully created.

- ProjectCreatedSchema — Details about the newly created project.
  - `id` string, required — The project's identifier.
  - `name` string, required — The project's name.
  - `description` string, nullable — The project's description.
  - `featureLimit` integer, nullable — A limit on the number of features allowed in the project. `null` if no limit.
  - `mode` 'open' | 'protected' | 'private' — A mode of the project affecting what actions are possible in this project
  - `defaultStickiness` string — A default stickiness for the project affecting the default stickiness value for variants and Gradual Rollout strategy
  - `environments` string[] — The environments enabled for the project.
  - `changeRequestEnvironments` object[] — The list of environments that have change requests enabled.
    - `name` string, required — The name of the environment this change request configuration applies to.
    - `requiredApprovals` integer, required — The number of approvals required for a change request to be fully approved and ready to applied in this environment. If no value is provided, it will be set to the default number, which is 1. The value must be greater than or equal to 1.

## Other responses

- `400` — The request data does not match what we expect.
- `401` — Authorization information is missing or invalid. Provide a valid API token as the `authorization` header, e.g. `authorization:*.*.my-admin-token`.
- `403` — The provided user credentials are valid, but the user does not have the necessary permissions to perform this operation
- `415` — The operation does not support request payloads of the provided type. Please ensure that you're using one of the listed payload types and that you have specified the right content type in the "content-type" header.

---

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