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

# Get a video transcript (segments, speakers, entity annotations)

> Transcript surfaces are premium-only. Access requires a permanent per-video unlock (paid tiers). Cost is always quoted in rows and 15-minute blocks: 125 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.



## OpenAPI

````yaml /openapi/arcmira-v1.json get /v1/transcripts/{video_id}
openapi: 3.1.0
info:
  title: Arcmira API
  version: 1.0.0
  contact:
    name: Arcmira
    url: https://arcmira.com
servers:
  - url: https://api.arcmira.com
security: []
paths:
  /v1/transcripts/{video_id}:
    get:
      tags:
        - Transcripts
      summary: Get a video transcript (segments, speakers, entity annotations)
      description: >-
        Transcript surfaces are premium-only. Access requires a permanent
        per-video unlock (paid tiers). Cost is always quoted in rows and
        15-minute blocks: 125 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.
      parameters:
        - schema:
            type: string
            enum:
              - 'true'
            description: >-
              Explicit purchase action: debits quarters × 125 rows and grants
              the permanent per-video unlock in the same request. Without it,
              locked viewers receive only the teaser segments.
          required: false
          description: >-
            Explicit purchase action: debits quarters × 125 rows and grants the
            permanent per-video unlock in the same request. Without it, locked
            viewers receive only the teaser segments.
          name: unlock
          in: query
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema: {}
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      param:
                        type: string
                      doc_url:
                        type: string
                      request_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                      - doc_url
                      - request_id
                required:
                  - error
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      param:
                        type: string
                      doc_url:
                        type: string
                      request_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                      - doc_url
                      - request_id
                required:
                  - error
        '402':
          description: Not enough rows remaining to unlock (body includes the quote)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      param:
                        type: string
                      doc_url:
                        type: string
                      request_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                      - doc_url
                      - request_id
                required:
                  - error
        '403':
          description: Permission error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      param:
                        type: string
                      doc_url:
                        type: string
                      request_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                      - doc_url
                      - request_id
                required:
                  - error
        '404':
          description: Not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      param:
                        type: string
                      doc_url:
                        type: string
                      request_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                      - doc_url
                      - request_id
                required:
                  - error
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      param:
                        type: string
                      doc_url:
                        type: string
                      request_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                      - doc_url
                      - request_id
                required:
                  - error
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      param:
                        type: string
                      doc_url:
                        type: string
                      request_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                      - doc_url
                      - request_id
                required:
                  - error
        '500':
          description: Server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      type:
                        type: string
                      code:
                        type: string
                      message:
                        type: string
                      param:
                        type: string
                      doc_url:
                        type: string
                      request_id:
                        type: string
                    required:
                      - type
                      - code
                      - message
                      - doc_url
                      - request_id
                required:
                  - error
      security:
        - bearerAuth: []
        - apiKeyAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: arc_sk_*
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````