N
NHD Embed

Developer Friendly API

Integrate our player in seconds. Just pass the TMDB or IMDb ID and we handle the rest.

Getting Started

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).

Embed Player

One <iframe>, three media types — pick the tab that matches what you're embedding.

HTML iframe example
<iframe src="http://nhdapi.com/movie/550" width="100%" height="100%" frameborder="0" allowfullscreen></iframe>
Direct endpoint
http://nhdapi.com/movie/{tmdbId/imdbId}
HTML iframe example
<iframe src="http://nhdapi.com/tv/1399/1/1" width="100%" height="100%" frameborder="0" allowfullscreen></iframe>
Direct endpoint
http://nhdapi.com/tv/{tmdbId/imdbId}/{season}/{episode}
HTML iframe example
<iframe src="http://nhdapi.com/anime/21/1" width="100%" height="100%" frameborder="0" allowfullscreen></iframe>
Direct endpoint
http://nhdapi.com/anime/{aniListId}/{episode}

Downloads

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.

Movie download page
http://nhdapi.com/dl/movie/{tmdbId/imdbId}
TV episode download page
http://nhdapi.com/dl/tv/{tmdbId/imdbId}/{season}/{episode}

Subtitles

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.

Movie
http://nhdapi.com/api/subtitles?mediaType=movie&tmdbId={tmdbId}
TV episode
http://nhdapi.com/api/subtitles?mediaType=tv&tmdbId={tmdbId}&season={season}&episode={episode}

Player Features

None of this needs any extra integration work on your side — every /movie, /tv, and /anime embed above already includes it.

Automatic failover

Races every source, falls back until one actually plays.

Multi-language audio

Real language switch for titles with dubbed sources.

Subtitles, 20+ languages

Fetched automatically per title — nothing to host.

Resume & next episode

Resume prompt on return visits, auto-play for TV.

Chromecast & AirPlay

Feature-detected, shows only where it works.

Direct download

Optional link to every language/quality we found.

Quick Test

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.

Movie example
http://nhdapi.com/movie/299534?key=YOUR_API_KEY
TV example (season 1, episode 1)
http://nhdapi.com/tv/1399/1/1?key=YOUR_API_KEY
Download page example (no key needed)
http://nhdapi.com/dl/movie/550

Integrate with AI

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.

Markdown
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.

Errors & Limits

Error response shape
{ "success": false, "error": "..." }

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.