GET /movie?id=1101412 SSE: meta · source · done GET /tv?id=1396&season=1&episode=3 SSE: meta · source · done GET /subtitles/movie/1101412 caption tracks GET /subtitles/tv/1396/1/3 caption tracks
@NHD Play
Your movies, shows & anime on one address — one line to embed, an account that remembers what you watched, and a share of the advertising for the audience you bring.
- — Movies
- — Shows
- — Anime
Estimated catalog size across the sources this host can resolve — an estimate, not a promise about any one of them.
- One port for the site, the player, the panel and the API
- An account for every viewer — plans, payments, history, and a link that pays the ones who bring an audience
- Advertising you switch on and time, and that no subscriber ever sees
- One iframe to embed the whole player, ad-free with a key
Titles this host can resolve
Live preview
Player playground
Point this at a title, flip the options, and copy the frame for your site. The preview is the same player your visitors will see.
The player fills whatever box you give it — the frame is pinned at 16:9 and centred, so try Small to see the compact chrome. Movie, TV and Anime each keep their own id, because the same number names a different title in each. The preview opens on the title and waits: nothing is played until you press play in it, which is also the first thing a visitor sees.
Everything included
A whole streaming stack, on one address
The page you are reading, the player, the accounts, the payments, the advertising, the statistics and the admin panel are one server you start with one command.
For the people watching 6 things
Everything a visitor meets, from the address bar to the last episode.
-
Full-page player
Real title URLs like
/movie/1101412and/tv/1396/1/3. Reload lands on the same frame, links are worth sharing, and captions, quality and episode switching are in the player itself. -
Many sources, one request
Playback is a stream of events: the title arrives first, then one source the moment each provider resolves it. Playback starts on the first one — never at the end of the list.
-
An account that remembers
Sign in and the host keeps what you watched, where you stopped and which provider served it — plus one page with your plan, your payment history, your password and the devices you are signed in on.
-
The community, in the player
A host with a channel draws a Join Telegram button in the player itself — beside the settings gear on a desktop and in the phone's quick actions — so the audience a link brought here has somewhere to go that is not the address bar. Leave the address empty and no button is drawn at all.
-
Plans you can buy without a card
Monthly or yearly, in the currency the operator names, paid by a mobile wallet, a wallet address or a bank transfer — whichever they actually take. You are handed a reference code and paste what you sent; a person then confirms it and the subscription starts. Nothing is charged behind your back and nothing is automatic.
-
Embed it anywhere — ad-free with a key
Drop an iframe anywhere and you have the player, its controls and its fullscreen. A subscribed account gets its own key to put in that address, which spares its visitors the advertising, and the key can be locked to the domains its owner has proved. Leave the
sandboxattribute off the frame: a sandboxed embed is refused rather than served, because it is the one way an embed can keep the picture and stop the tab the host is paid through.
For the person running it 6 things
What is switched on, priced, counted and paid out — and where.
-
Advertising you control
A pre-roll curtain, a banner and one smartlink tab, each switched on separately and timed from the panel. A subscriber — or anybody arriving through a working embed key — is served none of them, and that answer is given by the server rather than by a class a client has to remember.
-
Paid for the audience you bring
An earning link is one query on the end of this host's address, and the three things it can count are the three this host really observes. Every account starts its own from its own page — one button, one address, and a share of what the advertising that address brings is worth. Payouts are requested from that same page and sent by hand from the panel, where the whole queue is one list.
-
Statistics, and a live audience
Views, plays and which provider actually served each one, counted on this machine and kept in a plain JSON file you can read, diff and delete — and above those totals, the panel's live half: who is on the site at this moment, how many of them are actually playing, and where they came from. The page says so itself every fifteen seconds, which is why the count is people with the site open rather than requests that were logged.
-
Your own code, on every page
Paste your own head and body tags — a verification
meta, an analytics snippet, a network's script — and this host writes them into the pages it serves. A switch decides whether subscribers and embeds carrying a key get them too, because a verification tag is not an advertisement. -
Policy, not guesswork
Switch a provider off, hide a title, put the whole host into maintenance with your own sentence on screen. Every one of those is a switch in the panel, not a code change.
-
Themed from the panel
The name, the tagline, the logo, the accent colour, the footer line and the title the player opens all come from the settings — and reach this page with no rebuild and no restart.
Plans
Subscribe and watch everything
Pick a plan, send the payment, and it is switched on once it is confirmed.
Earning
Bring an audience, take a share of the advertising
Every account can take one link and be paid for what arrives through it. The counting is this host's own — three events, the three it can actually see — and the balance is worked out from those counters every time the page is opened, so a rate the operator corrects changes it at once. What you keep is a percentage of what that advertising is worth, and it is printed on your own page with the three rates beside the counters they came from.
-
01
Turn it on yourself, from your account
Earning is a tab of the account you already have, and one Start earning button on it — no link is minted until somebody presses it, and joining costs nothing and commits you to nothing. The same tab pauses the link again, and pausing only stops the counting: a balance that has already been earned is not what happens next.
-
02
Hand it out, and let them land anywhere
It is this host's address with one query on the end, and it credits whatever they open through it — a poster on this page, a title's own address, an embedded player on somebody else's site. An arrival is remembered for a while, and it is the arrival that is credited rather than every page view afterwards.
-
03
Ask for the money once it is worth sending
The balance is a subtraction — what the counters are worth, minus what has already been sent — so there is nothing to keep in step. $10.00 is what it has to reach before one button asks for the whole of it; a person then sends it, and the request sits on your page until it is marked paid. There is no minimum here, so one button asks for whatever the balance is, whenever you like; the request sits on your page until a person has marked it paid.
Three things are counted, and nothing else
Each one is observed in the only place that cannot be lied about cheaply, which is why the list is this short.
- An impression A page that was served the advertising. Counted where the tags are handed over, which is the only moment this host can see a page receive them for itself.
- A click The smartlink tab really opening. A tab the browser refused never happened, so it is not counted — imprecise, and the honest way to be imprecise.
- A play A first frame. The player is the only thing here that knows whether a resolve was watched, so the player is what reports it, and one title watched twice is two.
How it works
One address, three steps
One port answers all three of them: the player a viewer opens, the events an embed listens to, and the panel the operator switches everything from.
-
01
Ask for a title, in the address bar
/movie/1101412and/tv/1396/1/3open the full-page player on that title. The URL is the shape the reference site uses, so a reload lands on the same frame and a link is worth sending. -
02
The API answers with events
A playback request is a Server-Sent Events stream:
metawith the title and its captions, then onesourceper provider the moment it resolves, thendonewith the count. -
03
Everything else is a switch in the panel
The name and the accent, the sources offered and their order, the pre-roll and the smartlink, your own head and body tags, the plans a viewer may buy, the earning program and who may join it, the keys that make an embed ad-free and the domains each is locked to, the content policy and the player's own defaults — every one of them a switch in the panel, reaching this page and the player with no rebuild and no restart.
Documentation
Call it, or embed it
Every endpoint is the same port as this page. The player is an iframe away, and both snippets print the address you actually opened.
<iframe src="http://localhost:5173/movie/1101412" width="960" height="540" frameborder="0" allow="autoplay; fullscreen; encrypted-media" allowfullscreen></iframe>
<iframe src="http://localhost:5173/movie/1101412?key=VYLA-AF-XXXX-XXXX" width="960" height="540" frameborder="0" allow="autoplay; fullscreen; encrypted-media" allowfullscreen></iframe>
The four blocks after VYLA-AF- are the subscriber's own;
they are printed on their account page and can be locked to the domains
they have proved.