⚠️ Hosting Notice: Miruro now has Cloudflare protection on the pipe endpoint. Do not deploy on Vercel — its IPs are datacenter-blocked by CF. Use a VPS with a residential or non-datacenter IP instead.
Miruro

Miruro API

Reverse-engineered anime streaming API. Episodes, sources, metadata — all in one place.

v3.0  ·  Live

Search & Discovery

GET/search

Search anime by name. Returns full metadata — title, cover, banner, genres, studios, scores, airing status, and more.

Params: query (required)  ·  page=1  ·  per_page=20
Returns: page, perPage, total, hasNextPage, results[] (20+ fields each)
Try it
GET/suggestionsNEW

Lightweight autocomplete search. Returns only essentials: id, title, poster, format, status, year, episode count. Max 8 results.

Params: query (required)
Try it
GET/spotlightHOT

Top 10 anime currently trending and popular globally. Perfect for hero banners and home carousels.

Try it
GET/filterNEW

Advanced filter and browse. All params are optional — combine freely.

ParamValues
genreAction, Romance, Comedy, Drama, Fantasy, Sci-Fi …
tagIsekai, Time Skip, Reincarnation …
year2025, 2024 …
seasonWINTER · SPRING · SUMMER · FALL
formatTV · MOVIE · OVA · ONA · SPECIAL
statusRELEASING · FINISHED · NOT_YET_RELEASED · CANCELLED
sortSCORE_DESC · POPULARITY_DESC · TRENDING_DESC · START_DATE_DESC
page / per_pagePagination (default 1 / 20)
Try it

Collections

GET/trending

Currently trending anime across the community.

Params: page=1  ·  per_page=20
Try it
GET/popular

Most popular anime of all time by total user count.

Params: page=1  ·  per_page=20
Try it
GET/upcoming

Most anticipated anime not yet aired.

Params: page=1  ·  per_page=20
Try it
GET/recent

Currently airing / this season's anime.

Params: page=1  ·  per_page=20
Try it
GET/schedule

Next episodes airing soon — includes airingAt (UNIX), timeUntilAiring (seconds), and next_episode number.

Params: page=1  ·  per_page=20
Try it

Anime Details

GET/info/{anilist_id}

Complete anime detail page in one request — title, description, cover, banner, format, season, scores, genres, tags, studios, characters, staff, relations, recommendations, trailer, external links, stats, and more.

Try /info/20 Try /info/21
GET/anime/{id}/characters

Paginated character list — name, image, role (MAIN / SUPPORTING), Japanese voice actors with images.

Params: page=1  ·  per_page=25
Try it
GET/anime/{id}/relations

All related media — sequels, prequels, side stories, spin-offs, source material. Each entry includes relation type and basic metadata.

Try it
GET/anime/{id}/recommendations

Community "if you liked X, try Y" recommendations sorted by rating.

Params: page=1  ·  per_page=10
Try it

Streaming — 3-Step Flow

How it works: Follow these 3 steps in order. Each step's output feeds directly into the next.
1GET/episodes/{anilist_id}

Get all available episodes across multiple providers (kiwi, arc, zoro, hop …) organised by audio type (sub / dub).

Returns: mappings (AniList / MAL / Kitsu IDs) + providers (episode lists per provider)
{
  "mappings": { "anilistId": 178005, "malId": 56885, ... },
  "providers": {
    "kiwi": {
      "episodes": {
        "sub": [
          {
            "id": "watch/kiwi/178005/sub/animepahe-1",
            "number": 1,
            "title": "Episode Title",
            "image": "https://...",
            "airDate": "2026-01-04",
            "duration": 1420,
            "filler": false
          }
        ]
      }
    }
  }
}
Try it
2/watch/{provider}/{anilistId}/{category}/{slug}RECOMMENDED

Take the id from Step 1 and use it directly as the URL — no extra params needed.

Try it
{
  "streams": [
    { "url": "https://.../master.m3u8", "type": "hls", "quality": "1080p" }
  ],
  "subtitles": [ { "file": "...", "label": "English" } ],
  "intro":  { "start": 0,    "end": 90   },
  "outro":  { "start": 1300, "end": 1420 }
}
Alternative: GET /sources?episodeId=...&provider=...&anilistId=...&category=...
3Play the stream

Feed streams[0].url into any HLS player — Video.js, hls.js, VLC, mpv. Subtitles are hard-subbed (kiwi/pahe) or in the subtitles[] array (zoro/arc). Use intro/outro timestamps for skip buttons.