EmnexAnime API
A clean REST API for anime — a full catalog (home, trending, seasonal, search, detail, seasons, episodes, characters, schedule) powered by AniList, plus resolved HLS streams that play in your own player, ad-free and with no iframe.
Introduction
EmnexAnime has two layers. Metadata is served from the official AniList GraphQL API (cached) — reliable and unlimited. Streaming resolves a playable HLS master from an AniList/MAL id, decrypts the source, and re-serves it through a referer-aware proxy so browsers can play it directly.
Every list item uses the same compact Card shape. Every id in a path is an AniList id unless the path says mal.
Base URL & conventions
https://api.emnexanime.site
- All responses are
application/json; charset=utf-8withAccess-Control-Allow-Origin: *. - List endpoints accept
?page(default1) and?perPage(default30, max50) and return apageInfoobject. - Metadata responses are cacheable; streaming responses are
no-store(signed URLs expire).
Authentication
None. The API is open and read-only — no keys, tokens, or headers to send.
Rate limits & caching
Metadata is cached in-memory (home/listings ~5 min, detail ~10 min), keeping the service well under AniList's ~90 req/min and making repeat calls instant. Please cache on your side and avoid hammering /api/sources (each call resolves a fresh signed stream).
Data models
Card — every catalog item
Sources — from /api/sources
Season — from …/seasons (relation chain)
Player integration
Hand the resolved URLs straight to Vidstack + hls.js. The hls, subtitles[].url and thumbnailsVtt values are already proxied — no extra headers needed.
Errors
Errors return { "error": "message" } with an HTTP status:
| Status | Meaning |
|---|---|
400 | Bad or missing parameter (e.g. missing query / episode). |
404 | Unknown endpoint. |
502 | Upstream failed (AniList error, or a title/episode couldn't be resolved for that sub/dub). |