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

# Create a Project

`POST /v1/projects`

Create a new Project in your workspace

## Request body

- ProjectCreateRequestDto
  - `userId` string, required — The ID of the user creating the project
  - `name` string, required — The name of the project
  - `accessLevel` 'PRIVATE' | 'WORKSPACE' — Who can access the new project. `PRIVATE` (default) restricts access to the owning user; `WORKSPACE` shares the project with all members of the calling workspace.
  - `settings` ProjectSettingsDto
    - `goal` string — High-level goal/description for the project (free text).
    - `toneId` string, nullable — Default Brand Voice (Tone) ID, e.g. `ton_...`. Pass `null` to clear.
    - `audienceId` string, nullable — Default Audience ID, e.g. `aud_...`. Pass `null` to clear.
    - `styleId` string, nullable — Default Style Guide ID, e.g. `sty_...`. Pass `null` to clear.
    - `knowledgeIds` string[] — Knowledge IDs (`kno_*`) to attach to the project. Replaces the existing set of knowledge attachments; pass an empty array to clear them. Non-knowledge attachments are not affected.
  - `metadata` object — An optional set of key-value pairs to attach any data you wish to the project, in a structured format. You can specify up to 10 keys, with key names up to 40 characters long and values up to 500 characters long. `null` values are accepted but ignored on create (there is nothing to clear yet) and are supported for symmetry with the update endpoint.

## Response `201`

Project created

- ProjectResponseDto
  - `requestId` string, required
  - `resource` string, required
  - `data` ProjectData[], required
    - `id` string, required — The unique identifier of the project
    - `name` string, required — The name of the project
    - `userId` string, required — The ID of the user creating the project
    - `appUrl` string, required — The client URL to view the project in the Jasper app
    - `accessLevel` 'PRIVATE' | 'WORKSPACE' — Who currently has access to the project. `WORKSPACE` means every member of the calling workspace can access it; `PRIVATE` means access is limited to the owner (and anyone explicitly shared in).
    - `settings` ProjectSettingsDto
      - `goal` string — High-level goal/description for the project (free text).
      - `toneId` string, nullable — Default Brand Voice (Tone) ID, e.g. `ton_...`. Pass `null` to clear.
      - `audienceId` string, nullable — Default Audience ID, e.g. `aud_...`. Pass `null` to clear.
      - `styleId` string, nullable — Default Style Guide ID, e.g. `sty_...`. Pass `null` to clear.
      - `knowledgeIds` string[] — Knowledge IDs (`kno_*`) to attach to the project. Replaces the existing set of knowledge attachments; pass an empty array to clear them. Non-knowledge attachments are not affected.
    - `metadata` object — Set of key-value pairs previously attached to the project via create/update. Omitted from the response when no metadata is set.

## Other responses

- `400` — Bad request. May be missing required inputs or may have badly formatted inputs.
- `401` — Unauthorized access to the workspace.
- `404` — Not found. May have an incorrect URL path.
- `500` — Internal server error. Unable to create project.

---

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