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

# Create a project

`POST /projects`

## Request body

- CreateProjectBody
  - `name` string, required — Project name.
  - `folderId` string, uuid — Folder to create the project in. Omit to create at the workspace root. Resolve a folder name to its ID via `GET /folders`.
  - `projectType` 'standard' | 'notebook' | 'agent' — Project type. Omit to create a `standard` project; `notebook` creates a single-notebook project; `agent` creates an Agent project.

## Response `201`

Project created

- CreateProjectResponse
  - `project` object, required
    - `id` string, uuid, required
    - `name` string, required
    - `projectType` 'standard' | 'notebook' | 'agent', required — Project type.
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, nullable, required
    - `folder` ProjectFolder, required
      - `id` string, uuid, required
      - `name` string, required
      - `path` ProjectFolderPathSegment[], required — Folders from the workspace root to this folder, inclusive. Folder names are not unique — identify folders by segment `id`.
        - `id` string, uuid, required
        - `name` string, required
      - `isPathComplete` boolean, required — Whether `path` reaches the workspace root. False when the chain is cut short — an ancestor is not visible to the caller, or the hierarchy is inconsistent. Do not treat an incomplete path as the full hierarchy.
    - `notebooks` ListNotebooksItem[], required — The default notebook created in the project.
      - `id` string, required — Opaque notebook identifier.
      - `projectId` string, uuid, required
      - `name` string, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time
      - `isInit` boolean, required — Whether this notebook is the init notebook for the project, which can run as a prelude to other notebooks in it. Naming a notebook "Init" designates it.
      - `isScheduled` boolean, required — Whether this notebook is the scheduled notebook for the project.
      - `lastRunAt` string, date-time, nullable, required — When the notebook last ran, or null if it has not run yet.

## Other responses

- `400` — Validation error
- `401` — Unauthorized
- `403` — Insufficient permissions
- `404` — Folder not found
- `429` — Rate limit exceeded

---

[API](https://skmtc.net/deepnote/apis/deepnote-public-api.md) · [All operations](https://skmtc.net/deepnote/apis/deepnote-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/deepnote/deepnote-public-api/revisions/726970fd2992/schema)
