Documentation Index
Fetch the complete documentation index at: https://mintlify.com/mohameodo/nano/llms.txt
Use this file to discover all available pages before exploring further.
/api/scrape is nano’s stream-resolution endpoint. Given a TMDB ID, media type, and an optional provider ID, it invokes the matching .rink scraper plugin to find a playable stream URL. The returned URL is always wrapped in a /api/proxy call so the browser can play it without CORS issues. Subtitles are automatically fetched from sub.vdrk.site and merged with any plugin-provided subtitles.
Request
Method:GETPath:
/api/scrape
The TMDB ID of the movie or TV show to stream.
Media type:
"movie" or "tv".Season number. Only used when
type=tv.Episode number. Only used when
type=tv.The scraper plugin ID to use (e.g.
"rei"). The value is validated against the server allow-list defined in shiopaConfig.features.videoPlayer.servers. If the requested provider is not in the allow-list, the endpoint falls back to the configured defaultServer (defaults to "rei" in production). When omitted, "nemu" is used as the initial value, subject to the same allow-list check.Response
Content-Type:application/json
On success the endpoint returns a StreamResult object:
The playable stream URL, proxied through
/api/proxy?data=.... Pass this directly to an HLS player such as hls.js or Video.js.Whether the URL is a direct stream (as opposed to an embed or intermediate page). nano’s
.rink plugins always resolve to direct URLs, so this is typically true.Whether the URL is an HLS playlist (
.m3u8). Use this to decide whether to initialise an HLS.js player instead of a plain <video> element.Array of subtitle track objects, merged from the plugin and from
sub.vdrk.site.Optional array of quality variants. Only present when the plugin returns multiple quality options.
Subtitle Fetching
After a stream URL is successfully resolved,/api/scrape automatically fetches additional subtitles from sub.vdrk.site:
- Movies:
https://sub.vdrk.site/v1/movie/{id} - TV episodes:
https://sub.vdrk.site/v1/tv/{id}/{season}/{episode}
"english" maps to "en"). SRT subtitle URLs are routed through /api/proxy so the browser receives them as WebVTT.
Adult Content Blocking
Before returning a stream URL,/api/scrape checks TMDB for the adult flag on the resolved title. If adult: true, the endpoint returns HTTP 403:
No Stream Found
If the plugin returns no URL, or if the URL fails nano’s stream safety check, the endpoint returns HTTP200 with an error payload:
error will be "Blocked stream" and blockedStream will be true.
Examples
The
url field in a successful response is always a /api/proxy?data=... URL, never the raw stream origin. The data parameter is a base64-encoded JSON object containing the real URL and any required request headers. This ensures CORS is handled transparently for the browser.