---
title: "Name a new season."
method: POST
path: "/story-projects/{projectId}/seasons"
tags: ["Projects"]
---

# Name a new season.

`POST /story-projects/{projectId}/seasons`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/story-projects/{projectId}/seasons`
- Auth: HTTP bearer

The project page's "Add season", through its core: the lowest free season number, named as given (at most 80 characters) or "Season N". Move an episode into it with PATCH /scripts/{scriptId} `seasonNumber`. Refused with 409 `project_precondition_failed` until the project can plan (premise coverage, canon and the Mood board). Written under the project's row lock, so a concurrent project update keeps it. Free. Requires `Idempotency-Key`.

## Headers

- `Idempotency-Key` string, required

## Request body

- ProjectSeasonCreateRequest
  - `name` string: Leave out for "Season N".

## Response `200`

The new season and every season the project now has.

- ProjectSeasonCreateResponse
  - `season` object, required
    - `number` integer, required
    - `name` string, required
  - `seasons` object[], required
    - `number` integer, required
    - `name` string, required

## Other responses

- `400`: Request payload failed validation. The error message names the offending field.
- `401`: Missing, malformed, revoked, or expired API key.
- `403`: API key is valid but lacks the scope, is blocked by IP allowlist, or the account is disabled.
- `404`: The named project or source does not exist or is owned by another account.
- `409`: The project has not reached the development stage this call needs (`project_precondition_failed`), and nothing was created, queued or charged. `details` is ProjectPreconditionDetails: `stage` names the stage to finish, `missingFields` what it still lacks, `canPlan` / `canStartEpisode` what the project can do now. Finish the named stage — do not retry; the identical call refuses the same way until it is done.
- `429`: Rate limit for this API key + IP + route family was exceeded.
- `500`: The API failed unexpectedly. Safe to retry with the same Idempotency-Key.

---

[API](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api.md) · [All operations](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sleeperhit/apis/sleeper-hit-studio-story-api/revisions/64c1102ccb2f?raw)
