Skip to main content
GET
/
api
/
stream
/
tv
GET /api/stream/tv
curl --request GET \
  --url https://vyla-api.pages.dev/api/stream/tv
{
  "success": true,
  "tmdb_id": "<string>",
  "season": "<string>",
  "episode": "<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 TV episode in parallel — each in an isolated request with its own CPU budget — and returns fully enriched sources. Unlike /api/tv, this endpoint produces significantly more sources, deep-deduplicates them, and attaches pre-built download_url, ffmpeg_command, and proxied vlc_url on every source. /api/download/tv is an alias — both endpoints return the identical response.

Query Parameters

id
string
required
TMDB series ID — not episode ID. Find it at themoviedb.org, e.g. themoviedb.org/tv/456456.
season
number
default:"1"
Season number.
episode
number
default:"1"
Episode number.

Example Request

curl "https://vyla-api.pages.dev/api/stream/tv?id=456&season=1&episode=1"

Using the Results

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 series ID that was queried.
season
string
required
The season number that was queried.
episode
string
required
The episode number 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": "456",
  "season": "1",
  "episode": "1",
  "results_found": 22,
  "sources": [
    {
      "provider": "VidRock",
      "quality": "360p",
      "type": "mp4",
      "url": "https://bcdnxw.hakunaymatata.com/bt/abc123.mp4?sign=...&t=...",
      "is_hls": false,
      "referer": "https://lok-lok.cc/",
      "ffmpeg_command": "ffmpeg -headers \"Referer: https://lok-lok.cc/\r\n...\" -i \"https://bcdnxw.hakunaymatata.com/...\" -c copy -bsf:a aac_adtstoasc s1e1_360p_1.mp4",
      "download_url": "/api/download?url=https%3A%2F%2F...&filename=s1e1_360p_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/202976?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/202976?token=...\" -c copy -bsf:a aac_adtstoasc s1e1_1080p_2.mp4",
      "download_url": null,
      "vlc_url": "/api/proxy?url=https%3A%2F%2Fvixsrc.to%2Fplaylist%2F202976%3Ftoken%3D...&headers=eyJ..."
    }
  ],
  "subtitles": [
    {
      "url": "https://vixsrc.to/playlist/202976?type=subtitle&rendition=3-eng&token=...&expires=...&edge=...",
      "label": "English [CC]",
      "format": "vtt"
    },
    {
      "url": "https://vdrk.b-cdn.net/cache/tv/456/1/1/English.vtt",
      "label": "English",
      "format": "vtt"
    }
  ]
}
Duplicate sources (same underlying file wrapped by different provider proxy chains) are automatically removed.
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.