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

# Create a subproject

`POST /api/projects`

Creates a subproject under the authenticated root project.

Creating a project is only allowed when authenticated as a top-level (root) project.
A subproject cannot itself contain subprojects, so attempting to create one while
authenticated as a subproject fails with `422 nested_subprojects_not_allowed`.

The response includes the `signing_key`. This is the only time it is returned — it
cannot be retrieved through the API afterward, so capture it from this response.

Use a subproject to isolate settings and resources beneath a root project. Integrations built around Compatibility API Account SIDs can use [Create subprojects](/docs/compatibility-api/rest/accounts/create-subprojects) instead.

#### Permissions

The API token used to authenticate must have the following scope(s) enabled to make a successful request: _Management_.

[Learn more about API scopes](/docs/platform/your-signalwire-api-space).

## Request body

- ProjectsCreateProjectRequest — Request body for creating a subproject.
  - `name` string, required — The name of the subproject.
  - `protect_recordings` boolean — When enabled, recordings created within the project require authentication to access.
  - `protect_message_media` boolean — When enabled, message media created within the project requires authentication to access.
  - `protect_fax_media` boolean — When enabled, fax media created within the project requires authentication to access.
  - `force_https_requests` boolean — When enabled, requests made to the project's webhooks and callbacks must use HTTPS.

## Response `201`

The request has succeeded and a new resource has been created as a result.

- ProjectsProjectWithSigningKey — A project, including its `signing_key`. The `signing_key` is only returned when creating a subproject or rotating a project's signing key. It is not retrievable afterward, so capture it from the response.
  - `id` string, uuid, required — Universal Unique Identifier.
  - `name` string, required — The name of the project.
  - `parent_project_id` string, uuid, required — Universal Unique Identifier.
  - `subproject` boolean, required — `true` when this project is a subproject.
  - `region_preference` string, required — The effective region preference for the project. Returned in all responses; it is not currently settable through this API.
  - `protect_recordings` boolean, required — When enabled, recordings created within the project require authentication to access.
  - `protect_message_media` boolean, required — When enabled, message media created within the project requires authentication to access.
  - `protect_fax_media` boolean, required — When enabled, fax media created within the project requires authentication to access.
  - `force_https_requests` boolean, required — When enabled, requests made to the project's webhooks and callbacks must use HTTPS.
  - `created_at` string, date-time, required — The date and time when the project was created.
  - `updated_at` string, date-time, required — The date and time when the project was last updated.
  - `signing_key` string, required — The project's signing key. Only returned on create and signing-key rotation responses; it cannot be retrieved through the API afterward.

## Other responses

- `401` — Access is unauthorized.
- `422` — The request could not be processed. When creating a project while authenticated as a subproject, the response includes the `nested_subprojects_not_allowed` code. A blank or overly long `name` returns a standard validation error.
- `500` — An internal server error occurred.

## Changes

> 137 revisions in range; 3 could not be searched.

- **2026-07-13** `e3d7a1ccbc4f` — 2 info
  - added the non-success response with the status `500`
  - removed the non-success response with the status `403`
- **2026-07-10** `0f65a5bc6e5c` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/signalwire/apis/signalwire-rest-api/changes/api/projects/post.md)

---

[API](https://skmtc.dev/signalwire/apis/signalwire-rest-api.md) · [All operations](https://skmtc.dev/signalwire/apis/signalwire-rest-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/signalwire/signalwire-rest-api/revisions/792d5b8e2970/schema)
