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

# Create a new project

`POST /projects`

## Request

- Base URL: `https://app.ketryx.com/api/v1`
- URL: `https://app.ketryx.com/api/v1/projects`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/ketryx/apis/ketryx-api/docs/projects/post.ts> (a function with typed inputs; its response is checked against the schema)

## Request body

- object
  - `name` string, required: Name of the new project
  - `key` string: Human-readable project key (1-10 uppercase alphanumeric characters, must start with a letter). Used in item keys (e.g. KX-PROJ-1). "ORG" and "GLOBAL" are reserved.
  - `repositories` object[]: Git repositories to connect to the new project
    - `url` string: Repository URL. While SSH cloning is enabled for the organization, an Oracle Cloud DevOps ssh:// URL is refused: it needs an SSH key, which only the project settings can select.
    - `mainRef` string
    - `releaseRef` string
    - `browseUrl` string, nullable: Console URL for hosts whose clone URL cannot be browsed (Oracle DevOps code repositories). Omit to keep the stored value; send null or an empty string to clear it.
    - `authUser` string
    - `authToken` string
  - `configurationSourceProjectId` string: ID of a template project or an existing project in the same organization whose configuration the new project starts from: advanced settings, enforcement flags, approval rules, risk configuration, versions, document folders, cross-project references, compliance framework selections, and agents. Items, connections, repositories, and permissions are never copied. Requires the `enableProjectTemplates` feature flag.

## Response `200`

OK

- object
  - `id` string: ID of the created project
  - `configurationWarnings` object[]: Non-blocking findings from the configuration copy, e.g. a filter that no longer resolves. Empty when no `configurationSourceProjectId` was given.
    - `area` string
    - `name` string
    - `message` string

## Other responses

- `400`: The request is not valid.
- `401`: The requester is not authenticated.
- `403`: The requester is unauthorized.
- `404`: The resource was not found.

---

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