get_transcript
Retrieve paginated transcripts of processed recordings in segments, plain text, or SRT subtitles. Filter by time range to extract specific moments for summarization or review.
Instructions
Retrieve the transcript of a processed job, lazily and paginated. Formats: "segments" (default — seq, t_ms, t_wall when known, speaker when diarized, text), "text" (plain prose; "S1:" prefixes at speaker changes), "srt" (subtitles, speaker-prefixed cues). Diarized jobs also return the roster, attribution_precision, saved speaker_name values, raw OCR name_candidates, and bounded pending-review names plus old-roster context after a relabel. Pre-0.3.1 video jobs may return name_candidates_note because their flat OCR is readable but less useful for hints. Pending names are evidence to re-check, never active identities. A stale pending label can only be removed with label_speakers(..., labels={"Sx":null}). Raw S labels remain canonical. Responses are capped (~8k tokens): when truncated=true, continue from the returned next_start_ms. When NOT to use: to find one keyword (use search) or to inspect one moment with visuals (use get_moment). Examples:
get_transcript(job_id="a1b2c3d4e5f60718") — whole transcript of a short recording
get_transcript(job_id="a1b2c3d4e5f60718", start_ms=0, end_ms=120000) — just the first two minutes
get_transcript(job_id="...", format="text") — prose block for summarization
get_transcript(job_id="...", format="srt") — subtitle export the user asked for
diarized job: segments carry "speaker" + a roster header (top-12 by talk time; speakers_truncated counts the rest)
"what did S2 say?" → format="segments", collect entries with speaker=="S2" (labels are in order of first voice)
got truncated=true with next_start_ms=421500 → get_transcript(job_id="...", start_ms=421500)
user: "what was said between 5:00 and 6:30?" → start_ms=300000, end_ms=390000
legacy video name_candidates_note → explain the limitation; safe regeneration uses force=true+diarize=true
correlate speech with logs: each segment's t_wall lines up with your log timestamps
no speaker fields on a meeting job → re-run process_media with diarize=true (adds them without re-transcribing)
attribution_precision="segment" → force=true+diarize=true is required for exact word boundaries
pending context points to old evidence; stale labels accept null removal, never a new name
anti-example: "where did they mention checkout?" → search(job_id, "checkout"), not full paging
anti-example: screenshots around a remark → get_moment(job_id, start_ms, end_ms)
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| end_ms | No | ||
| format | No | segments | |
| job_id | Yes | ||
| start_ms | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||