Transcript object
The Transcript is returned by GET /api/v1alpha1/scheduled-meetings/{id}/transcript. It's the compiled result of the meeting bot's recording — a list of chunks (one per continuous speaker utterance) plus optional word-level timing.
Transcripts are retained for 12 months from the meeting's end time. Older transcripts return 410 transcript-expired.
The Transcript schema
{
"meetingId": "mtg_...",
"botId": "trs_...",
"durationSeconds": 3612.4,
"windowStart": 0.0,
"windowEnd": 3612.4,
"chunks": [ /* TranscriptChunk shape */ ],
"compiledText": "Alex Rivera: Thanks for joining today ..."
}Root fields
meetingId string
The scheduled meeting this transcript belongs to, prefixed mtg_.
botId string
Recording-bot identifier, prefixed trs_.
durationSeconds number
Full meeting length, regardless of any windowing on this response. Lets partners compute completion percentages independent of the window they requested.
windowStart, windowEnd number
The actual window returned, echoed for consumer confirmation. Matches or clamps the caller's startTime / endTime query params.
chunks list
Ordered list of TranscriptChunk objects — one per continuous speaker utterance. Documented below.
compiledText string
Every chunk's text joined into a single flat string with speaker prefixes ("{speaker}: {text}" per chunk, newline-separated). Deliberately redundant with chunks[].text — provided so partners piping into an LLM prompt don't have to compile it themselves.
TranscriptChunk shape
chunkId string
Stable id for the chunk, prefixed chnk_.
speaker string
Display name of the speaker, as extracted by the bot from the meeting's attendee list plus voice diarisation.
hostId string
Cross-reference to a Cirrus user (usr_...) when the speaker matches a host or assignee on the meeting. null when the speaker is unresolved — an attendee, third party, or someone the bot couldn't confidently cross-reference. Don't treat null as "not in Cirrus"; treat it as "not confidently matched."
language string
ISO code (en, es, etc.) — per-chunk, because multi-language meetings emit different codes across chunks.
startTime, endTime number
Seconds from meeting start. Aligned to the video/audio the bot recorded.
text string
The compiled utterance — words.map(w => w.text).join(' '). Useful when a partner doesn't need word-level detail.
words list
Word-level timing. Use for search-highlight UIs that jump to the exact word offset in the underlying media. Each entry is {text, startTime, endTime} in seconds.
The paginated /transcript/chunks endpoint omits the words[] array to keep responses compact; fetch the full transcript endpoint with a time-range window when word-level detail is needed.
isFinal boolean
Always true on emitted chunks. the recording bot's interim / in-flight chunks (which get overwritten as the speech-to-text service commits) are never returned — the API only surfaces finalised chunks.
{
"chunkId": "chnk_...",
"speaker": "Alex Rivera",
"hostId": "usr_...",
"language": "en",
"startTime": 0.0,
"endTime": 12.4,
"text": "Thanks for joining today ...",
"words": [
{ "text": "Thanks", "startTime": 0.0, "endTime": 0.4 }
],
"isFinal": true
}Related models
- Meeting — the parent object. Transcripts hang off
mtg_....