---
title: "List what is ready to add to a series' feed."
method: GET
path: "/publishing-series/{seriesId}/ready-recordings"
tags: ["Publishing"]
---

# List what is ready to add to a series' feed.

`GET /publishing-series/{seriesId}/ready-recordings`

## Request

- Base URL: `https://docs.sleeperhit.studio/api/v1`
- URL: `https://docs.sleeperhit.studio/api/v1/publishing-series/{seriesId}/ready-recordings`
- Auth: HTTP bearer

The finished masters of the series' project that its feed does not hold yet — the Publishing page's "Ready to publish" list. One row per episode (its newest finished table-read recording, whether or not its Table Read sent it to Publishing) and one per rendered video master. An episode already in the feed is left out (put a newer recording behind a published episode with POST /publishing-releases/{releaseId}/refresh-media), as is one whose release here was canceled, unless its recording was sent to Publishing since; a season-run recording is released by its season run. A video series lists videos only. Add a row with POST /publishing-series/{seriesId}/releases (`sourceArtifactId`, `title`). A row taken off the list with DELETE /publishing-series/{seriesId}/ready-recordings/{sourceArtifactId} stays off (its episode with it), as does a recording titled "(not an episode)". Free; reads only.

## Response `200`

What is ready to add to the feed.

- PublishingReadyRecordingList
  - `recordings` PublishingReadyRecording[], required
    - `sourceArtifactId` string, required: Pass as `sourceArtifactId` to POST /publishing-series/{seriesId}/releases to add it to the feed.
    - `title` string, required: The stored episode or video title; pass it as the release `title`.
    - `label` string, required: The name the Publishing page and every other surface list it by: "S1E1 — The Return" for an episode, its title for a video. Display only.
    - `medium` 'audio' | 'short_form' | 'video', required: `audio` for a recording; `short_form` for a portrait video master, `video` for a widescreen one.
    - `durationMs` integer, nullable, required
    - `renderedAt` string, date-time, required
    - `recordedVersion` integer, nullable, required: The script version this recording performs; null for a video.
    - `currentVersion` integer, nullable, required: The script's newest version; null for a video. Higher than `recordedVersion` when the script has moved on since the recording.
    - `currentScriptUploadId` string, nullable, required: The newest version's id. To record it, POST /scripts/{scriptUploadId}/table-read/prepare (quoted first, then confirmed); the older recording can still be added as it is.
    - `versionSummary` string, nullable, required: `Recorded from v6`, or `Recorded from v1 · the script is now v6`: the words the Publishing page shows. Null for a video.
    - `previewUrl` string, nullable, required: The finished MP3 or MP4, to hear or watch before adding it.

## Other responses

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