Download an episode transcript
const url = 'https://backend.podscribe.ai/api/public/episode/transcript?itunes_or_yt_id=example&guid=example&format=timestamps&start_if_missing=false';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://backend.podscribe.ai/api/public/episode/transcript?itunes_or_yt_id=example&guid=example&format=timestamps&start_if_missing=false' \ --header 'Authorization: Bearer <token>'Response JSON for transcription.text when format=timestamps(default):
| Field | Type | Example | Description |
|---|---|---|---|
| transcription.text (format=timestamps) | string | [{“startTime”:0.075,“endTime”:0.365,“confidence”:0.99,“speaker”:0,“word”:“Hello”},{“startTime”:0.385,“endTime”:0.505,“confidence”:0.97,“speaker”:0,“word”:“world”,“isAd”:true}] | A JSON-encoded array of word-level objects (see table below). |
transcription.text word-level object format:
| Field | Type | Example | Description |
|---|---|---|---|
| startTime | number | 0.075 | Start time of the word in seconds from the beginning of the audio. |
| endTime | number | 0.365 | End time of the word in seconds from the beginning of the audio. |
| confidence | number | 0.99 | Confidence score of the transcription (0 to 1). |
| speaker | number | 0 | Speaker identifier. |
| word | string | This | The transcribed word. |
| isAd | boolean | false | Whether the word is part of an ad segment (optional). |
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”YouTube Channel ID / YouTube Playlist ID / iTunes ID
The GUID of the episode
Controls the format of the transcription text. Use “timestamps” (default) to get a JSON array of word-level objects including speaker labels and timestamps. Use “text” to get a single human-readable plain-text string.
When true and transcription status is NotStarted, starts transcription and returns status Running. Repeat calls are safe (already Running/Done/Failed are unchanged). Exceeding the daily job quota returns 429. Defaults to false.
Responses
Section titled “Responses”OK
object
The unique identifier for an episode in the Podscribe platform.
The title of an episode of a podcast or other audio content.
The globally unique identifier (GUID) for an episode in a podcast or YouTube channel
The description of an episode of a podcast or other audio content.
The URL of the media file for an episode of a podcast or other audio content.
The unique identifier for a series in the Podscribe platform.
The artist of an episode of a podcast or other audio content.
The URL of the logo for a series of a podcast or other audio content.
The RSS URL of a series of a podcast or other audio content.
The title of a series of a podcast or other audio content.
The itunes id of a series of a podcast.
Comma seperated list of categories podcast belongs to.
object
Transcription status: Done, Running, Failed, or NotStarted.
Human-readable plain-text transcript (format=text).
JSON-encoded array of word-level objects (format=timestamps). Each object contains word, startTime, endTime, and optionally speaker/isAd.
Examplegenerated
{ "id": 1, "title": "example", "guid": "example", "description": "example", "duration": 1, "url": "example", "seriesId": "example", "artist": "example", "seriesLogoUrl": "example", "seriesRssUrl": "example", "seriesTitle": "example", "seriesItunesId": "example", "categories": "example", "transcription": { "status": "example", "text": [ "example" ] }}Unprocessable Entity
Daily transcript job limit exceeded
object
Nodejs Error
object
Examplegenerated
{ "message": {}}Unexpected error.
object
Nodejs Error
object
Examplegenerated
{ "message": {}}