New: Import recordings from Google Drive, OneDrive, Zoom, Dropbox & Box. First 3 imports free.

Import a recording
Pepys

API & MCP

Podcasts

A podcast is an RSS feed, and each episode's audio is its enclosure – so a feed URL is a valid source.

In short

Pass a podcast RSS or Apple Podcasts link as the url of a transcription to transcribe its latest episode, or list the feed's episodes first and transcribe a specific one by guid. POST /api/v1/podcasts/transcribe fans a whole feed out into one transcription per episode, grouped as a batch.

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.

List episodes
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" } ] }
Transcribe a specific episode
# 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.

Fan out a feed
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" } ] }

Good to know

Whole-feed batch transcription is a one-time unlock that comes with any credit purchase, like diarization and word-level export. See pricing.

The same feed handling is exposed to AI agents through the MCP tools list_podcast_episodes and transcribe_podcast_feed – see MCP.

Podcasts – questions, answered

Can I pass an Apple Podcasts link?

Yes. Both a raw RSS feed URL and an Apple Podcasts link are accepted as a source, on the transcriptions endpoint and on the podcast batch endpoint.

How do I transcribe one specific episode?

List the feed with GET /api/v1/podcasts/episodes, then send that episode's guid with the feed URL, or use episode_index where 0 is the newest episode.

Can I transcribe every episode in a feed?

Yes. POST /api/v1/podcasts/transcribe accepts episodes: "all" and returns one transcription per episode, grouped under a batch_id.

Does whole-feed transcription cost extra?

It bills per minute like any other transcription, and the batch capability itself is a one-time unlock that comes with any credit purchase.

Related

Try it on your own audio

Create a free account and transcribe a recording – 60 minutes are included, no card required. Still stuck? Email contact@pepys.co or see the support page.