Get any podcast episode as a clean, speaker-labeled transcript — ready for your AI agent's context window.
pt_demo to try any endpoint. No signup needed.
Podcast transcripts are hard to get programmatically. When you do find them, they're buried in proprietary formats, missing speaker labels, or full of timing artifacts that clutter an LLM's context window.
This API returns clean Markdown with AI-detected speaker names. One request, one transcript — ready to use.
Search for any episode by text or paste a podcast URL from any listening app. Then fetch the transcript.
# 1. Search for an episode
curl -H "x-api-key: pt_demo" \
https://spoken.md/search?q=huberman+sleep
# 2. Get the transcript
curl -H "x-api-key: pt_demo" \
https://spoken.md/transcripts/1000714478537
Response is text/markdown with AI-detected speaker labels and credit info in headers:
HTTP/1.1 200 OK
Content-Type: text/markdown; charset=utf-8
X-Credits-Remaining: 999
X-Credits-Charged: 1
**Andrew Huberman** (0:00)
Welcome to the Huberman Lab podcast...
1 credit per successful transcript ($0.10 each). Errors are never charged.
Your API key is delivered instantly in the browser. Questions? support@spoken.md
| Status | Meaning | Charged? |
|---|---|---|
200 | Success (markdown body) | 1 credit |
401 | Missing or invalid API key | No |
402 | No credits remaining | No |
404 | Episode not found | No |
502 | Upstream error (retry later) | No |
When credits run out, the 402 response includes a top_up_url. Visit it to purchase more credits for your existing key.
A typical agent workflow: call /search to find episodes by topic, then fetch transcripts with /transcripts/{id}. Both endpoints use the same API key and credit system.
Monitor X-Credits-Remaining in response headers to alert before credits hit zero. All error responses are JSON with machine-readable error.code fields.