Skip to main content
GET
/
api
/
stream
/
movie
GET /api/stream/movie
curl --request GET \
  --url https://vyla-api.pages.dev/api/stream/movie
{
  "success": true,
  "tmdb_id": "<string>",
  "results_found": 123,
  "sources": [
    {
      "provider": "<string>",
      "quality": "<string>",
      "type": "<string>",
      "url": "<string>",
      "is_hls": true,
      "referer": {},
      "ffmpeg_command": "<string>",
      "download_url": {},
      "vlc_url": "<string>"
    }
  ],
  "subtitles": [
    {
      "url": "<string>",
      "label": "<string>",
      "format": "<string>"
    }
  ]
}
Scrapes all 8 providers for a movie in parallel — each in an isolated request with its own CPU budget — and returns fully enriched sources. Unlike /api/movie, this endpoint produces significantly more sources, deep-deduplicates them (collapsing provider proxy chains to their real underlying URL), and attaches pre-built download_url, ffmpeg_command, and proxied vlc_url on every source. /api/download/movie is an alias — both endpoints return the identical response.

Query Parameters

id
string
required
TMDB movie ID. Find it at themoviedb.org, e.g. themoviedb.org/movie/550550.

Example Request

curl https://vyla-api.pages.dev/api/stream/movie?id=550

Using the Results

const res = await fetch("https://vyla-api.pages.dev/api/stream/movie?id=550");
const data = await res.json();

const mp4 = data.sources.find(s => !s.is_hls && s.download_url);
if (mp4) {
  window.location.href = "https://vyla-api.pages.dev" + mp4.download_url;
}

Response

success
boolean
required
true if scraping succeeded.
tmdb_id
string
required
The TMDB ID that was queried.
results_found
number
required
Total number of deduplicated sources returned.
sources
EnrichedSource[]
required
Fully enriched, deduplicated stream sources sorted by quality.
subtitles
Subtitle[]
required
Deduplicated subtitle array.
{
  "success": true,
  "tmdb_id": "550",
  "results_found": 26,
  "sources": [
    {
      "provider": "RgShows",
      "quality": "1080p",
      "type": "mp4",
      "url": "https://hlmv-files-1.tripplestream.online/gs/abc123?q=.mp4",
      "is_hls": false,
      "referer": "https://www.rgshows.ru/",
      "ffmpeg_command": "ffmpeg -headers \"Referer: https://www.rgshows.ru/\r\n...\" -i \"https://...\" -c copy -bsf:a aac_adtstoasc 550_1080p_1.mp4",
      "download_url": "/api/download?url=https%3A%2F%2F...&filename=550_1080p_1.mp4&headers=eyJ...",
      "vlc_url": "/api/proxy?url=https%3A%2F%2F...&headers=eyJ..."
    },
    {
      "provider": "VixSrc",
      "quality": "1080p",
      "type": "hls",
      "url": "https://vixsrc.to/playlist/170060?token=...&expires=...&h=1",
      "is_hls": true,
      "referer": "https://vixsrc.to/",
      "ffmpeg_command": "ffmpeg -headers \"Referer: https://vixsrc.to/\r\n...\" -i \"https://vixsrc.to/playlist/170060?token=...\" -c copy -bsf:a aac_adtstoasc 550_1080p_2.mp4",
      "download_url": null,
      "vlc_url": "/api/proxy?url=https%3A%2F%2Fvixsrc.to%2Fplaylist%2F170060%3Ftoken%3D...&headers=eyJ..."
    }
  ],
  "subtitles": [
    {
      "url": "https://vixsrc.to/playlist/170060?type=subtitle&rendition=eng&token=...&expires=...&edge=...",
      "label": "English",
      "format": "vtt"
    }
  ]
}
Duplicate sources (same underlying file wrapped by different provider proxy chains) are automatically removed. CDN mirror duplicates (same stream path across multiple hostnames) are also collapsed to one entry.
HLS/playlist URLs cannot be downloaded as a single file via a browser link. They must be muxed to MP4 using the provided ffmpeg_command.