Skip to main content
Podcast transcription is asynchronous. You submit a Spotify episode URL, receive a jobId, then poll until the transcript is ready. Because podcasts rarely ship captions, the transcript is generated with AI speech-to-text from the episode’s audio (resolved from the show’s RSS feed).
Podcast transcription is available on the Plus and Pro plans. A key on the Free plan or a legacy one-time credit pack receives 402 upgrade_required. Billing is 10 credits per audio-hour (rounded up, with a short grace window), reserved when the job is submitted and refunded automatically if the job fails.

Step 1 — Submit a job

A submitted job returns 202 Accepted:
If the same episode was already transcribed (by any user), the API skips the queue and returns 200 immediately with the finished transcript and "deduped": true. Always check status before deciding to poll.

Step 2 — Poll for the transcript

Poll GET /api/podcast/jobs/{jobId} every few seconds until status is done (or failed). Episodes transcribe in well under real time.

While processing

When done

When failed

credits reflects your remaining balance after the reservation settles; failed jobs are refunded automatically.

Supported URL formats

Paste an individual episode URL. Show, playlist, or artist links don’t identify a single episode and are rejected with 400.

FAQ

Every 3–5 seconds is plenty. Most episodes finish in seconds to a couple of minutes depending on length; a multi-hour episode is streamed through a container and still finishes far faster than real time.
10 credits per audio-hour, rounded up, with a short grace window on the first few minutes. A 30-minute episode is 10 credits; a 2-hour episode is 20. Credits are reserved at submit and refunded if the job fails.
Podcast transcription is a Plus/Pro feature. Keys on the Free plan or a legacy one-time credit pack can still use every social-video endpoint, but not the podcast endpoint. Upgrade at transcriptmagic.com/credits.
No. Podcast transcripts are returned as plain text. episode.durationSeconds gives the total episode length.