---
title: "List a project's trailers."
method: GET
path: "/story-projects/{projectId}/trailers"
tags: ["Trailer"]
---

# List a project's trailers.

`GET /story-projects/{projectId}/trailers`

## Request

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

Lists the project's season- and project-scoped trailer jobs, newest first: each trailer's `id`, `title`, `status`, `createdAt` / `updatedAt`, `targetSeconds`, `motionTheme`, `beatCount`, `published`, the last render's `renderedVideoStatus` / `renderedVideoUrl` and any `errorMessage`. `?season=N` narrows it to one season; `?episode=<episodeId>` (an episode id from GET /story-projects/{projectId}/seasons) lists one episode's videos instead: a story episode's trailers through its script, or the project videos made of a product feature (`bibleEpisodeId`). Other episode trailers are keyed on their script's upload and are not listed here, and a project the caller cannot open lists nothing. The same read MCP `list_trailers` makes. Read-only; costs no credits. Scope: `story:read`.

## Query parameters

- `season` integer
- `episode` string

## Response `200`

The project's trailers, newest first.

- object[]
  - `id` string, required
  - `title` string, required
  - `status` string, required: The trailer's workflow status (draft / rendering / review / finishing / complete / failed).
  - `createdAt` string, date-time
  - `updatedAt` string, date-time
  - `targetSeconds` number, nullable
  - `motionTheme` string, nullable
  - `beatCount` integer, nullable
  - `renderedVideoStatus` string, nullable
  - `renderedVideoUrl` string, nullable
  - `published` boolean
  - `errorMessage` string, nullable

## 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.
- `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)
