A feed URL is a valid source
Because a podcast feed is an RSS document and each episode's audio lives in its <enclosure>, Pepys accepts a feed URL (or an Apple Podcasts link) anywhere a media URL is accepted. Send it as url and the latest episode is transcribed.
To transcribe a different episode, list the feed first and pass either its guid alongside the feed URL, or its index from the newest – 0 for the newest, 1 for the next, and so on.
curl "https://pepys.co/api/v1/podcasts/episodes?feed=https://feeds.simplecast.com/54nAGcIl&limit=3" \
-H "Authorization: Bearer pk_live_…"
# → { "total": 2900, "returned": 3, "data": [ { "title", "guid", "published_at", "duration_seconds", "audio_url" } ] }# by guid (no need to pass the audio_url):
curl -X POST https://pepys.co/api/v1/transcriptions \
-H "Authorization: Bearer pk_live_…" \
-d '{ "url": "<feed_url>", "episode_guid": "<guid>" }'
# (or "episode_index": 0 for the newest, 1 for the next, …)Transcribe a whole feed
POST /api/v1/podcasts/transcribe fans a feed out into one transcription per episode and groups them as a batch. episodes accepts "latest" (the default), "all", or a number.
Each transcription id in the response is polled or webhook-notified like any other job, and the batch_id groups the run.
curl -X POST https://pepys.co/api/v1/podcasts/transcribe \
-H "Authorization: Bearer pk_live_…" \
-d '{ "feed": "<feed_or_apple_url>", "episodes": "all", "diarize": true }'
# episodes: "latest" (default) | "all" | <number>
# → 202 { "batch_id": "…", "total": 42, "transcriptions": [ { "id", "title", "guid", "url" } ] }