Skip to navigation

Create a project

View as MarkdownOpen in Claude

Creates a project. Which kind depends on the credential:

  • With a project API token, the new project is always a subproject of the authenticated root project, and parent_project_id is ignored. Creating while authenticated as a subproject fails with 422 nested_subprojects_not_allowed, since a subproject cannot contain subprojects.
  • With a Personal access token, omit parent_project_id to create a root project, or set it to create a subproject of that project. The parent must be a root project the token holder can reach (invalid_parent_project_id, nested_subprojects_not_allowed).

A new root project has no API token yet. Give it one with Create API token, passing its id as project_id.

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 instead.

Permissions

With a project API token, the token must have the following scope(s) enabled to make a successful request: Management.

With a Personal access token there are no scopes. The token holder must be an owner or admin of the space, and the request reaches only the projects the holder is enabled for, plus their subprojects.

Learn more about API scopes.

Authentication

AuthorizationBasic

SignalWire Basic Authentication using Project ID and API Token.

The client sends HTTP requests with the Authorization header containing the word Basic followed by a space and a base64-encoded string of project_id:token. The project ID will be used as the username and the API token as the password.

Example:

Authorization: Basic base64(project_id:token)
OR
AuthorizationBasic

Personal access token authentication for space-wide administration.

Send HTTP Basic auth with an empty username and the Personal access token as the password. A Personal access token carries your own authority rather than a project's: it is created from your user menu in the Dashboard, is prefixed pat_, and has no scopes. The holder must be an owner or admin of the space named by the subdomain, and the token acts only on that space.

Example:

Authorization: Basic base64(:pat_...)

Request

This endpoint expects an object.
namestringRequired<=250 characters
The name of the project.
parent_project_idstringOptionalformat: "uuid"

Personal access token only. The root project to create the new project under. Omit it to create a root project. Must name a root project the token holder can reach (invalid_parent_project_id, nested_subprojects_not_allowed). Ignored with a project API token, which always creates a subproject of its own project.

protect_recordingsbooleanOptional
When enabled, recordings created within the project require authentication to access.
protect_message_mediabooleanOptional
When enabled, message media created within the project requires authentication to access.
protect_fax_mediabooleanOptional
When enabled, fax media created within the project requires authentication to access.
force_https_requestsbooleanOptional
When enabled, requests made to the project's webhooks and callbacks must use HTTPS.

Response

The request has succeeded and a new resource has been created as a result.
idstringformat: "uuid"
The unique identifier of the project.
namestring
The name of the project.
parent_project_idstring or nullformat: "uuid"

The unique identifier of the root project. null when this project is itself a root project.

subprojectboolean

true when this project is a subproject.

region_preferencestring

The effective region preference for the project. Returned in all responses; it is not currently settable through this API.

protect_recordingsboolean
When enabled, recordings created within the project require authentication to access.
protect_message_mediaboolean
When enabled, message media created within the project requires authentication to access.
protect_fax_mediaboolean
When enabled, fax media created within the project requires authentication to access.
force_https_requestsboolean
When enabled, requests made to the project's webhooks and callbacks must use HTTPS.
created_atdatetime
The date and time when the project was created.
updated_atdatetime
The date and time when the project was last updated.
signing_keystring

The project's signing key. Only returned on create and signing-key rotation responses; it cannot be retrieved through the API afterward.

Errors

401
Unauthorized Error
422
Unprocessable Entity Error
500
Internal Server Error