UNIBOXAPI Developer Reference

Clean, standardized REST API proxy delivering comprehensive metadata for movies, TV series, seasons, episodes, and franchise collections. Built with automated TMDB image resolution, in-memory caching, and clean JSON responses.

Base URL: http://localhost:3103/api/v1
Format: application/json
Authentication: Tiered API Key (Header / Query)
Caching: Smart 2-Tier Persistent (Memory + Disk)
Total Endpoints: 37 Active

Master Admin API Key

Kredensial Master Admin yang dikonfigurasi langsung di file environment (.env) dengan hak akses penuh tanpa batasan (Unlimited).

Konfigurasi API Key di File .env
API Key hanya tersedia khusus untuk Master Admin dengan kuota Unlimited Full Access. Kamu dapat menentukan dan mengubah kunci ini kapan saja di file Proxy/.env pada baris API_KEY=kunci_rahasia_kamu. Server akan menolak permintaan tanpa kunci yang valid dengan status 401 Unauthorized saat REQUIRE_API_KEY=true.
Input Master Admin API Key
Admin

💡 Kunci yang disimpan akan tersimpan di browser session dan otomatis dilampirkan ke semua pengujian cURL dan Interactive Explorer.

Metode Pengiriman Sintaks Penggunaan Keterangan
HTTP Header x-api-key: <API_KEY> Metode standar rekomendasi untuk backend service dan REST client.
Bearer Token Authorization: Bearer <API_KEY> Kompatibel dengan standar RFC 6750 authorization headers.
Query Parameter ?api_key=<API_KEY> Sangat praktis untuk tag <video src="..."> atau pengetesan cepat di browser URL bar.
GET /auth/verify

Memverifikasi status kredensial Master Admin API Key dan memeriksa apakah hak akses unlimited aktif.

Smart Persistent Caching System

Sistem cache pintar yang aktif di setiap endpoint dengan penyimpanan hybrid (Memory + Persistent Disk) dan durasi pintar hingga token kadaluarsa pada endpoint video stream.

Cache di Seluruh Endpoint + Smart Dynamic Stream Expiry
Setiap endpoint GET secara otomatis di-cache dalam L1 In-Memory Map (<1ms latency) dan disinkronkan ke L2 Persistent Disk (Proxy/data/cache.json). Khusus untuk endpoint GET Stream, sistem membaca timestamp expiresAt dari upstream dan menjaga cache tetap valid secara pintar persis hingga token tersebut kadaluarsa, bahkan setelah server direstart!
Live Cache Performance & Storage
Cache Hit Rate --% 0 hits / 0 misses
In-Memory Entries 0 Active cached objects
Persistent Disk Size 0 B data/cache.json
Cache Uptime 0s Process running
Hit Rate Efficiency 0%
Active Namespaces Breakdown:
No cached objects yet. Fetch endpoints to populate cache.
Category Adaptive TTL Cache Strategy Scope
Taxonomy 24 Hours (86,400s) Memory + Disk with SWR Genres, Countries, Years, Networks, Languages
Collections 12 Hours (43,200s) Memory + Disk with SWR Franchises (Marvel, Star Wars, Pixar, etc.)
Catalog 4 Hours (14,400s) Memory + Disk with SWR Movie & TV Series lists, search results, details
Homepage 15 Minutes (900s) Memory + Disk Featured carousel, recently added movies and series
Video Streams Dynamic (Upstream Expiry) Memory + Disk Direct .m3u8 URLs, video UUIDs, subtitles (survives restart)
GET /cache/stats

View real-time cache performance metrics, hit rate percentage, active item count, and persistent disk size.

POST /cache/clear

Invalidate all cache entries or selectively target a namespace via ?namespace=streams (or taxonomy, movies, series, browse).

Standard Response Envelope & Errors

Every response follows a uniform envelope containing status, statusCode, data, optional pagination, and timestamp.

