Get a video transcript
Returns segments, speakers, and entity annotations for a video. Transcript surfaces are premium-only. Access requires a permanent per-video unlock (paid tiers). Cost is always quoted in rows and 15-minute blocks: 75 rows per 15-minute block of video, minimum one block. access states: unlocked (full premium transcript), locked (premium transcript exists — ~5 teaser segments + meta.quote; pass ?unlock=true to debit the quoted rows and receive the full transcript in the same request), premium_pending (a preliminary analysis exists but premium transcription has not run — the payload carries ONLY detected entity-type counts { people, organizations, products, topics } plus the quote; run the premium analysis via POST /v1/transcriptions; unlock=true is ignored in this state), not_transcribed (not in the index — submit via POST /v1/transcriptions). Unlocks are permanent — subsequent reads are free, and an unlock bought before the premium transcript existed makes the later premium generation free. The response meta.revision is an opaque id for the served transcript + approved-correction state; echo it back when submitting corrections.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Explicit purchase action: debits 75 rows per 15-minute block and grants the permanent per-video unlock in the same request. Without it, locked viewers receive only the teaser segments.
true Response
Success
Video metadata. Null only when the video is not in the index and no public metadata could be fetched.
Access state. Values: unlocked (full premium transcript in this payload), locked (a premium transcript exists; you receive only ~5 teaser segments — pass unlock=true to debit the quoted rows and receive the full transcript), premium_pending (a preliminary analysis exists but the premium transcript has not been generated; payload carries only detected entity-type counts plus the quote — submit POST /v1/transcriptions to generate), not_transcribed (video is not in the index; submit POST /v1/transcriptions), unauthenticated (no authenticated caller; teaser only).
unlocked, locked, premium_pending, not_transcribed, unauthenticated Transcript segments. Full list when unlocked; first ~5 teaser segments when locked/unauthenticated; empty for premium_pending and not_transcribed.
Diarized speakers. Filtered to teaser segments when locked; empty when no diarized transcript exists.
Entity annotations as character spans inside segment text. Restricted to teaser segments when locked.
Distinct-entity counts by type from the preliminary analysis. Only present when access is premium_pending (deliberately minimal: no names, ids, or timestamps).
Your own pending line edits. Only present when access is unlocked.
Your own pending speaker identifications. Only present when access is unlocked.
Your own pending speaker reassigns/splits for the current revision. Only present when access is unlocked.
Your own pending entity tags. Only present when access is unlocked.
Your own pending segment rewrites for the current revision. Re-apply them (with pending speaker edits, in seq order) to rebuild your projection. Only present when access is unlocked.