Integrate our player in seconds. Just pass the TMDB or IMDb ID and we handle the rest.
Sign up for a free key (see it any time on your account page). Append it as ?key= to any URL on this page — required for the JSON API, optional for embed pages (only needed there to turn ads off on an ad-free plan).
One <iframe>, three media types — pick the tab that matches what you're embedding.
A standalone page listing every language dub and quality we can find as direct, clickable download links — open it directly, or link/embed it from your own site. No iframe, no API key.
Same data the player's own CC menu uses — no API key needed. Returns { success, subtitles: [{ language, display, url, format }] }, one entry per language, ready to feed a <track> element or your own subtitle UI.
None of this needs any extra integration work on your side — every /movie, /tv, and /anime embed above already includes it.
Races every source, falls back until one actually plays.
Real language switch for titles with dubbed sources.
Fetched automatically per title — nothing to host.
Resume prompt on return visits, auto-play for TV.
Feature-detected, shows only where it works.
Optional link to every language/quality we found.
Open these directly in your browser to see it work — every call, success or fail, shows up under Analytics & recent requests on your account page.
Building a site? Copy this markdown and paste it into ChatGPT, Claude, or Cursor — it's written from the developer's perspective with our real endpoints, so the AI can write your integration component for you instantly.
I am building a streaming website and want to embed the NHD Embed player via an iframe. Please write the integration code for me based on the following API reference.
### 1. Base URL
The player is hosted at: http://nhdapi.com
### 2. Endpoints
- Movie: http://nhdapi.com/movie/{tmdbId or imdbId}
- TV episode: http://nhdapi.com/tv/{tmdbId or imdbId}/{season}/{episode}
- Anime episode: http://nhdapi.com/anime/{aniListId}/{episode}
Use a TMDB numeric id, or an IMDb id starting with `tt` — both resolve automatically.
### 3. Authentication
Append `?key=YOUR_API_KEY` to the URL. Not required to embed at all — only needed if the key is on a paid, ad-free plan. Without a key (or on the free plan) the embed still plays, just with ads.
### 4. Minimal embed
```html
<iframe src="http://nhdapi.com/movie/550" width="100%" height="100%" frameborder="0" allowfullscreen></iframe>
```
Wrap it in a fixed-aspect-ratio container (e.g. `aspect-ratio: 16/9`) — the player fills whatever box it's given.
### 5. What the player already handles internally
None of this needs any extra query params or JS on your side — it's already inside the embed:
- Automatic failover across multiple sources if one is down
- A Server switcher and, for multi-dub titles, an Audio language switcher
- Subtitles across 20+ languages, auto-fetched per title
- A resume-from-last-position prompt, and next-episode auto-play for TV
- Chromecast/AirPlay casting where the browser supports it
### 6. Important — what NOT to assume
- There is currently no `postMessage` API from the iframe to the parent page (no playback-progress or watch-state events are emitted).
- There are no query parameters for forcing audio language, subtitle language, quality, accent color, or hiding specific controls — those are chosen by the viewer inside the player's own UI.
- Do not invent parameters or events beyond what's listed above.
401 invalid/missing key • 429 daily limit or rate limit reached •
403 title blocked • 500 extraction failed after trying every provider.
Free-plan keys get a limited number of extractions per day (see Account) — upgrade on Pricing for a higher/unlimited cap.