Standard Success Envelope
{
  "status": "success",
  "statusCode": 200,
  "data": { ... },
  "pagination": {
    "page": 1,
    "limit": 24,
    "total": 120,
    "totalPages": 5,
    "hasNextPage": true,
    "hasPrevPage": false
  },
  "timestamp": "2026-11-08T07:00:00.000Z"
}
Status Code Meaning Description
200 OK Success Request succeeded and data returned in standard envelope.
400 Bad Request Validation Error Missing required query or path parameter (e.g. missing ?q= in search).
404 Not Found Resource Missing Specified slug, season number, or route does not exist.
502 Bad Gateway Upstream Error Failed connection or invalid JSON response from upstream streaming host.
504 Gateway Timeout Upstream Timeout Upstream host took longer than 15,000ms to answer.

Pagination & Infinite Scroll Guide

Learn how to load subsequent pages, implement infinite scroll (like the original site), and batch retrieve thousands of movies and TV shows.

How Infinite Scroll Works on IDLIX
On the original https://z2.idlixku.com/ website, when you scroll down to browse movies, series, or genres, the frontend automatically requests subsequent pages in the background using query parameters ?page=2, ?page=3, etc. You can implement the exact same seamless experience in your own client application using our standardized pagination object.

1. Query Parameters for Pagination

All catalog endpoints (/api/v1/movies, /api/v1/series, /api/v1/browse, and dedicated category displays) accept these parameters:

Parameter Type Default Allowed Range Description
page optional number 1 1 to totalPages Target page number to retrieve. Increment this value as the user scrolls down.
limit optional number 24 1 to 50 Number of records per page. Set up to 50 to fetch larger batches in a single request.
sort optional string latest latest, popular, rating Sort order of items across all paginated records.

2. Understanding the Pagination Response Object

Every paginated response includes this standardized object at the root of the JSON payload:

Field Type Example Usage in Client Code
page number 1 Current active page index.
limit number 24 Items returned in this response batch.
total number 7693 Total count of matching items across the entire library.
totalPages number 321 Total number of pages available (Math.ceil(total / limit)).
hasNextPage boolean true Primary condition for Infinite Scroll. If true, continue fetching when the user scrolls down; if false, display an "End of catalog" notice.
hasPrevPage boolean false Indicates whether earlier pages exist (useful for numbered page navigation buttons).

3. Client Implementation Snippets

// Infinite Scroll implementation with Vanilla JavaScript
let currentPage = 1;
let isFetching = false;
let hasMore = true;
let allMovies = [];

async function loadNextPage() {
  if (isFetching || !hasMore) return;
  isFetching = true;

  try {
    const res = await fetch(`http://localhost:3000/api/v1/movies?page=${currentPage}&limit=24&sort=popular`);
    const json = await res.json();

    // Append new items to existing list
    allMovies = [...allMovies, ...json.data];
    renderMovies(allMovies);

    // Update pagination state
    hasMore = json.pagination.hasNextPage;
    currentPage++;
  } catch (err) {
    console.error('Failed to load page:', err);
  } finally {
    isFetching = false;
  }
}

// Trigger next page when scrolling within 300px of page bottom
window.addEventListener('scroll', () => {
  const { scrollTop, scrollHeight, clientHeight } = document.documentElement;
  if (scrollTop + clientHeight >= scrollHeight - 300) {
    loadNextPage();
  }
});

// Initial load
loadNextPage();

Telegram Bot Notifier untuk Film Baru

Layanan bot Telegram otomatis yang memantau rilis film bioskop baru di IDLIX dan mengirim notifikasi lengkap dengan poster dan link streaming langsung ke channel atau grup pribadimu.

Cara Setup Bot Telegram di File .env
Buka file Proxy/.env lalu isi variabel:
1. TELEGRAM_BOT_TOKEN=... (Dapatkan token dari @BotFather di Telegram)
2. TELEGRAM_CHAT_ID=... (ID user atau ID channel kamu dari @userinfobot)
3. ENABLE_TELEGRAM_NOTIFIER=true (Aktifkan scheduler otomatis berkala)
Status Koneksi Telegram Bot
Memeriksa...
Bot Token & Chat ID Belum Diisi Proxy/.env
Auto Scheduler Nonaktif Setiap 30 Menit
Film Telah Disiarkan 0 data/notified_movies.json
Target Chat ID - Channel / Pribadi
GET /telegram/status

