πŸ”’ MovieBox API

Enter the passcode to access documentation

Invalid passcode. Try again.

🎬 MovieBox API

Stream movies & TV series with full subtitle support, video seeking, and download pause/resume

βœ“ 8 Endpoints βœ“ Video Seeking βœ“ Subtitles βœ“ Pause/Resume
πŸ”

Search

Search movies & TV series from MovieBox database with live results

πŸ“₯

Multi-Quality

Download links in 360p, 480p, 720p, and 1080p

πŸ—’οΈ

Subtitles

Multiple languages in SRT format with proxy support

⏩

Video Seeking

HTTP Range support β€” skip to any position in the video

⏸️

Pause/Resume

Pause downloads and resume where you left off

🌍

Region Bypass

Built-in rotation with 19 Kenyan IPs for unrestricted access

Endpoints
Subtitles Guide
Streaming & Seeking
FAQ
Core Endpoints
GET/api/search/:query

Search for movies and TV series. Returns titles, IDs, posters, year, rating, and available subtitle languages.

β†’ avatar β†’ spider-man β†’ wednesday
GET/api/info/:movieId

Detailed movie/series information β€” cast, description, ratings, seasons, episodes, and metadata.

β†’ Avatar β†’ Spider-Man β†’ Wednesday
GET/api/sources/:movieId

Get download links (direct + proxy URLs) in multiple qualities, plus captions and processedSubtitles.

For TV episodes, add ?season=1&episode=1 query parameters.

β†’ Avatar (movie) β†’ Wednesday S1E1 β†’ Wednesday S1E3
GET/api/homepage

Homepage content β€” featured movies, recommendations, and categories from MovieBox.

β†’ View Homepage
GET/api/trending

Currently trending movies and TV series. Supports ?page=0&perPage=18 pagination.

β†’ View Trending
Proxy Endpoints
GET/api/download/:encodedUrl

Video download proxy β€” bypasses CDN restrictions with proper headers. Supports HTTP Range requests for video seeking and download pause/resume.

URLs are provided automatically in the /api/sources response as proxyUrl.

βœ“ Video Seeking: Send a Range header and get 206 Partial Content back β€” your video player can skip to any position.
βœ“ Pause/Resume: Stop a download, then resume later by requesting the remaining byte range.
GET/api/subtitles/:encodedUrl

Subtitle proxy β€” serves .srt files through the proxy with proper CDN headers. Also supports Range requests.

URLs are provided in the /api/sources response under processedSubtitles[].proxyUrl.

How Subtitles Work

Subtitles are returned automatically when you call the /api/sources/:movieId endpoint. You get them in two formats:

1. Raw Captions β€” captions array

The original caption data from the upstream API.

// Inside /api/sources response β†’ data.captions [ { "id": "4450709968790113000", "lan": "en", "lanName": "English", "url": "https://cacdn.hakunaymatata.com/subtitle/...srt", "size": "116641", "delay": 0 } ]

2. Processed Subtitles β€” processedSubtitles array

Enhanced version with proxy URLs ready to use. This is what you should use in your app/website.

// Inside /api/sources response β†’ data.processedSubtitles [ { "id": "4450709968790113000", "languageCode": "en", "languageName": "English", "directUrl": "https://cacdn.hakunaymatata.com/...", "proxyUrl": "https://your-api.com/api/subtitles/https%3A%2F%2Fcacdn...", "size": "116641", "delay": 0, "format": "srt" } ]
Using Subtitles in Your App

HTML5 Video Player

<!-- Use proxyUrl from processedSubtitles --> <video controls> <source src="YOUR_PROXY_VIDEO_URL" type="video/mp4"> <track kind="subtitles" src="PROXY_SUBTITLE_URL" srclang="en" label="English" default> <track kind="subtitles" src="PROXY_SUBTITLE_URL_FR" srclang="fr" label="FranΓ§ais"> </video>

JavaScript / Fetch Example

