HuaPlay Open API
Bawa katalog drama, daftar episode, dan link streaming HuaPlay ke aplikasi, bot Telegram, atau website Anda sendiri — cukup satu kunci API.
https://huaplay.com/api/v1
Mulai dalam 3 langkah
API hanya bisa dipakai akun dengan VIP aktif.
Di halaman Developer. Kunci tampil sekali — simpan baik-baik.
Kirim kunci di header Authorization, terima JSON.
curl "https://huaplay.com/api/v1/dramas?sort=popular&per_page=5" \
-H "Authorization: Bearer hp_live_KUNCI_ANDA"
Autentikasi
Setiap permintaan wajib membawa kunci API. Cara yang disarankan adalah header Authorization:
Authorization: Bearer hp_live_KUNCI_ANDA
- Alternatif: header
X-API-Key: hp_live_KUNCI_ANDA, atau parameter?api_key=(hanya untuk uji coba — kunci bisa tercatat di log/riwayat). - Kunci terikat ke akun Anda. Bila masa VIP habis, kunci menolak permintaan (
vip_required) dan otomatis aktif lagi setelah VIP diperpanjang. - Jangan taruh kunci di aplikasi/website publik yang kodenya bisa dilihat orang. Panggil API dari server Anda, lalu teruskan hasilnya.
- Kunci bocor? Cabut di halaman Developer dan buat yang baru.
- CORS diizinkan, jadi API juga bisa dipanggil langsung dari JavaScript browser.
Batas & kuota
Batas dihitung per akun (gabungan semua kunci). Setiap respons membawa header berikut agar aplikasi Anda bisa mengatur kecepatan:
| Header | Arti |
|---|---|
X-RateLimit-Limit | Batas permintaan per menit. |
X-RateLimit-Remaining | Sisa permintaan di menit ini. |
X-RateLimit-Reset | Waktu reset (Unix timestamp). |
X-Quota-Remaining | Sisa kuota hari ini (reset 00:00). |
Retry-After | Saat ditolak 429: tunggu sekian detik. |
Format respons
Semua respons berupa JSON UTF-8 dengan bentuk yang sama. Cek success lebih dulu.
{
"success": true,
"data": [
"…"
],
"meta": {
"page": 1,
"has_more": true
}
}{
"success": false,
"error": {
"code": "vip_required",
"message": "Open API khusus member VIP."
}
}Kode error
| HTTP | error.code | Arti |
|---|---|---|
| 400 | bad_request | Parameter tidak valid (mis. q terlalu pendek). |
| 401 | unauthorized | Kunci API tidak dikirim, salah, atau sudah dicabut. |
| 403 | vip_required | Pemilik kunci bukan VIP aktif (masa VIP habis). Perpanjang VIP, kunci otomatis aktif lagi. |
| 403 | feature_disabled | Fitur dimatikan admin (mis. endpoint streaming). |
| 404 | not_found | Drama / episode tidak ditemukan. |
| 429 | rate_limited | Terlalu banyak permintaan per menit. Tunggu sesuai header Retry-After. |
| 429 | quota_exceeded | Kuota harian habis. Reset pukul 00:00 WIB. |
| 502 | upstream_error | Sumber video sedang bermasalah. Coba lagi beberapa saat. |
| 503 | api_disabled | Open API sedang dinonaktifkan admin. |
/me
Info akun & kuota
Status VIP pemilik kunci, batas per menit, dan sisa kuota harian. Cocok untuk mengecek kunci sebelum dipakai.
curl "https://huaplay.com/api/v1/me" \
-H "Authorization: Bearer hp_live_KUNCI_ANDA"
{
"success": true,
"data": {
"user": {
"id": 7,
"name": "Budi",
"vip": true,
"vip_until": "2026-12-31T23:59:59+07:00"
},
"key": {
"name": "Bot Telegram",
"masked": "hp_live_3f9a…c21e",
"created_at": "2026-11-01T09:00:00+07:00"
},
"limits": {
"per_minute": 60,
"daily_quota": 5000,
"used_today": 132,
"remaining_today": 4868
}
}
}
/providers
Daftar sumber (provider)
Provider yang sedang aktif beserta jumlah drama di katalog. Pakai nilai id untuk filter provider di endpoint lain.
curl "https://huaplay.com/api/v1/providers" \
-H "Authorization: Bearer hp_live_KUNCI_ANDA"
{
"success": true,
"data": [
{
"id": "dramabox",
"dramas": 1840
},
{
"id": "reelshort",
"dramas": 1215
}
]
}
/dramas
Daftar drama
Katalog drama dengan paginasi, bisa difilter per provider, diurutkan, dan dicari berdasarkan judul.
| Parameter | Tipe | Keterangan |
|---|---|---|
provider
opsional · query |
string | ID provider, atau all (bawaan). |
sort
opsional · query |
string | Urutan: latest (bawaan, mengikuti urutan sumber), popular (paling banyak ditonton), new (baru masuk katalog). |
q
opsional · query |
string | Cari judul (min. 2 karakter). |
page
opsional · query |
integer | Halaman, mulai dari 1. |
per_page
opsional · query |
integer | Jumlah per halaman, 1–50 (bawaan 20). |
curl "https://huaplay.com/api/v1/dramas?provider=all" \
-H "Authorization: Bearer hp_live_KUNCI_ANDA"
{
"success": true,
"data": [
{
"id": 1024,
"provider": "dramabox",
"title": "Cinta Sang CEO Dingin",
"poster": "https://cdn.example.com/poster/1024.jpg",
"synopsis": "Seorang gadis biasa terjebak kontrak pernikahan dengan CEO paling dingin di kota…",
"total_episodes": 80,
"views": 15230,
"url": "https://huaplay.example/drama/1024",
"updated_at": "2026-11-04T10:15:00+07:00"
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 3055,
"total_pages": 153,
"has_more": true
}
}
/search
Cari langsung ke provider
Pencarian real-time ke sumber (bukan hanya katalog lokal). Hasil otomatis tersimpan ke katalog sehingga punya id yang bisa dipakai di endpoint detail.
| Parameter | Tipe | Keterangan |
|---|---|---|
q
wajib · query |
string | Kata kunci, min. 2 karakter. |
provider
wajib · query |
string | ID provider (lihat /providers). |
curl "https://huaplay.com/api/v1/search?q=cinta&provider=dramabox" \
-H "Authorization: Bearer hp_live_KUNCI_ANDA"
{
"success": true,
"data": [
{
"id": 1024,
"provider": "dramabox",
"title": "Cinta Sang CEO Dingin",
"poster": "https://cdn.example.com/poster/1024.jpg",
"synopsis": "Seorang gadis biasa terjebak kontrak pernikahan dengan CEO paling dingin di kota…",
"total_episodes": 80,
"views": 15230,
"url": "https://huaplay.example/drama/1024",
"updated_at": "2026-11-04T10:15:00+07:00"
}
],
"meta": {
"provider": "dramabox",
"q": "cinta",
"count": 1
}
}
/dramas/{id}
Detail drama + daftar episode
Info lengkap satu drama dan semua episodenya. Daftar episode disinkronkan otomatis dari sumber bila belum ada.
| Parameter | Tipe | Keterangan |
|---|---|---|
id
wajib · path |
integer | ID drama. |
curl "https://huaplay.com/api/v1/dramas/1024" \
-H "Authorization: Bearer hp_live_KUNCI_ANDA"
{
"success": true,
"data": {
"id": 1024,
"provider": "dramabox",
"title": "Cinta Sang CEO Dingin",
"poster": "https://cdn.example.com/poster/1024.jpg",
"synopsis": "Seorang gadis biasa terjebak kontrak pernikahan dengan CEO paling dingin di kota…",
"total_episodes": 80,
"views": 15230,
"url": "https://huaplay.example/drama/1024",
"updated_at": "2026-11-04T10:15:00+07:00",
"episodes": [
{
"number": 1,
"title": "Episode 1",
"is_free": true,
"url": "https://huaplay.example/watch/1024/1"
},
{
"number": 2,
"title": "Episode 2",
"is_free": false,
"url": "https://huaplay.example/watch/1024/2"
}
]
}
}
/dramas/{id}/episodes/{number}
Link streaming episode
URL video siap putar beserta pilihan resolusi dan subtitle. type: hls (m3u8, pakai hls.js / ExoPlayer / AVPlayer), file (MP4 langsung), atau melolo (MP4 terenkripsi, butuh key). URL bisa kedaluwarsa — minta ulang bila gagal diputar, jangan disimpan permanen.
| Parameter | Tipe | Keterangan |
|---|---|---|
id
wajib · path |
integer | ID drama. |
number
wajib · path |
integer | Nomor episode (mulai 1). |
curl "https://huaplay.com/api/v1/dramas/1024/episodes/1" \
-H "Authorization: Bearer hp_live_KUNCI_ANDA"
{
"success": true,
"data": {
"drama_id": 1024,
"episode": 1,
"title": "Episode 1",
"type": "hls",
"url": "https://huaplay.example/api/hls?u=…&s=…",
"resolutions": [
{
"label": "720p",
"url": "https://huaplay.example/api/hls?u=…&s=…",
"type": "hls"
},
{
"label": "480p",
"url": "https://…",
"type": "hls"
}
],
"subtitles": [
{
"lang": "id",
"label": "Indonesia",
"url": "https://…/ep1.vtt",
"default": true
}
],
"next": {
"number": 2
}
}
}
Contoh: putar episode di website Anda
Ambil link dari server Anda (agar kunci tidak terlihat), lalu putar dengan hls.js. Untuk Android gunakan ExoPlayer/Media3, untuk iOS cukup AVPlayer.
<?php
// Proxy kecil di server Anda: /episode.php?id=1024&ep=1
$apiKey = getenv('HUAPLAY_API_KEY');
$url = "https://huaplay.com/api/v1/dramas/" . (int) $_GET['id'] . "/episodes/" . (int) $_GET['ep'];
$ch = curl_init($url);
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["Authorization: Bearer $apiKey"]]);
header('Content-Type: application/json');
echo curl_exec($ch);