Memeriksa status bot Telegram, scheduler otomatis, interval pengecekan, dan total film yang telah disiarkan.

POST /telegram/test

Mengirim notifikasi tes format HTML langsung ke akun atau channel Telegram untuk memastikan bot token dan chat ID berfungsi.

POST /telegram/check-now

Memindai film terbaru dari IDLIX secara manual dan langsung menyiarkannya ke Telegram tanpa menunggu jadwal otomatis.

IDLIX REST API Endpoints

Complete 37 endpoints catalog categorized by module with live interactive explorer.

37 Endpoints

System Endpoints

Health inspection and service directory endpoints.

GET /health

Check proxy server health, uptime in seconds, and configured upstream target.

curl -X GET "http://localhost:3000/health" \
  -H "Accept: application/json"
GET /api/v1

Discover the API index catalog and all available routes in machine-readable JSON format.

curl -X GET "http://localhost:3000/api/v1" \
  -H "Accept: application/json"

Homepage Modules

Access the curated featured carousel and categorised content modules.

GET /api/v1/homepage

Retrieves top featured carousel items and section lists (Recently Added Movies, TV Series, and Latest Episodes).

curl -X GET "http://localhost:3000/api/v1/homepage" \
  -H "Accept: application/json"

Movie Endpoints

Search, filter, inspect details, and fetch recommendations for full-length movies.

GET /api/v1/movies

Get paginated movies with optional multi-facet filtering (genre, year, country, quality, sort).

Query Parameters

Parameter Type Default Description
page optional number 1 Page number for pagination.
limit optional number 24 Number of movie records to retrieve per page.
genre optional string - Filter by genre slug (e.g. action, horror, comedy).
year optional string - Filter by 4-digit release year (e.g. 2024, 2023).
country optional string - Filter by ISO 3166-1 country code (e.g. US, KR, JP, ID).
quality optional string - Filter by video resolution (e.g. 4K, BLU-RAY, HD, WEB-DL).
sort optional string latest Sorting order: latest, popular, or rating.
curl -X GET "http://localhost:3000/api/v1/movies?page=1&limit=10&genre=action&year=2024&sort=popular" \
  -H "Accept: application/json"
GET /api/v1/movies/filter-options

Retrieve all valid genres, country codes, years, and video qualities applicable for movie search filters.

curl -X GET "http://localhost:3000/api/v1/movies/filter-options" \
  -H "Accept: application/json"
GET /api/v1/movies/:slug

Get complete movie metadata including cast, director profile, trailer URL, backdrop gallery, and TMDB IDs.

Path Parameters

Parameter Type Required Description
slug string required Unique slug of the movie (e.g. the-odyssey-2026).
curl -X GET "http://localhost:3000/api/v1/movies/the-odyssey-2026" \
  -H "Accept: application/json"
GET /api/v1/movies/:slug/stream

All-in-one streaming resolver. Automatically extracts the movie internal UUID, handles the gate countdown, claims the session, and returns the direct video stream URL (.m3u8), multi-language subtitles (.vtt), quality, duration, and expiration timestamp. Results are cached until expiration.

Path Parameters

Parameter Type Required Description
slug string required Target movie slug identifier (e.g. the-odyssey-2026).
curl -X GET "http://localhost:3000/api/v1/movies/the-odyssey-2026/stream" \
  -H "Accept: application/json"

TV Series Endpoints

Query television series, season rosters, individual episodes, and recommendations.

GET /api/v1/series

List TV series with pagination and filter criteria (genre, year, country, sort).

Query Parameters

Parameter Type Default Description
page optional number 1 Current pagination page number.
limit optional number 24 Record limit per page.
genre optional string - Filter by TV series genre slug (e.g. drama, animation).
year optional string - Filter by first air date year.
country optional string - Country of origin code (e.g. US, KR).
sort optional string latest Sort by latest, popular, or rating.
curl -X GET "http://localhost:3000/api/v1/series?page=1&limit=10&genre=drama&sort=popular" \
  -H "Accept: application/json"
GET /api/v1/series/filter-options

Retrieve filter parameters applicable specifically to TV series catalogs.

