---
title: "Make a show episode now (a preview or an extra)."
method: POST
path: "/publishing-series/{seriesId}/show/episodes"
tags: ["Shows"]
---

# Make a show episode now (a preview or an extra).

`POST /publishing-series/{seriesId}/show/episodes`

## Request

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

Make one episode now. `kind: "preview"` (the default) is made from the show's sources like any episode and priced the same, held for the creator to hear and never published, and claims nothing; pass `itemId` to make it from one item, even one that already aired. `kind: "extra"`, on a show made in Sleeper, goes out like any other and claims its item. A show an outside app makes takes previews only (409 `show_made_outside`). Two calls: without `userConfirmed` it quotes (nothing made); with `userConfirmed: true` it charges and queues. If the episode cannot be queued it is marked failed and nothing is charged (409 `show_episode_not_queued`; try again when the one queued finishes). Refused while the show cannot run (sources, caps), with 409 `project_precondition_failed` / `cast_precondition_failed` / `show_not_ready` while the project cannot make an episode, and with 409 `show_cap_reached` when the month cannot pay for one. Requires `Idempotency-Key`.

## Headers

- `Idempotency-Key` string, required

## Request body

- MakeShowEpisodeRequest
  - `kind` 'preview' | 'extra'
  - `itemId` string: The item to make it from (`hn:<id>`, a feed entry's link, `web:<url>`): any item for a preview, an uncovered one for an extra.
  - `userConfirmed` boolean: Charges and queues; without it the call only quotes.

## Response `200`

Quoted, or queued.

- MakeShowEpisodeResponse
  - `status` 'quoted' | 'queued', required
  - `quotedOnly` true
  - `kind` 'preview' | 'extra', required
  - `itemId` string, nullable, required
  - `credits` integer, required
  - `balanceAfter` integer, required
  - `sufficient` boolean, required
  - `caps` object, required
    - `episodeCap` integer, nullable, required
    - `monthlyCap` integer, nullable, required
  - `monthToDate` object, required
    - `spent` integer, required
    - `from` string, date-time, required
  - `episodeId` string, nullable, required
  - `note` string, required

## Other responses

- `400`: Request payload failed validation. The error message names the offending field.
- `401`: Missing, malformed, revoked, or expired API key.
- `402`: Not enough Studio Credits to reserve this job (`insufficient_credits`), and nothing was reserved. `details` is InsufficientCreditsDetails: `required` and `available`, and `autoTopup` when auto top-up is on but did not cover it — `pending` (retry in a moment), `over_cap` (raise the monthly spending cap), `too_small` (buy a bigger pack) or `failed`.
- `403`: API key is valid but lacks the scope, is blocked by IP allowlist, or the account is disabled.
- `404`: The publishing series, destination, or release does not exist or is owned by another account.
- `409`: Nothing was made or charged: `show_made_outside` (an outside app makes this show: a preview only; `details.keyName`, `details.website`), `show_item_already_aired` (an extra of an item the show already covered; `details.itemKeys`), `show_cap_reached` (the month cannot pay for one; `details.scope`, `cap`, `credits`, `wouldSpend`), `show_episode_not_queued` (a job for it was already queued; the episode is failed and nothing is charged, `details.retryable`: try again when it finishes), `show_not_ready` / `project_precondition_failed` / `cast_precondition_failed` (the project cannot make an episode yet: `details.reason` or `details.stage` names what to finish), or `idempotency_conflict` (this Idempotency-Key is in flight, or was used with another body).
- `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)
