Skip to content
Preview. The endpoints on this page are illustrative and are likely to change as they move toward general availability. Documentation is published in advance so you can start shaping your integration; treat request and response details as subject to revision.

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

json
{
  "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.


json
{
  "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
}
  • Meeting — the parent object. Transcripts hang off mtg_....

Raleigh, NC — a Cirruspath, Inc. company