WeTV API Code Examples Ready-to-use examples for the WeTV 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/wetv?per_page=5 Send GET /api/wetv?sort_by=updated_at&sort_order=desc&per_page=5 Send GET /api/wetv/popular?per_page=5 Send GET /api/wetv/trending?per_page=5 Send GET /api/wetv/alphabet Send GET /api/wetv/alphabet?letter=L&per_page=5 Send Search GET /api/wetv/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/wetv?per_page=20" # -- Sort by latest updated -- curl -H"Authorization: Bearer $API_KEY"\ "$BASE/api/wetv?sort_by=updated_at&sort_order=desc&per_page=20" # -- Popular dramas -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/wetv/popular" # -- Trending dramas -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/wetv/trending" # -- Browse A-Z (get letter counts) -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/wetv/alphabet" # -- Browse letter L -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/wetv/alphabet?letter=L" # -- Search -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/wetv/search?q=love" # -- Drama detail (all episodes + signed video URLs) -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/wetv/DRAMA_ID" # -- Paginated episodes -- curl -H"Authorization: Bearer $API_KEY"\ "$BASE/api/wetv/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/wetv?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/wetv/popular`, { headers }) ).json(); // -- Trending -- const { data: trending } = await ( await fetch(`${BASE}/api/wetv/trending`, { headers }) ).json(); // -- Search -- const { data: results, meta: searchMeta } = await ( await fetch(`${BASE}/api/wetv/search?q=love`, { headers }) ).json(); console.log(`Found ${searchMeta.total} results`); // -- A-Z Browse -- const { data: letters } = await ( await fetch(`${BASE}/api/wetv/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/wetv/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/wetv/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/wetv", 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/wetv/popular", headers=headers) for d in popular.json()["data"][:5]: print(f"Popular: {d['title']}") # -- Search -- search = requests.get(f"{BASE}/api/wetv/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/wetv/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']}")