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

# Create a project in a workspace

`POST /workspaces/{workspaceId}/projects`

## Request

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

Creates a new Flora project in the workspace named in the path. Prefer this over `POST /projects` when a credential can reach more than one workspace: the destination is explicit rather than carried in the body. To file the project into a project folder, use the folder route below. 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

## 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/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)
