curl --request GET \ --url https://vyla-api.pages.dev/api/proxy
{ "error": "<string>"}
Core Endpoints
GET /api/proxy
Proxy any video URL through Cloudflare with CORS, header injection, and full m3u8 rewriting
GET
/
api
/
proxy
GET /api/proxy
curl --request GET \ --url https://vyla-api.pages.dev/api/proxy
{ "error": "<string>"}
Proxies any URL through Cloudflare Workers. Handles CORS, injects required Referer and Origin headers, and rewrites m3u8 playlists so all segment URLs are also proxied automatically — the entire HLS stream plays without CORS issues in any browser player.Also accepts HEAD requests for live source checking.
When the proxied URL returns an m3u8 playlist, all segment and variant URLs inside it are automatically rewritten to also go through /api/proxy. This ensures the entire HLS stream plays without CORS issues.
Original segment: https://cdn.example.com/seg001.tsRewritten segment: https://vyla-api.pages.dev/api/proxy?url=https%3A%2F%2Fcdn.example.com%2Fseg001.ts
If the original request included a headers param, it is preserved and forwarded for every rewritten segment URL automatically.
The upstream response body is streamed directly. Content-Type, Content-Length, and other relevant headers are forwarded. CORS headers are added.
{ "error": "Missing url parameter" }
{ "error": "Invalid url" }
{ "error": "Blocked host" }
{ "error": "Fetch failed: <reason>" }
{ "error": "Upstream error 403" }
The proxy is used internally by /api/player — all stream and subtitle URLs served to the player are already routed through /api/proxy.
The vlc_url field returned by /api/stream/movie and /api/stream/tv is a pre-built proxy URL — pass it directly to VLC or any URL-capable player without additional encoding.