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

# Create a project

`POST /projects`

## Request

- Base URL: `https://api.spectate.net/v1`
- URL: `https://api.spectate.net/v1/projects`
- Auth: HTTP bearer

Plans limit the number of projects: over the limit the request fails with `403`
`PLAN_LIMIT_REACHED`. Escalation paths must belong to the team (`422` otherwise).

## Request body

- CreateProject: A new project.
  - `name` string, required: Project name
  - `escalation_path_ids` string[]: Escalation paths for alerts of the project's monitors and hosts. Leave out for none

## Response `201`

The new project.

- Project: A project: a group of monitors and hosts that share escalation paths. Every team has one default project, which can't be deleted.
  - `id` string, uuid, required: Project ID
  - `name` string, required: Project name
  - `is_default` boolean, required: Whether this is the team's default project, which new monitors and hosts join when no project is given. It can't be deleted
  - `escalation_paths` EscalationPathReference[], required: Escalation paths that alerts of this project's monitors and hosts follow, unless a monitor or host sets its own
    - `id` string, uuid, required: Escalation path ID
    - `name` string, required: Escalation path name
  - `created_at` string, date-time, required: When the project was created

## Other responses

- `401`: `UNAUTHENTICATED`: no token was sent. `INVALID_TOKEN`: the token is unknown or revoked. `TOKEN_EXPIRED`: the token has expired.
- `403`: `PLAN_LIMIT_REACHED`: the plan doesn't allow another one; `details.feature` names the limit. `FORBIDDEN`: the token lacks an ability this endpoint requires (listed in `details.required_abilities`). `TEAM_PENDING_DELETION`: the team is scheduled for deletion. `TEAM_SUSPENDED`: Spectate suspended the team.
- `422`: `VALIDATION_FAILED`: the request is invalid; `details.errors` lists the fields.
- `429`: `RATE_LIMITED`: too many requests for this token. Wait for the number of seconds in `Retry-After`.

---

[API](https://skmtc.dev/spectate/apis/spectate-api.md) - [All operations](https://skmtc.dev/spectate/apis/spectate-api/llms.txt) - [OpenAPI document](https://skmtc.dev/spectate/apis/spectate-api/revisions/9b1a233997de?raw)
