---
title: "Get streaming sources for a movie"
method: GET
path: "/v1/movies/{id}"
tags: ["Content"]
---

# Get streaming sources for a movie

`GET /v1/movies/{id}`

## Request

- Base URL: `https://api.example.com`
- URL: `https://api.example.com/v1/movies/{id}`
- Auth: none declared

Retrieve all available streaming sources and subtitles for a movie by TMDB ID.

**Requirements:**
- Returns an array of sources with URLs, quality, audio tracks, and provider information
- Returns an array of subtitles with URLs, labels, and formats
- Uses proxy paths for all URL fields
- Includes a unique responseId and expiration timestamp
- May include diagnostics for partial scrapes or warnings

## Path parameters

- `id` string, required

## Response `200`

Streaming sources and subtitles found

- SourceResponse
  - `responseId` string, uuid, required: Unique identifier for this response (UUID v4)
  - `expiresAt` string, date-time, required: ISO 8601 timestamp when sources expire and cache is invalidated. Recommended default: 2 hours from response time for sources.
  - `sources` Source[], required: Array of available streaming sources
    - `url` string, required: Proxy path to the streaming URL (not direct upstream URL). Format: `/v1/proxy?data={encodeURIComponent_encoded_json}`
    - `type` 'hls' | 'dash' | 'http' | 'mp4' | 'mkv' | 'webm', required: Stream type/format
    - `quality` string, required: Video quality/resolution. Common values: "unknown", "360p", "480p", "720p", "1080p", "2160p". May be inferred from filename or manifest if unavailable. Not standardized!
    - `audioTracks` AudioTrack[], required: Available audio tracks for this source
      - `language` string, required: ISO 639-1 language code (e.g., "en", "es", "de"). May be inferred or defaulted to "en" if unavailable.
      - `label` string, required: Human-readable audio track label
    - `provider` Provider, required
      - `id` string, required: Unique identifier for the provider (internal use)
      - `name` string, required: Human-readable provider name
  - `subtitles` Subtitle[], required: Array of available subtitles
    - `url` string, required: Proxy path to the subtitle file (not direct upstream URL). Format: `/v1/proxy?data={encodeURIComponent_encoded_json}`
    - `label` string, required: Human-readable subtitle label
    - `format` 'vtt' | 'srt' | 'ass' | 'ssa', required: Subtitle file format
  - `diagnostics` Diagnostic[], required: Optional diagnostics for partial scrapes, warnings, or metadata inferred from filenames. Useful for understanding why certain fields may have incomplete or inferred values.
    - `code` 'QUALITY_INFERRED' | 'LANGUAGE_INFERRED' | 'TYPE_INFERRED' | 'SUBTITLE_LABEL_INFERRED' | 'PROVIDER_ERROR' | 'PARTIAL_SCRAPE', required: Machine-readable diagnostic code
    - `message` string, required: Human-readable diagnostic message
    - `field` string: JSON path to the field this diagnostic relates to (empty string if not field-specific)
    - `severity` 'info' | 'warning' | 'error', required: Severity level of the diagnostic

## Other responses

- `400`: Invalid TMDB ID
- `404`: No sources found for this movie
- `500`: Internal server error

## Changes

- **2026-07-22** `2cb99625e1bf`: 1 warning
  - removed the optional property `sources/items/audioTracks/items/default` from the response with the `200` status

[Operation history](https://skmtc.dev/cinepro/apis/open-media-streaming-specification-omss/changes/v1/movies/:id/get.md)

---

[API](https://skmtc.dev/cinepro/apis/open-media-streaming-specification-omss.md) - [All operations](https://skmtc.dev/cinepro/apis/open-media-streaming-specification-omss/llms.txt) - [OpenAPI document](https://skmtc.dev/cinepro/apis/open-media-streaming-specification-omss/revisions/366afc0b096f?raw)
