Skip to main content
Transcripts need the transcripts:read permission. An owner or admin accepts a short data disclosure when creating a key with it, because transcripts contain what customers said.

Full text

GET /calls/{call_id}/transcript returns the transcript in pages of text. Each page holds up to limit chunks of 4,000 characters (limit is 1 to 10, default 1).
Follow next_cursor until has_more is false, then join every text in order. offset and total_characters count Unicode characters, so you can check that nothing is missing.
If a transcript changes while you are paging (for example, it was reprocessed), the next page returns 409 stale_cursor. Start again from the first page. The revision value changes whenever the text does, so you can also skip re-downloading a transcript whose revision you already have.
Speaker labels and timestamps appear in the text only where the transcription recorded them. Parlay does not guess who said what.

Timed segments

GET /calls/{call_id}/transcript/segments returns the transcript as timed pieces, for building a player or aligning with your own audio.
When structured_available is false, this call has no timing data. Use the full-text endpoint instead. Missing times are never filled in with zeros. GET /transcripts/search?q=… finds calls whose transcript matches a keyword or phrase, and returns a short excerpt of each.
Search returns excerpts, not whole transcripts. Fetch the transcript of any call you want in full.