A podcast transcript API, from the integration side
Three ways in, one way out: the episode audio URL, the RSS feed URL, or the episode web page. The job always returns the same JSON.
# a) From the episode's audio enclosure
curl -X POST https://api.techtuel.com/v1/transcriptions \
-H "Authorization: Bearer $TECHTUEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "audio_url": "https://media.example.com/ep-142.mp3" }'
# b) From the RSS feed or the episode page
curl -X POST https://api.techtuel.com/v1/transcriptions \
-H "Authorization: Bearer $TECHTUEL_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "source_url": "https://feeds.example.com/the-podcast.xml" }'{
"id": "job_e30b",
"status": "completed",
"title": "The Podcast — #142 Scaling a product team",
"language": "en",
"minutes": 63.4,
"source_kind": "url",
"source_url": "https://media.example.com/ep-142.mp3",
"transcript": "Hey everyone, welcome back…",
"segments": [
{ "start_seconds": 0, "text": "Hey everyone, welcome back" },
{ "start_seconds": 12.5, "text": "with a guest I've wanted for a while" }
]
}A podcast is never just one URL. Depending on where your integration hooks in, what you have on hand is the MP3 enclosure from a feed, the feed address itself, or simply the episode page link copied out of a player. Writing three code paths to transcribe the same show is pointless.
Techtuel accepts all three. A directly downloadable audio file goes through audio_url. An RSS feed URL or an episode page goes through source_url: the API resolves the source, finds the associated media and transcribes it. In all three cases the result is an identical job, with the same JSON contract to consume.
That matters most for what you build on top: show notes, an internal search engine, a quote index, chapter markers, a knowledge base fed by interviews. The title field hands you the resolved episode name, segments carry start_seconds so a sentence can point back at the right moment, and ?format=srt gives you a subtitle file for the video cut.
Why this API
Three inputs, one contract
MP3 enclosure, RSS feed or episode page: the job returns the same JSON. One code path to write and to test.
Search-ready
transcript for full-text indexing, segments with start_seconds to drop the listener at the exact moment in the episode.
Translation on demand
preferred_language produces a translated transcript; translated and detected_language tell you what you actually received.
Pricing you can read
Frequently asked questions
Should I use audio_url or source_url?+
Use audio_url when you already have the audio file address. Use source_url for an RSS feed or an episode page — the API locates the media for you.
How do I tie a job back to my episode record?+
Store the job id returned by the POST next to your own episode identifier. The job also exposes source_url and title, which lets you reconcile after an incident.
Can I transcribe an entire back catalogue?+
Yes. Create one job per episode and poll them at the pace of your worker. The cache avoids re-billing a public source that has already been transcribed if you replay an import.
How do I produce subtitles for the video version?+
Fetch the job with ?format=srt or ?format=vtt: the file is built from the timestamped segments, with no extra formatting work on your side.
Do you keep the episodes?+
Media is not retained after processing. Processing and hosting are European, and the transcript remains yours.
Other ways to use the API
Free trial, no credit card
Generate an API key and transcribe your first source in under a minute. A free monthly quota lets you test under real conditions.
Start with the API