---
title: "Read the full arc: every season and episode, and the next step."
method: GET
path: "/story-projects/{projectId}/seasons"
tags: ["Projects"]
---

# Read the full arc: every season and episode, and the next step.

`GET /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

Read the full arc of the project: every season with its arc, every episode in it (product: every feature) with how far it has got, and the one next step. Read-only; costs no credits. Every season in order with its name, its one plain `summary` line (a product's `summaryNote` beside it) and its full arc; every episode in it — the Series Bible's planned episodes and every written script the Bible does not plan (`source: script`); on a product project, every feature of the feature map — with its code (S2E3), title, `state`, `availability` and `makeable` (product), any coverage hold, its finished videos (a story episode's through its script, a product feature's by `TrailerJob.bibleEpisodeId`), its Publishing release and (product) its footage line; each season's production offer and run; and `next`, the one next step (`readinessStep` names a product's setup step first). A recurring show reads as its newest 6 months (`mode: log`; `earlierSeasons` counts the rest, and `?months=N` reads the newest N). `?season=N` narrows the seasons; the next step still reads the whole arc. The same read MCP and Slug `list_project_seasons` and `sleeperhit projects seasons list` make.

## Query parameters

- `season` integer
- `months` integer

## Response `200`

The project's full arc and its next step.

- ProjectArc
  - `project` object, required
    - `id` string, required
    - `routeId` string, required
    - `name` string, required
    - `kind` 'story' | 'product', required
  - `mode` 'planned' | 'log', required: `log`: a recurring show, whose seasons are its months (newest first).
  - `seasons` ProjectArcSeason[], required
    - `number` integer, required
    - `name` string, required
    - `arc` string, nullable, required: What happens in the season (the Bible's season arc, in full).
    - `summary` string, nullable, required: The season in one plain sentence, the line every surface shows: a story's arc; a product's arc when it is already one short plain line, else read from its features ("12 features, from … to …").
    - `summaryNote` string, nullable, required: Product only: what the season shows after its main path, as its own short line.
    - `episodes` ProjectArcEpisode[], required
      - `source` 'bible' | 'script', required: `script`: a written script no Bible entry plans.
      - `episodeId` string, nullable, required: The Bible entry's id (never changes); null for a `script` row.
      - `code` string, required: `S2E3`.
      - `title` string, required
      - `summary` string, nullable, required
      - `state` 'planned' | 'outlined' | 'written' | 'read' | 'video' | 'published' | 'recorded', required
      - `availability` 'shipped' | 'beta' | 'planned' | 'unknown' | 'null', nullable, required: A product feature's; null on a story.
      - `makeable` boolean, required
      - `scriptId` string, nullable, required
      - `coverageHold` object, nullable, required
        - `score` number, nullable, required
        - `message` string, required
      - `videos` object, required
        - `count` integer, required
        - `latestJobId` string, nullable, required
      - `release` object, nullable, required
        - `id` string, required
        - `status` string, required
        - `at` string, date-time, nullable, required
      - `footage` object, nullable, required
        - `line` string, required
    - `production` object, required
      - `offered` boolean, required: Whether the season can be produced as a whole now.
      - `run` object, nullable, required
        - `id` string, required
        - `status` string, required
        - `line` string, required
  - `earlierSeasons` integer, required: A recurring show's months left out of this read.
  - `next` ProjectArcNextStep, required
    - `kind` 'bible_gate' | 'product_setup' | 'show' | 'season_run' | 'raise_coverage' | 'write' | 'record' | 'make_video' | 'confirm_features' | 'plan_season', required
    - `seasonNumber` integer
    - `episodeId` string
    - `readinessStep` 'app_connected' | 'app_signed_in' | 'features_learned' | 'tours' | 'recordings': A product's setup step that comes first.
    - `sentence` 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.
- `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/4534f5d25540?raw)
