Publishing

Create a project-owned publishing series.

Creates the series: medium, format, destination metadata, and prompt direction. Audio series automatically get a first-party RSS destination. A show made from the series is its own resource: /publishing-series/{seriesId}/show.

post/story-projects/{projectId}/publishing-series

Request

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

Headers

Idempotency-Keystring required

Customer-generated stable identifier for safe retries of idempotent POST requests.

Request body

titlestring

Series title. When omitted, defaults to the project name.

slugstring
descriptionstring
medium'audio' | 'video' | 'short_form' | 'text' | 'mixed'
formatstring
status'draft' | 'active' | 'paused' | 'archived'
timezonestring
languagestring
rating'clean' | 'explicit' | 'unknown'
explicitContentboolean
podcastType'episodic' | 'serial'
podcastCategorystring
podcastSubcategorystring
coverArtUrlstring uri
websiteUrlstring uri
copyrightstring
syntheticDisclosurestring

The show's synthetic-media line (legal gap G8a): it ends the feed's description and every episode's notes, is the feed's podcast:txt (purpose synthetic-media) and shows on the show's pages. Reword it; it can never be empty (default: "Voices and music in this show are synthetic.").

ownerNamestring
ownerEmailstring
promptDirectionstring
metadataobject
visibility'public' | 'unlisted' | 'private'

What the show's slug exposes: public (landing page, archive, and the podcast feed), unlisted (shared episode links and the podcast feed, reached by link: never indexed, and the feed asks podcast directories not to list it), or private (nothing; the feed answers 404). A draft show's feed is served too.

standingApprovalKeyIdstring nullable

Grant the show's standing approval to ONE API key (its id, or "self" for the calling key; an OAuth connection or a CLI/app sign-in key cannot hold one, so use a named API key): the app holding it makes the show from then on, and a show Sleeper was making turns off. Null revokes it. Granting requires userConfirmed: true; audio series only.

userConfirmedtrue

Required when the request grants a standing approval (standingApprovalKeyId set), after the user explicitly agrees the app may approve and publish episodes without asking each time.

Example request

{
  "format": "podcast",
  "podcastCategory": "Fiction",
  "podcastSubcategory": "Drama"
}

Response

Publishing series envelope.

Example response

{
  "series": {
    "format": "podcast",
    "podcastCategory": "Fiction",
    "podcastSubcategory": "Drama"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.