PodcastsToText
Transcriptions

Publish an episode

Put a transcript on a public page, the ownership check it requires, and why retrying it is safe.

POST/api/v1/episodes/{id}/publishscope: shows:write

Put an episode’s transcript on a public, indexable page under your show. No body. {id} is an episode id from a connected show, not a transcription id.

200 OK
{
  "url": "https://podcaststotext.com/p/hard-fork/the-ai-bubble-episode",
  "episode_id": "9f2a…",
  "show_id": "b41c…",
  "title": "The AI bubble episode",
  "already_public": false,
  "message": "Published. It may take a moment to appear.",
  "next_actions": ["Share url: it is a public, indexable page"]
}

Idempotent. Publishing an already-public episode returns the same url, sets already_public: true, and changes nothing: a retry after a timeout cannot double-publish or move the page.

What has to be true first

  • The episode belongs to a connected show: connect the feed at your sources page, list them with `GET /api/v1/shows`.
  • That show is verified as yours (verified: true). Verification is a human step, deliberately: the alternative is a key that can publish under a feed it does not own.
  • The episode already has a transcript. Publish renders one; it does not start one.

Any of these missing returns 400 bad_request with the reason in how_to_fix. Publishing fires the episode.published webhook, so a CMS can pick the URL up without polling.