Miruro Proxy API

REST API for anime and movie data. This proxy bridges your frontend to miruro.tv's internal pipe API + movie streaming providers.

Endpoints

GET /api/anime/182300

Returns full anime metadata (info from AniList + pipe API).

GET /api/providers

Returns all Miruro providers with capabilities, player type, and known CDNs.

GET /api/providers/bonk

Returns a specific provider's capabilities, player type, and known CDNs.

GET /api/anime/182300/providers

Returns providers available for this anime, merged with global capabilities and episode counts per category.

GET /api/anime/182300/episodes?provider=bonk

Returns episode list with provider-specific IDs. Supports provider query param (defaults to first available provider in providerOrder). Response includes availableProviders and provider capabilities.

GET /api/anime/182300/episodes/1?provider=bonk&category=ssub

Returns streaming sources for a specific episode. Supports provider, category, allProviders=true (try all providers and return first with streams), and prefer=hls (sort HLS streams first). Category is auto-detected from provider capabilities when omitted.

GET /api/trending?page=1&perPage=20

Trending anime (AniList GraphQL).

GET /api/popular?page=1&perPage=20

Most popular anime (AniList GraphQL).

GET /api/recent?page=1&perPage=20

Currently airing / recently updated anime (AniList GraphQL).

GET /api/search?q=Wistoria

Search anime by title (AniList GraphQL). Supports page and perPage params.

GET /api/searchv2?sort=POPULARITY_DESC&genres=Action&format=TV&status=FINISHED

Advanced search with filters. Supports sort, type, format, status, genres, tags, year, limit, offset.

GET /api/browse?season=SPRING&seasonYear=2026&sort=TRENDING_DESC&page=1&perPage=20

Browse seasonal anime with sorting. Supports season (WINTER/SPRING/SUMMER/FALL), seasonYear, sort, format, status, genres, tags, search, endDate_greater, startDate_lesser.

GET /api/schedule

Today's anime airing schedule with full anime metadata and airing times.

GET /api/stream?url={base64url}

HLS stream proxy. Fetches M3U8 playlists and TS segments from the CDN with proper Referer headers and CORS. The url param is a base64url-encoded CDN URL. Used automatically by hls.js when you point it at a /api/stream?url=... playlist URL.

GET /api/movie/{tmdb_id}?provider={name}

Extracts movie streaming URL. Optional provider param selects a single provider: justhd, peachify (all sub-providers), peachify/holly, peachify/air, peachify/moviebox, peachify/multi, peachify/net, 2embed, vidsrc.rip. Without provider, tries all in parallel and picks first verified reachable URL. Use /api/movie/providers to list available providers. Returns {"provider": "...", "url": "...", "referer": "..."}.

GET /api/tv/{tmdb_id}?s={season}&e={episode}&provider={name}

Extracts TV episode streaming URL. Optional provider param selects a single provider: vidlink, justhd, peachify (all), peachify/holly, peachify/air, peachify/moviebox, peachify/multi, peachify/net. Without provider, tries vidlink.pro first, then justhd as fallback. Use /api/tv/providers to list available providers. Returns {"provider": "...", "url": "...", "referer": "...", "captions": [...]}. Query params s and e default to 1.

GET /api/movie/proxy?url={url}&ref={referer}

Proxies movie M3U8 playlists and TS/.woff2 segments with proper Referer headers. Use this after getting a stream URL from /api/movie/{id}.

GET /api/tv/proxy?url={url}&ref={referer}

Proxies TV M3U8 playlists and TS segments with proper Referer headers. Identical to /api/movie/proxy. Use this after getting a stream URL from /api/tv/{id}.

GET /api/movie/trending

Trending movies today. Returns {"total": N, "page": 1, "results": [...]}. Results include id, title, type, year, rating, poster, backdrop.

GET /api/movie/popular

Popular movies (all-time). Same format as trending.

GET /api/movie/top_rated

Top-rated movies.

GET /api/movie/now_playing