curl -X GET "http://localhost:3000/api/v1/series/filter-options" \
  -H "Accept: application/json"
GET /api/v1/series/:slug

Get comprehensive TV series metadata, creators, broadcast networks, cast members, and seasons roster.

Path Parameters

Parameter Type Required Description
slug string required Unique slug of the series (e.g. american-dad-2005).
curl -X GET "http://localhost:3000/api/v1/series/american-dad-2005" \
  -H "Accept: application/json"
GET /api/v1/series/:slug/season/:seasonNumber

Get the complete episode directory, air dates, runtime, still poster images, and overview for a specific season.

Path Parameters

Parameter Type Required Description
slug string required Unique slug of the series.
seasonNumber number required Index number of the season (e.g. 1, 2).
curl -X GET "http://localhost:3000/api/v1/series/american-dad-2005/season/1" \
  -H "Accept: application/json"
GET /api/v1/series/:slug/season/:seasonNumber/episode/:episodeNumber

Get specific episode information including air date, runtime in minutes, still images, and episode overview.

Path Parameters

Parameter Type Required Description
slug string required Series slug identifier.
seasonNumber number required Season number.
episodeNumber number required Episode number.
curl -X GET "http://localhost:3000/api/v1/series/american-dad-2005/season/1/episode/1" \
  -H "Accept: application/json"
GET /api/v1/series/:slug/season/:seasonNumber/episode/:episodeNumber/stream

All-in-one television episode streaming resolver. Resolves episode details to obtain internal UUID, handles gate countdown, claims the session, and returns the direct video stream URL (.m3u8), multi-language subtitles (.vtt), quality, runtime duration, and expiration timestamp. Results are cached until expiration.

Path Parameters

Parameter Type Required Description
slug string required Series slug identifier (e.g. american-dad-2005).
seasonNumber number required Target season number (e.g. 1).
episodeNumber number required Target episode number within the season (e.g. 1).
curl -X GET "http://localhost:3000/api/v1/series/american-dad-2005/season/1/episode/1/stream" \
  -H "Accept: application/json"

Browse & Category Endpoints

Unified multi-filter catalog search and dedicated endpoints to list and display movies and TV series by genre, country, release year, streaming network, and language.

GET /api/v1/browse

Search and browse the unified catalog across both movies and TV series. Filter by genre, origin country, release year, streaming network, or original audio language.

Query Parameters

Parameter Type Default Description
genre string - Filter by genre slug (e.g. action, horror, drama).
country string - Filter by origin country code (e.g. KR, JP, US, ID).
year number - Filter by release calendar year (e.g. 2026, 2025).
network string - Filter by streaming network slug (e.g. netflix, hbo, disney-plus).
language string - Filter by original audio language code (e.g. ko, ja, en, id).
sort string latest Sort results: latest, popular, or rating.
page number 1 Pagination page number.
limit number 24 Items per page.
curl -X GET "http://localhost:3000/api/v1/browse?genre=action&sort=popular&page=1&limit=10" \
  -H "Accept: application/json"
GET /api/v1/browse/genres

List all content genres with id, TMDB id, display name, and slug. (Also accessible via alias /api/v1/genres).

curl -X GET "http://localhost:3000/api/v1/browse/genres" \
  -H "Accept: application/json"
GET /api/v1/browse/genres/:slug

Display all movies and TV series under a specific genre classification (e.g. action, horror, comedy, romance). (Also accessible via /api/v1/genres/:slug).

Path Parameters

Parameter Type Required Description
slug string required Target genre slug identifier (e.g. action, horror, drama).
curl -X GET "http://localhost:3000/api/v1/browse/genres/action?page=1&limit=10&sort=popular" \
  -H "Accept: application/json"
GET /api/v1/browse/countries

List all country origin classifications with ISO country code and English country name.

curl -X GET "http://localhost:3000/api/v1/browse/countries" \
  -H "Accept: application/json"
GET /api/v1/browse/countries/:code

Display all movies and TV series originating from a specific country (e.g. KR for Korean Drama / K-Movie, JP for Anime, ID for Indonesia, US for Hollywood).

