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

# Get a bounded transcript range

> Returns transcript segments that overlap one half-open source range
(`segment_start < end_seconds` and `segment_end > start_seconds`). Pass
`hash_str` to avoid reading the source media path. Responses are bounded;
when `truncated` is true, repeat the same range with the returned
`next_after_segment_index` as `after_segment_index`.




## OpenAPI

````yaml /api-reference/openapi-v1.yaml post /transcriptions/range
openapi: 3.0.3
info:
  title: Jumper Public API
  version: '1.0'
  description: >
    REST API for third-party integrations with Jumper's media analysis engine.


    Jumper analyzes video, image, and audio files — enabling semantic visual
    search,

    speech transcription, face detection with clustering, and hierarchical
    summaries.

    This API exposes those capabilities for use by MAM systems, automation
    pipelines,

    and custom tooling.


    ## Authentication


    All endpoints except `/health` require a **Jumper Pro** license key.

    The OpenAPI contract models the supported `X-License-Key` header flow.


    Jumper also accepts a `license_key` field in many JSON POST bodies as a

    convenience, but that is a Jumper-specific request-body convention rather

    than an OpenAPI security scheme.


    Invalid or missing keys return `401`. Non-Pro keys return `403`.


    ## Key Concepts


    - **`cache_dir`** — The folder where Jumper stores analysis data (visual
    analysis, transcriptions, face clusters). You choose this path.

    - **`media_paths`** — Absolute filesystem paths to media files. Jumper needs
    direct access to these files.

    - **`hash_str`** — A CRC32-based hash that uniquely identifies a media file.
    Returned by the metadata endpoint.

    - **`model_key`** — Internal identifier for a visual or speech analysis
    model variant (e.g. `v2-medium-256`).
  contact:
    name: Jumper
    url: https://getjumper.io
servers:
  - url: http://localhost:6699/api/v1
    description: Local Jumper backend
security:
  - HeaderAuth: []
paths:
  /transcriptions/range:
    post:
      tags:
        - Transcriptions
      summary: Get a bounded transcript range
      description: >
        Returns transcript segments that overlap one half-open source range

        (`segment_start < end_seconds` and `segment_end > start_seconds`). Pass

        `hash_str` to avoid reading the source media path. Responses are
        bounded;

        when `truncated` is true, repeat the same range with the returned

        `next_after_segment_index` as `after_segment_index`.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - cache_dir
                - start_seconds
                - end_seconds
              anyOf:
                - required:
                    - hash_str
                - required:
                    - media_path
              properties:
                cache_dir:
                  type: string
                hash_str:
                  type: string
                  description: Preferred stable media identifier.
                media_path:
                  type: string
                  description: Media path fallback when hash_str is not available.
                start_seconds:
                  type: number
                  minimum: 0
                end_seconds:
                  type: number
                  minimum: 0
                  exclusiveMinimum: true
                max_segments:
                  type: integer
                  minimum: 1
                  maximum: 500
                  default: 120
                after_segment_index:
                  type: integer
                  minimum: 0
                  description: Exclusive continuation cursor from a previous response.
      responses:
        '200':
          description: Bounded transcript segments and continuation state
          content:
            application/json:
              schema:
                type: object
                required:
                  - hash_str
                  - transcript_status
                  - start_seconds
                  - end_seconds
                  - segments
                  - returned_segment_count
                  - returned_character_count
                  - remaining_segment_count
                  - truncated
                  - text_truncated
                  - truncated_segment_indices
                properties:
                  hash_str:
                    type: string
                  media_path:
                    type: string
                    nullable: true
                  transcript_status:
                    type: string
                    enum:
                      - used
                      - not_available
                      - empty
                  start_seconds:
                    type: number
                  end_seconds:
                    type: number
                  segments:
                    type: array
                    items:
                      $ref: '#/components/schemas/TranscriptRangeSegment'
                  returned_segment_count:
                    type: integer
                  returned_character_count:
                    type: integer
                    description: >-
                      Characters returned across segment text. A single
                      oversized source segment is truncated in place with an
                      explicit marker so the response remains within 24,000
                      characters.
                  remaining_segment_count:
                    type: integer
                  truncated:
                    type: boolean
                  text_truncated:
                    type: boolean
                    description: >-
                      True when one returned source segment's text was truncated
                      to fit the hard response budget.
                  truncated_segment_indices:
                    type: array
                    items:
                      type: integer
                  next_after_segment_index:
                    type: integer
                    nullable: true
components:
  schemas:
    TranscriptRangeSegment:
      type: object
      required:
        - id
        - segment_index
        - start_seconds
        - end_seconds
        - text
        - text_truncated
        - speaker_ids
        - speaker_names
      properties:
        id:
          type: string
          example: transcript_000018
        segment_index:
          type: integer
          description: Stable index in this media file's transcript.
        start_seconds:
          type: number
        end_seconds:
          type: number
        text:
          type: string
        text_truncated:
          type: boolean
          description: >-
            True only when this single source segment exceeded the
            24,000-character response budget.
        original_character_count:
          type: integer
          description: Original text length; present only when text_truncated is true.
        speaker_ids:
          type: array
          items:
            type: string
        speaker_names:
          type: array
          items:
            type: string
  securitySchemes:
    HeaderAuth:
      type: apiKey
      in: header
      name: X-License-Key
      description: Jumper Pro license key passed via header

````