> ## Documentation Index
> Fetch the complete documentation index at: https://docs.montra.com/llms.txt
> Use this file to discover all available pages before exploring further.

# get_transcript

> Read the recording narration behind a document or a single input.

Returns what the person said while recording — the narration the document's tickets were generated from. Pass a `documentId` for every transcribed input on that document, or an `inputId` for a single recording.

This is supporting context. The tickets from [`get_document`](/tools/get-document) remain the spec; use the transcript to understand intent or resolve a vague reference, not to invent extra work.

## Input

<ParamField body="documentId" type="string (uuid)">
  Id of the Montra document whose input transcripts to read.
</ParamField>

<ParamField body="inputId" type="string (uuid)">
  Id of a single input (recording) whose transcript to read. Ticket `inputId` values from [`get_document`](/tools/get-document) work here.
</ParamField>

## Output

<ResponseField name="transcripts" type="object[]" required>
  One entry per transcribed input.

  <Expandable title="properties">
    <ResponseField name="inputId" type="string" required>Id of the input this transcript belongs to.</ResponseField>
    <ResponseField name="title" type="string" required>Title of the input.</ResponseField>
    <ResponseField name="kind" type="string" required>What kind of input it is, such as a recording.</ResponseField>
    <ResponseField name="text" type="string" required>The narration as spoken. For older captures whose plain text was never stored, this is rebuilt from the segments with a `[mm:ss]` timestamp on each line.</ResponseField>

    <ResponseField name="segments" type="object[]" required>
      Timed segments of the narration. Empty when the transcript has none.

      <Expandable title="properties">
        <ResponseField name="text" type="string" required>What was said in this segment.</ResponseField>
        <ResponseField name="startMs" type="number" required>Segment start, in milliseconds. `null` when the transcript did not record one.</ResponseField>
        <ResponseField name="endMs" type="number" required>Segment end, in milliseconds. `null` when the transcript did not record one.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="transcriptRevisionId" type="string" required>Id of the exact transcript version returned.</ResponseField>
    <ResponseField name="createdAt" type="string" required>When that transcript version was created.</ResponseField>
    <ResponseField name="truncated" type="boolean" required>`true` when this transcript's text or segments were cut short by the response caps.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="truncated" type="boolean" required>
  `true` when any returned transcript was cut short.
</ResponseField>

## Notes

* Pass exactly one of `documentId` or `inputId`. Passing both, or neither, is rejected.
* Inputs without a transcript are dropped from the result: text inputs never have one, and a recording is transcribed in the background, so a recent one may still be processing. When nothing on the document has a transcript yet, the call comes back with a message saying so — retry later rather than concluding there was no narration.
* The response is capped across all transcripts at 200,000 characters and 2,000 segments so a long recording cannot flood your context. Whatever is cut is flagged by `truncated`, both per transcript and at the top level.
* An input that has not been filed into a document yet is still being classified and reads as not found, as does anything hanging off a document outside the bound workspace. See [workspace binding](/authentication#workspace-binding).