Movies currently in theaters.

GET /api/movie/upcoming

Upcoming movies.

GET /api/movie/search?q={query}&page={page}

Search movies and TV shows by title. Uses TMDB multi search.

GET /api/movie/discover?genre={genre_id}&sort={sort_by}&page={page}

Discover movies by genre (e.g. 28 for Action, 878 for Sci-Fi). Default sort: popularity.desc. Use /api/genres?type=movie to get genre IDs.

GET /api/tv/trending /api/tv/popular /api/tv/airing_today /api/tv/on_the_air

TV show discovery endpoints. Same response format as movie discovery.

GET /api/genres?type=movie|tv

Returns genre list with IDs: {"genres": [{"id": 28, "name": "Action"}, ...]}.

GET /api/movie/providers

Lists available movie stream providers with labels, types, and notes.

GET /api/tv/providers

Lists available TV stream providers with labels, types, and notes.

GET /api/health

Health check: server status, uptime, cache size, thread pool config, rate limit.

Providers

Anime

Supported internal providers (in Miruro's configured order): bonk, bee, ally, kiwi, hop, pewe, moo, nun, bun, twin, cog, telli.

External providers may also appear per-anime (e.g. UNIQUESTREAM, ANIMEDUNYA, SENSHI, CRUNCHYROLL).

Categories: sub (hardsubbed), dub (dubbed), ssub (softsub — separate subtitle tracks), sdub (softsub dub). Not every provider supports every category; use /api/providers or /api/anime/:id/providers to check capabilities.

The ssub/sdub categories return subtitles in the response — VTT or ASS tracks for frontend rendering.

Movie

Providers: justhd (vaplayer.ru HLS), peachify (AES-256-GCM: holly/air/moviebox/multi/net), 2embed (uqloads), vidsrc.rip (XOR VRF). Select one with ?provider=justhd or ?provider=peachify/holly. Omit provider to run all in parallel and pick the first reachable URL.

TV

Providers: vidlink (enc-dec.app → vidlink.pro), justhd (vaplayer.ru HLS), peachify (AES-256-GCM: holly/air/moviebox/multi/net). Select one with ?provider=vidlink or ?provider=justhd. Omit provider to try vidlink first, then justhd.

Examples

# Anime
curl http://localhost:8000/api/providers
curl http://localhost:8000/api/providers/bonk
curl http://localhost:8000/api/anime/178789/providers
curl http://localhost:8000/api/anime/178789/episodes?provider=bonk
curl http://localhost:8000/api/anime/178789/episodes/3?provider=bonk&category=ssub
curl http://localhost:8000/api/anime/178789/episodes/3?allProviders=true&prefer=hls

# Discovery
curl http://localhost:8000/api/movie/trending
curl http://localhost:8000/api/movie/search?q=backrooms
curl http://localhost:8000/api/movie/discover?genre=28&sort=vote_average.desc
curl http://localhost:8000/api/tv/popular
curl http://localhost:8000/api/genres?type=movie

# Movie stream (auto — all providers parallel)
curl http://localhost:8000/api/movie/454639
# → {"provider":"justhd","url":"https://...m3u8","referer":"https://vaplayer.ru/"}

# Movie stream (explicit provider)
curl "http://localhost:8000/api/movie/454639?provider=peachify/holly"
curl "http://localhost:8000/api/movie/454639?provider=2embed"

# TV stream (auto — vidlink first, then justhd)
curl "http://localhost:8000/api/tv/1396?s=1&e=1"
# → {"provider":"vidlink.pro","url":"https://...m3u8","referer":"https://vidlink.pro/","captions":[...]}

# TV stream (explicit provider)
curl "http://localhost:8000/api/tv/1396?s=1&e=1&provider=justhd"

# Play movie/TV stream:
# hls.js → /api/movie/proxy?url={encoded_url}&ref={encoded_referer}
# hls.js → /api/tv/proxy?url={encoded_url}&ref={encoded_referer}