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

# Create a project

`POST /projects`

## Request

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

Creates a project with the specified configuration. Note that flows can also be attached to the project later by calling endpoints to update the project.

## Request body

- ProjectCreate
  - `name` string, required
  - `description` string
  - `data_flows` ProjectFlowIdentifier[]
    - union
      - object
        - `data_source_id` integer: The ID of the data source which is the root node of this flow chain. Unless the flow chain has been created from a shared Nexset, flow definitions start from the source as the root node. This property reflects the source that is the root node of this flow.
      - object
        - `data_set_id` integer: The ID of the Nexset which is the root node of this flow chain. This property is not null only if the flow was created from a shared Nexset. In that case, this value reflects the ID of the derived dataset created from the shared Nexset.

## Response `200`

Success

- Project
  - `id` integer: Unique identifier of this project.
  - `owner` object
    - `id` integer
    - `full_name` string
    - `email` string
  - `org` object
    - `id` integer
    - `name` string
    - `email_domain` string
    - `client_identifier` string, nullable
  - `name` string
  - `description` string
  - `data_flows` ProjectDataFlow[]: List of all flows that are part of this project. > Note: This is a deprecated format of representing flows. We recommend using the `flows` entry in this object.
    - `id` integer: Unique identifier of this flow.
    - `project_id` integer: Unique identifier of the project this flow belongs to.
    - `data_source_id` integer: The ID of the data source which is the root node of this flow chain. Unless the flow chain has been created from a shared Nexset, flow definitions start from the source as the root node. This property reflects the source that is the root node of this flow.
    - `data_set_id` integer: The ID of the Nexset which is the root node of this flow chain. This property is not null only if the flow was created from a shared Nexset. In that case, this value reflects the ID of the derived dataset created from the shared Nexset.
    - `updated_at` string
    - `created_at` string
  - `flows` ProjectDataFlow[]: List of all flows that are part of this project. > Note: This is a new recommended format of representing flows. We recommend using this format which uses unique flow ids instead of the `data_flows` object.
    - `id` integer: Unique identifier of this flow.
    - `project_id` integer: Unique identifier of the project this flow belongs to.
    - `data_source_id` integer: The ID of the data source which is the root node of this flow chain. Unless the flow chain has been created from a shared Nexset, flow definitions start from the source as the root node. This property reflects the source that is the root node of this flow.
    - `data_set_id` integer: The ID of the Nexset which is the root node of this flow chain. This property is not null only if the flow was created from a shared Nexset. In that case, this value reflects the ID of the derived dataset created from the shared Nexset.
    - `updated_at` string
    - `created_at` string
  - `access_roles` string[]: This property reflects all the permissions the user/team/organization has to this resource. 1. `collaborator`: The user/team/organization can view the resource but not make any modifications to it. 2. `operator`: The user/team/organization can view the resource and can activate/pause it, but not make any other modifications to it. 3. `administrator`: The user/team/organization has complete administrative rights to this resource. 4. `owner`: This user created the resource and so has complete administrative rights to it.
  - `tags` string[]
  - `copied_from_id` string, nullable
  - `updated_at` string, date-time
  - `created_at` string, date-time

## Other responses

- `401`: Unauthorized
- `403`: Forbidden

---

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