iQIYI API Code Examples Ready-to-use examples for the iQIYI API — browse dramas, search, video playback, and subtitle handling. Your API Key Active Paste your API key to authenticate the "Try" buttons and inject it into code examples.Get your key → sk_live_afb4c24ea8c44d30a06c67ecc67a8f85a46a0987c8d899bc Save Clear Try It Live Browse Content GET /api/iqiyi?per_page=5 Send GET /api/iqiyi?sort_by=updated_at&sort_order=desc&per_page=5 Send GET /api/iqiyi/popular?per_page=5 Send GET /api/iqiyi/trending?per_page=5 Send GET /api/iqiyi/alphabet Send GET /api/iqiyi/alphabet?letter=L&per_page=5 Send Search GET /api/iqiyi/search?q=love&per_page=5 Send cURL cURL Examples Copy API_KEY="sk_live_afb4c24ea8c44d30a06c67ecc67a8f85a46a0987c8d899bc" BASE="https://api.splay.id" # ── List dramas ── curl -H"Authorization: Bearer $API_KEY""$BASE/api/iqiyi?per_page=20" # ── Sort by latest updated ── curl -H"Authorization: Bearer $API_KEY"\ "$BASE/api/iqiyi?sort_by=updated_at&sort_order=desc&per_page=20" # ── Popular dramas ── curl -H"Authorization: Bearer $API_KEY""$BASE/api/iqiyi/popular" # ── Trending dramas ── curl -H"Authorization: Bearer $API_KEY""$BASE/api/iqiyi/trending" # ── Browse A-Z (get letter counts) ── curl -H"Authorization: Bearer $API_KEY""$BASE/api/iqiyi/alphabet" # ── Browse letter L ── curl -H"Authorization: Bearer $API_KEY""$BASE/api/iqiyi/alphabet?letter=L" # ── Search ── curl -H"Authorization: Bearer $API_KEY""$BASE/api/iqiyi/search?q=love" # ── Drama detail (all episodes + signed video URLs) ── curl -H"Authorization: Bearer $API_KEY""$BASE/api/iqiyi/DRAMA_ID" # ── Paginated episodes ── curl -H"Authorization: Bearer $API_KEY"\ "$BASE/api/iqiyi/DRAMA_ID/episodes?page=1&per_page=50" JavaScript / TypeScript Browse & Search Copy const BASE ="https://api.splay.id"; const API_KEY ="sk_live_afb4c24ea8c44d30a06c67ecc67a8f85a46a0987c8d899bc"; const headers = { Authorization: `Bearer ${API_KEY}` }; // ── List dramas (paginated) ── const res = await fetch(`${BASE}/api/iqiyi?per_page=20`, { headers }); const { data, meta } = await res.json(); console.log(`${meta.total} dramas (page ${meta.page}/${meta.total_pages})`); data.forEach(d => console.log(`[${d.id}] ${d.title}`)); // ── Popular ── const { data: popular } = await ( await fetch(`${BASE}/api/iqiyi/popular`, { headers }) ).json(); // ── Trending ── const { data: trending } = await ( await fetch(`${BASE}/api/iqiyi/trending`, { headers }) ).json(); // ── Search ── const { data: results, meta: searchMeta } = await ( await fetch(`${BASE}/api/iqiyi/search?q=love`, { headers }) ).json(); console.log(`Found ${searchMeta.total} results`); // ── A-Z Browse ── const { data: letters } = await ( await fetch(`${BASE}/api/iqiyi/alphabet`, { headers }) ).json(); // letters = [{"letter":"A","count": 42 }, ...] Get Detail + Play Video Copy const BASE ="https://api.splay.id"; const API_KEY ="sk_live_afb4c24ea8c44d30a06c67ecc67a8f85a46a0987c8d899bc"; const headers = { Authorization: `Bearer ${API_KEY}` }; // ── Drama detail (drama + episodes with signed URLs) ── const res = await fetch(`${BASE}/api/iqiyi/DRAMA_ID`, { headers }); const { data: { drama, episodes } } = await res.json(); console.log(`${drama.title} — ${episodes.length} episodes`); // ── Video URLs ── const ep = episodes[0]; // video_url = primary, signed HMAC-SHA256 console.log("Primary:", ep.video_url); // qualities = all resolutions as JSON object console.log("240p:", ep.qualities?.["240p"]); console.log("360p:", ep.qualities?.["360p"]); console.log("480p:", ep.qualities?.["480p"]); console.log("720p:", ep.qualities?.["720p"]); console.log("1080p:", ep.qualities?.["1080p"]); // ── Pick best available quality ── const videoUrl = ep.qualities?.["1080p"] ?? ep.qualities?.["720p"] ?? ep.video_url ?? ep.qualities?.["480p"] ?? ep.qualities?.["360p"] ?? ep.qualities?.["240p"]; const video = document.querySelector("video"); if (video && videoUrl) { video.src = videoUrl; // direct MP4 — no HLS library needed video.play(); } // ── Subtitles (signed SRT URLs) ── for (const sub of ep.subtitles ?? []) { console.log(`[${sub.lang}] ${sub.label}: ${sub.url}`); } // ── Paginated episodes ── const { data: eps, meta } = await ( await fetch(`${BASE}/api/iqiyi/DRAMA_ID/episodes?page=1&per_page=50`, { headers }) ).json(); console.log(`${meta.total} total episodes, showing ${eps.length}`); Python Full Example Copy import requests BASE ="https://api.splay.id" API_KEY ="sk_live_afb4c24ea8c44d30a06c67ecc67a8f85a46a0987c8d899bc" headers = {"Authorization": f"Bearer {API_KEY}"} # ── List dramas ── res = requests.get(f"{BASE}/api/iqiyi", params={ "per_page": 20,"sort_by":"updated_at","sort_order":"desc" }, headers=headers) for d in res.json()["data"]: print(f"[{d['id']}] {d['title']} ({d['chapter_count']} eps)") # ── Popular dramas ── popular = requests.get(f"{BASE}/api/iqiyi/popular", headers=headers) for d in popular.json()["data"][:5]: print(f"Popular: {d['title']}") # ── Search ── search = requests.get(f"{BASE}/api/iqiyi/search", params={ "q":"love","per_page": 10 }, headers=headers) results = search.json() print(f"Found {results['meta']['total']} results") # ── Drama detail with episodes ── detail = requests.get(f"{BASE}/api/iqiyi/DRAMA_ID", headers=headers) info = detail.json()["data"] drama, episodes = info["drama"], info["episodes"] print(f"\n=== {drama['title']} ===") print(f"Episodes: {len(episodes)}") # ── Video URLs (signed MP4, 1h TTL) ── ep = episodes[0] qualities = ep.get("qualities") or {} video_url = ( qualities.get("1080p") or qualities.get("720p") or ep.get("video_url") or qualities.get("480p") or qualities.get("360p") or qualities.get("240p") ) print(f"\nBest video URL: {video_url}") # ── Subtitles ── for sub in ep.get("subtitles", []): print(f"[{sub['lang']}] {sub['label']}: {sub['url']}")