Path Parameters

Parameter Type Required Description
code string required Two-letter country code (e.g. KR, JP, US, ID).
curl -X GET "http://localhost:3000/api/v1/browse/countries/KR?page=1&limit=10&sort=popular" \
  -H "Accept: application/json"
GET /api/v1/browse/years

List all available release years represented in the streaming library.

curl -X GET "http://localhost:3000/api/v1/browse/years" \
  -H "Accept: application/json"
GET /api/v1/browse/years/:year

Display all movies and TV series released in a specific calendar year (e.g. 2026, 2025, 2024).

Path Parameters

Parameter Type Required Description
year number required Release year (e.g. 2026, 2025).
curl -X GET "http://localhost:3000/api/v1/browse/years/2026?page=1&limit=10&sort=popular" \
  -H "Accept: application/json"
GET /api/v1/browse/networks

List all television broadcast networks and streaming providers (HBO, Netflix, Disney+, Apple TV+, etc.).

curl -X GET "http://localhost:3000/api/v1/browse/networks" \
  -H "Accept: application/json"
GET /api/v1/browse/networks/:slug

Display all TV series and movies produced or distributed by a specific streaming network (e.g. netflix, hbo, disney-plus, apple-tv).

Path Parameters

Parameter Type Required Description
slug string required Streaming network slug (e.g. netflix, hbo, disney-plus).
curl -X GET "http://localhost:3000/api/v1/browse/networks/netflix?page=1&limit=10&sort=popular" \
  -H "Accept: application/json"
GET /api/v1/browse/languages

List all available original audio language classifications in the streaming library.

curl -X GET "http://localhost:3000/api/v1/browse/languages" \
  -H "Accept: application/json"
GET /api/v1/browse/languages/:code

Display all titles available in a specific original audio language (e.g. ko for Korean, ja for Japanese, id for Indonesian, en for English).

Path Parameters

Parameter Type Required Description
code string required Two-letter language code (e.g. ko, ja, id, en).
curl -X GET "http://localhost:3000/api/v1/browse/languages/ko?page=1&limit=10&sort=popular" \
  -H "Accept: application/json"

Franchise & Universe Collections

Access curated cinematic universes (MCU, Star Wars, Harry Potter, Monsterverse).

GET /api/v1/collections

List all curated franchises and universes with posters, banners, and title counts.

curl -X GET "http://localhost:3000/api/v1/collections" \
  -H "Accept: application/json"
GET /api/v1/collections/:slug

Get specific collection structure, chronology sections, phases, and included movie and series titles.

Path Parameters

Parameter Type Required Description
slug string required Collection slug identifier (e.g. marvel-cinematic-universe).
curl -X GET "http://localhost:3000/api/v1/collections/marvel-cinematic-universe" \
  -H "Accept: application/json"

Watch & Stream Endpoints

Proxy playback claims directly to Majorplay streaming backend, bypassing browser CORS restrictions.

POST /api/v1/watch/play

Exchange a playback claim token for direct stream URL (.m3u8), subtitle tracks (.vtt), and expiration timestamp.

Request Body

Field Type Required Description
claim string required Playback session claim token obtained from upstream session claim.
redeemUrl string optional Target redemption URL (defaults to /watch/session/redeem).
curl -X POST "http://localhost:3000/api/v1/watch/play" \
  -H "Content-Type: application/json" \
  -d '{"claim": "YOUR_CLAIM_TOKEN"}'
GET /api/v1/watch/account

Periksa status autentikasi akun IDLIX upstream aktif, paket akun (Regular 1080p), dan masa berlaku token.

curl -X GET "http://localhost:3000/api/v1/watch/account" \
  -H "X-API-Key: YOUR_API_KEY"
POST /api/v1/watch/account/login

Masuk dengan kredensial akun IDLIX kustom untuk membuka resolusi streaming 1080p Full HD secara dinamis.

curl -X POST "http://localhost:3000/api/v1/watch/account/login" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"email":"[email protected]","password":"asyu2424"}'
UNIBOXAPI Documentation - Warm Cream Edition
Ready for integration with React, Vue, Svelte, Next.js, and Mobile apps