---
title: "Get the transcript of a source on no clip"
method: GET
path: "/v1/sources/{sourceId}/transcript"
tags: ["Sources"]
---

# Get the transcript of a source on no clip

`GET /v1/sources/{sourceId}/transcript`

## Request

- Base URL: `https://api.tella.com`
- URL: `https://api.tella.com/v1/sources/{sourceId}/transcript`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/withchima/apis/tella-public-api/docs/v1/sources/:sourceId/transcript/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns the words spoken in a streaming upload source owned by the caller or their workspace, without a video or clip: for a source that isn't on any clip yet, such as an imported video. Times are in ms of source time and no cuts apply. Answers 503 while the source is still being transcribed. Takes the same `startTimeMs`/`endTimeMs` window and `view=sentences` or `view=text` as the clip transcript.

## Path parameters

- `sourceId` string, required: Streaming upload source identifier

## Query parameters

- `startTimeMs` integer: Only return items at or after this time, in ms on the clip's playback timeline. Defaults to the clip's start.
- `endTimeMs` integer: Only return items before this time (exclusive), in ms on the clip's playback timeline. Must be greater than `startTimeMs`. Defaults to the clip's end. Page through a long clip with windows that meet end to start.
- `view` 'words' | 'sentences' | 'text': `words` (default): every word with its index, times and flags. `text`: every word with its index as plain text, one sentence per line starting with its start time, about a seventh of the size, for reading a whole long clip (finding retakes, repeats or where something is said). `sentences`: one row per sentence (first and last word index, start and end time, text), about a quarter of the size. A time window cuts sentences at its edges.
- `includeCut` 'true' | 'false': `true`: also return the words that cuts removed, each marked `cut`, with every word's times in the clip's source recording (`sourceStartTimeMs`/`sourceEndTimeMs`). Use it to find footage the cuts took out, such as a retake, without undoing the cuts. Kept words still carry their playback `startTimeMs`/`endTimeMs`. `startTimeMs`/`endTimeMs` filter on the source times. Words view only.

## Response `200`

OK

- union
  - ClipTranscriptResponse: Clip transcript — what viewers hear.
    - `words` TranscriptWord[], required: Words on the playback timeline (cuts removed, times relative to the clip's playback start). Word indices are stable — they don't shift when cuts change; words inside cuts are simply absent.
      - `breakAfter` boolean, required: Whether a subtitle break is forced after this word, so the next word always starts a new subtitle block
      - `endTimeMs` number, required: Word end time, in ms on the clip's playback timeline
      - `hidden` boolean, required: Whether the word is hidden by an edit
      - `index` integer, required: Stable index of the word in the source recording
      - `keepWithNext` boolean, required: Whether this word's subtitle block is kept together with the next word across punctuation and pauses. The lines-per-block limit still applies and `breakAfter` wins.
      - `startTimeMs` number, required: Word start time, in ms on the clip's playback timeline
      - `text` string, required: Word text
  - ClipTranscriptSentencesResponse: Clip transcript as sentences (`view=sentences`).
    - `sentences` TranscriptSentence[], required: Sentences on the playback timeline (cuts removed), split at `.`, `?` and `!`. Word indices can have gaps where words were cut.
      - `endTimeMs` number, required: End of the last word, in ms on the clip's playback timeline
      - `firstIndex` integer, required: Index of the sentence's first word
      - `lastIndex` integer, required: Index of the sentence's last word
      - `startTimeMs` number, required: Start of the first word, in ms on the clip's playback timeline
      - `text` string, required: The sentence's words joined with spaces
  - ClipTranscriptTextResponse: Clip transcript as indexed text (`view=text`).
    - `text` string, required: The transcript on the playback timeline (cuts removed) as plain text: one sentence per line, split at `.`, `?` and `!`, starting with the sentence's start time as `[m:ss.s]`, then each word as `index:word`. Word indices can have gaps where words were cut.

## Other responses

- `400`: The request was malformed or contained invalid parameters.
- `401`: Authentication is required. Provide a valid API key.
- `403`: You don't have permission to access this resource.
- `404`: The requested resource was not found.
- `409`: The request conflicts with the resource's current state, e.g. an Idempotency-Key whose first request is still in progress. Retry once it settles.
- `429`: You have exceeded the rate limit. Please slow down.
- `500`: An unexpected error occurred
- `501`: The requested operation is not implemented.
- `503`: A dependency was unavailable and the request was not executed. Safe to resend unchanged after the Retry-After delay.

## Changes

> 65 revisions in range; 1 not diffed.

- **2026-10-28** `d74197bff4c4`: 2 info
  - added the new enum value `text` to the `query` request parameter `view`
  - added `#/components/schemas/ClipTranscriptTextResponse` to the response body `anyOf` list for the response status `200`
- **2026-10-16** `6c042ab0bd1a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/withchima/apis/tella-public-api/changes/v1/sources/:sourceId/transcript/get.md)

---

[API](https://skmtc.dev/withchima/apis/tella-public-api.md) - [All operations](https://skmtc.dev/withchima/apis/tella-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/withchima/apis/tella-public-api/revisions/0cc3fcd307ad?raw)