// Step 1: Get sources + subtitles const res = await fetch('/api/sources/8906247916759695608'); const { data } = await res.json(); // Step 2: Get video proxy URL const videoUrl = data.processedSources[0].proxyUrl; // Step 3: Get subtitles data.processedSubtitles.forEach(sub => { console.log(sub.languageName, sub.proxyUrl); // "English" β†’ "/api/subtitles/https%3A%2F%2Fcacdn..." // "FranΓ§ais" β†’ "/api/subtitles/https%3A%2F%2Fcacdn..." });
πŸ”’ Will subtitles break my website?
No! The subtitle data is additive β€” it's just new fields added to the /api/sources response. Your existing code that reads processedSources or downloads won't be affected. The processedSubtitles and captions fields are simply new data you can choose to use or ignore.
Video Seeking & Download Pause/Resume

The /api/download/* proxy endpoint supports HTTP Range requests. This is the standard protocol used by video players and download managers.

How It Works

When you play a video through the proxy URL, the browser/player sends requests like:

# Normal request β€” full file GET /api/download/https%3A%2F%2Fbcdnxw... HTTP/1.1 # Response HTTP/1.1 200 OK Accept-Ranges: bytes Content-Length: 623914683 # Seeking to 50% β€” player sends Range header GET /api/download/https%3A%2F%2Fbcdnxw... HTTP/1.1 Range: bytes=311957341- # Response β€” partial content HTTP/1.1 206 Partial Content Accept-Ranges: bytes Content-Range: bytes 311957341-623914682/623914683 Content-Length: 311957342

Video Seeking in a Player

Just use the proxyUrl from the sources response as the video source. Seeking works automatically β€” the browser handles Range requests.

<!-- This just works β€” seeking is automatic --> <video controls src="https://your-api.com/api/download/https%3A%2F%2F..."> </video> <!-- Or with JavaScript --> <script> const video = document.querySelector('video'); video.src = data.processedSources[0].proxyUrl; // User can now drag the seek bar freely βœ“ // Player auto-sends Range requests βœ“ </script>

Download Pause/Resume

Download managers and apps can pause and resume by requesting byte ranges:

# Start download β€” get first 10MB curl -H "Range: bytes=0-10485759" -o part1.mp4 PROXY_URL # ⏸️ Pause... then resume from where you stopped curl -H "Range: bytes=10485760-" -o part2.mp4 PROXY_URL # Combine cat part1.mp4 part2.mp4 > full_movie.mp4
πŸ”„ Do I need to update my app/website?
No! If you are already using the proxyUrl from /api/sources, video seeking and pause/resume work automatically. The browser's <video> element and download managers already know how to send Range headers. The API now responds correctly to them β€” no code changes needed on your side.
βœ“ Backward compatible: Requests without a Range header still return the full file with 200 OK, just like before. Nothing breaks.
Frequently Asked Questions

Will the new changes break my existing website or app?

No. All changes are backward compatible. The API still returns the same response structure β€” it just adds new fields (processedSubtitles, captions) and supports Range headers on proxy endpoints. Your existing code will continue to work without any modifications.

Does video seeking work when streaming through the proxy?

Yes! The /api/download/* proxy now forwards Range headers to the upstream CDN and returns 206 Partial Content with the correct Content-Range. Any standard video player (browser <video>, VLC, mobile apps) will be able to seek automatically.

Can I pause and resume a download through the proxy?

Yes. The proxy advertises Accept-Ranges: bytes and correctly handles partial requests. Download managers (IDM, wget -c, curl with Range headers) can pause and continue downloads.

How do I add subtitles to my video player?

Call /api/sources/:id and use the processedSubtitles array. Each entry has a proxyUrl you can use as a <track> source in HTML5 video, or load directly in your mobile app's subtitle renderer.

What subtitle format is used?

All subtitles are in SRT format. The format field in processedSubtitles confirms this. SRT is supported by virtually all video players.

What languages are available for subtitles?

It depends on the movie. Common languages include English, French, Spanish, Arabic, Indonesian (in_id), and many more. Check the processedSubtitles array for available options per title.

Do I need to use the proxy URL for subtitles?

The directUrl may work in some cases, but it can be blocked by CDN restrictions. Using the proxyUrl (/api/subtitles/...) is recommended because it adds the proper headers to bypass CDN blocks.

MovieBox API β€” All 8 endpoints operational
Powered by Mr Frank x Sam Β· Region bypass with 19 rotating Kenyan IPs Β· Mobile auth headers