Export formats
Every format with a sample of its output, and which ones need timestamps.
/api/v1/transcriptions/{id}?format=srtscope: transcriptions:readOne parameter on the fetch endpoint returns the transcript as a file instead of JSON metadata, served with Content-Disposition: inline. The download is named after the episode title, as both an ASCII filename and a UTF-8 filename* (RFC 6266), so a non-Latin title survives the download.
Speaker labels are opt-in for the text formats. Add speakers=true to prefix each cue in srt, vtt and txt with its speaker. json always includes a speaker field when the transcript has diarization, and the names are the ones you set in the editor, with any merges already applied.
| Format | Content type | Timings | Speakers | Use it for |
|---|---|---|---|---|
txt | text/plain | No | No | Reading, search indexing, feeding an LLM |
json | application/json | Yes | Yes | Building anything: the richest shape |
srt | application/x-subrip | Yes | No | Video editors, YouTube, most players |
vtt | text/vtt | Yes | No | HTML5 <track>, the web |
docx | OOXML | Optional | Optional | Handing a transcript to a person |
pdf | application/pdf | Optional | Optional | Archives, records, print |
srt, vtt and json need a segmented transcript. Free-tier transcripts are stored without timings, so a time-coded format returns 400. Check format on the transcript object first: "json" means segments are present, "txt" means they are not. txt, docx and pdf always work.
JSON
The segment array as a file, as opposed to ?include=text, which returns the metadata object with a text field added. start and end are fractional seconds; speaker is present only when speaker recognition ran (paid plans, on by default), and labels mark *distinct* speakers rather than who they are, numbered by first appearance, stable within a transcript, meaningless across two.
TXT
Plain UTF-8, no timings, no speaker labels: the one format that works for every transcript on every plan, and the right shape for a language model, where timings are noise that costs tokens.
SRT and VTT
Both are subtitle formats and they differ in three details that break parsers: VTT requires a WEBVTT header, uses a period before the milliseconds where SRT uses a comma, and treats cue numbers as optional.
SRT imports directly into Premiere, Final Cut and Resolve, and uploads to YouTube under Studio → Subtitles. VTT is what HTML5 <track> accepts:
Serve VTT same-origin. Browsers apply CORS to <track>. Fetch the file with your API key server-side and serve it from your own origin: simpler than proxying, and it keeps the key where it belongs.
DOCX and PDF
Both are made for handing to a person: the episode title as a heading, paragraphs broken where the speaker changes, and speaker names and timestamps where the transcript has them. Neither needs a segmented transcript, so free-tier transcripts export fine. The response is a binary document named after the episode title, do not pipe it through a JSON parser.
For a different layout, fetch format=json and render it yourself; the segment array is the same source material these exports are built from.