---
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}`

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

---

[API](https://skmtc.net/cinepro/apis/open-media-streaming-specification-omss.md) · [All operations](https://skmtc.net/cinepro/apis/open-media-streaming-specification-omss/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/cinepro/open-media-streaming-specification-omss/revisions/2cb99625e1bf/schema)
