---
title: "Create a project in a project folder"
method: POST
path: "/workspaces/{workspaceId}/folders/{folderId}/projects"
tags: ["Projects"]
---

# Create a project in a project folder

`POST /workspaces/{workspaceId}/folders/{folderId}/projects`

## Request

- Base URL: `https://app.flora.ai/api/v1`
- URL: `https://app.flora.ai/api/v1/workspaces/{workspaceId}/folders/{folderId}/projects`
- Auth: HTTP bearer

Creates a new Flora project filed into the given project folder. The folder must belong to the workspace named in the path; private folders are reachable only by their owner, and an unreachable folder returns 404 rather than disclosing that it exists. Mutating public API requests support an optional Idempotency-Key header for client retries; duplicate keys within two hours return idempotency_duplicate.

## Path parameters

- `workspaceId` string, required: Workspace identifier
- `folderId` string, required: Project folder identifier

## Request body

- object
  - `name` string, required: Project name

## Response `201`

Project created.

- object
  - `project_id` string, required: Project identifier
  - `name` string, required: Project name
  - `thumbnail_url` string, uri, nullable: HTTPS project thumbnail URL, or null when unavailable. Uses the manual cover, then the automatic thumbnail, then the legacy project picture. Non-HTTPS URLs are returned as null.
  - `is_private` boolean: True when only the creator sees the project, rather than the whole workspace. Absent when the API cannot tell.
  - `workspace_id` string, required: Workspace identifier
  - `origin` string, nullable, required: Project origin
  - `last_modified` number, nullable, required
  - `created_at` number, required

## Other responses

- `400`: 400
- `401`: 401
- `402`: 402
- `403`: 403
- `404`: 404
- `409`: 409
- `429`: 429
- `500`: 500
- `503`: 503

## Changes

- **2026-10-28** `a8351619f225`: 9 warning
  - added the new `not_configured` enum value to the `error/code` response property for the response status `400`
  - added the new `not_configured` enum value to the `error/code` response property for the response status `401`
  - added the new `not_configured` enum value to the `error/code` response property for the response status `402`
  - added the new `not_configured` enum value to the `error/code` response property for the response status `403`
  - …5 more
- **2026-10-16** `e54130373b10`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/florafauna-ai/apis/flora-ai-api/changes/workspaces/:workspaceId/folders/:folderId/projects/post.md)

---

[API](https://skmtc.dev/florafauna-ai/apis/flora-ai-api.md) - [All operations](https://skmtc.dev/florafauna-ai/apis/flora-ai-api/llms.txt) - [OpenAPI document](https://skmtc.dev/florafauna-ai/apis/flora-ai-api/revisions/87cfe2c4ac29?raw)
