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).
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.Timed segments
GET /calls/{call_id}/transcript/segments returns the transcript as timed pieces, for building a player or aligning with your own audio.
structured_available is false, this call has no timing data. Use the full-text endpoint instead. Missing times are never filled in with zeros.
Search
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.

