Streaming API v1

Anime playback,
one iframe away.

NovusCloud resolves streams across multiple providers, proxies HLS playback, and serves subtitles, posters and episode metadata from our infrastructure. Your site embeds the player with one iframe.

01 - Endpoints

Players & URL shapes

Six URL shapes cover AniList, MyAnimeList, HiAnime episode ids and internal episode ids. Keep k=1 on links you copy: it marks the request as an embed and keeps direct access disabled.

AniList

One episode by AniList id. The server is picked for you.

GET novuscloud.buzz/embed/ani/{anilist_id}/{episode}/{type}

type sub dub hsub - hsub needs no server segment

AniList + server

Pin a provider explicitly instead of letting the fallback chain decide.

GET novuscloud.buzz/embed/{server}/ani/{anilist_id}/{episode}/{type}

server hd-1 to hd-4

MyAnimeList

Same player, MAL ids. The id resolver maps them to the AniList catalog.

GET novuscloud.buzz/embed/mal/{mal_id}/{episode}/{type}

type sub dub hsub

MAL + server

MAL id with a pinned provider.

GET novuscloud.buzz/embed/{server}/mal/{mal_id}/{episode}/{type}

server hd-1 to hd-4

HiAnime Episode ID

HiAnime episode id, for links that already carry one.

GET novuscloud.buzz/embed/{server}/{embed_id}/{type}

server s-1

Internal episode id

Resolves through our own episode catalog, so it can also return hard-sub and raw entries.

GET novuscloud.buzz/embed/{episode_id}/{type}

type sub dub - add a server segment (/embed/a-1/{episode_id}/{type}) to pin one

Query switches

Every embed accepts these. They only change behaviour in the player, never which title is served.

ParameterValueEffect
k1Marks the link as an embed. Keep it on copied links.
autoplay1Starts playback as soon as the browser allows it. A blocked autoplay leaves a play button instead of playing silently.
skipIntro1Jumps the intro chapter automatically when one is known.
skipOutro1Jumps the outro chapter automatically.
timesecondsStarts at that offset.
The player refuses top-level loads and sandboxed iframes. Embed it with a plain <iframe> and let the user click play once on mobile.
02 - Events

Player & bridge

The embedded player posts events to the parent window. Listen for them to sync your own queue, progress bar or next-episode button.

Parent page listener
// the player also accepts commands back
window.addEventListener("message", function (event) {
  let data = event.data;
  if (typeof data === "string") {
    try { data = JSON.parse(data); } catch (e) { return; }
  }

  if (data.type === "TIME_UPDATE") {
    // data.currentTime, data.duration
  }
  if (data.type === "NEXT_EPISODE") {
    // advance your own episode list
  }
});
EventPayloadWhen
TIME_UPDATEcurrentTime, durationOn playback progress (throttled)
NEXT_EPISODEnoneWhen the episode ends
PLAYER_READYnoneOnce the player has a source
03 - Embed

A complete iframe

Copy this, swap the ids, done. The frame is responsive through aspect-ratio, so it works on any layout.

URL

        
04 - Playground

Build an embed frame

Generate iframe code and preview it live. Links only work when embedded on a page, so the preview runs inside an iframe just like your site would.

Live preview16:9
Fill in an ID and generate to preview the player here.