Baca API Code Examples Ready-to-use examples for the Baca API -- browse manga, manhwa, manhua, search titles, and read chapters via signed image URLs. 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 Manga GET /api/baca/manga?per_page=5 Send GET /api/baca/manga?sort_by=updated_at&sort_order=desc&per_page=5 Send GET /api/baca/manga/popular?per_page=5 Send GET /api/baca/manga/trending?per_page=5 Send GET /api/baca/manga/alphabet Send GET /api/baca/manga/alphabet?letter=N&per_page=5 Send Browse Manhwa GET /api/baca/manhwa?per_page=5 Send GET /api/baca/manhwa/popular?per_page=5 Send Browse Manhua GET /api/baca/manhua?per_page=5 Send GET /api/baca/manhua/popular?per_page=5 Send Search GET /api/baca/manga/search?q=one+piece&per_page=5 Send GET /api/baca/manhwa/search?q=solo+leveling&per_page=5 Send cURL cURL Examples Copy API_KEY="sk_live_afb4c24ea8c44d30a06c67ecc67a8f85a46a0987c8d899bc" BASE="https://api.splay.id" # -- List manga -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/baca/manga?per_page=20" # -- Sort by latest updated -- curl -H"Authorization: Bearer $API_KEY"\ "$BASE/api/baca/manga?sort_by=updated_at&sort_order=desc&per_page=20" # -- Popular manhwa -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/baca/manhwa/popular" # -- Trending manhua -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/baca/manhua/trending" # -- Browse A-Z (get letter counts) -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/baca/manga/alphabet" # -- Browse letter N -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/baca/manga/alphabet?letter=N" # -- Search -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/baca/manga/search?q=one+piece" # -- Title detail (all chapters + signed image URLs) -- curl -H"Authorization: Bearer $API_KEY""$BASE/api/baca/manga/TITLE_ID" # -- Paginated chapters -- curl -H"Authorization: Bearer $API_KEY"\ "$BASE/api/baca/manga/TITLE_ID/chapters?page=1&per_page=50" # -- Construct image URLs from chapter response -- # content_url = signed chapter directory URL # Append page filename: {content_url}/001.jpg?sig=...&expires=... # The sig and expires from content_url are reused for all images JavaScript / TypeScript Browse & Search Copy const BASE ="https://api.splay.id"; const API_KEY ="sk_live_afb4c24ea8c44d30a06c67ecc67a8f85a46a0987c8d899bc"; const headers = { Authorization: `Bearer ${API_KEY}` }; // -- List manga (paginated) -- const res = await fetch(`${BASE}/api/baca/manga?per_page=20`, { headers }); const { data, meta } = await res.json(); console.log(`${meta.total} titles (page ${meta.page}/${meta.total_pages})`); data.forEach(d => console.log(`[${d.id}] ${d.title}`)); // -- Popular manhwa -- const { data: popular } = await ( await fetch(`${BASE}/api/baca/manhwa/popular`, { headers }) ).json(); // -- Trending manhua -- const { data: trending } = await ( await fetch(`${BASE}/api/baca/manhua/trending`, { headers }) ).json(); // -- Search -- const { data: results, meta: searchMeta } = await ( await fetch(`${BASE}/api/baca/manga/search?q=one+piece`, { headers }) ).json(); console.log(`Found ${searchMeta.total} results`); // -- A-Z Browse -- const { data: letters } = await ( await fetch(`${BASE}/api/baca/manga/alphabet`, { headers }) ).json(); // letters = [{"letter":"A","count": 42 }, ...] Get Detail + Render Chapter Images Copy const BASE ="https://api.splay.id"; const API_KEY ="sk_live_afb4c24ea8c44d30a06c67ecc67a8f85a46a0987c8d899bc"; const headers = { Authorization: `Bearer ${API_KEY}` }; // -- Title detail (title + chapters with signed URLs) -- const res = await fetch(`${BASE}/api/baca/manga/TITLE_ID`, { headers }); const { data: { drama, chapters } } = await res.json(); console.log(`${drama.title} -- ${chapters.length} chapters`); // -- Chapter image URLs -- const chapter = chapters[0]; // content_url = signed chapter directory (HMAC-SHA256, 30min TTL) const chapterUrl = chapter.content_url; const pageCount = chapter.qualities?.pages; const format = chapter.qualities?.format; // "image" console.log(`Chapter 1: ${pageCount} pages (${format})`); // -- Extract sig and expires from the directory URL -- const url = new URL(chapterUrl); const sig = url.searchParams.get("sig"); const expires = url.searchParams.get("expires"); // -- Construct individual page image URLs -- const imageUrls = []; for (let i = 1; i <= pageCount; i++) { const filename = String(i).padStart(3, "0") + ".jpg"; imageUrls.push(`${chapterUrl}/${filename}?sig=${sig}&expires=${expires}`); } // -- Render images in a container -- const container = document.getElementById("reader"); if (container) { imageUrls.forEach((src, i) => { const img = document.createElement("img"); img.src = src; img.alt = `Page ${i + 1}`; img.loading = i < 3 ? "eager" : "lazy"; // lazy-load after first 3 img.style.maxWidth = "100%"; container.appendChild(img); }); } // -- Paginated chapters -- const { data: chapters, meta } = await ( await fetch(`${BASE}/api/baca/manga/TITLE_ID/chapters?page=1&per_page=50`, { headers }) ).json(); console.log(`${meta.total} total chapters, showing ${chapters.length}`); Python Full Example Copy import requests BASE ="https://api.splay.id" API_KEY ="sk_live_afb4c24ea8c44d30a06c67ecc67a8f85a46a0987c8d899bc" headers = {"Authorization": f"Bearer {API_KEY}"} # -- List manga -- res = requests.get(f"{BASE}/api/baca/manga", 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']} chapters)") # -- Popular manhwa -- popular = requests.get(f"{BASE}/api/baca/manhwa/popular", headers=headers) for d in popular.json()["data"][:5]: print(f"Popular: {d['title']}") # -- Search -- search = requests.get(f"{BASE}/api/baca/manga/search", params={ "q":"one piece","per_page": 10 }, headers=headers) results = search.json() print(f"Found {results['meta']['total']} results") # -- Title detail with chapters -- detail = requests.get(f"{BASE}/api/baca/manga/TITLE_ID", headers=headers) info = detail.json()["data"] title_info, chapters = info["drama"], info["chapters"] print(f"\n=== {title_info['title']} ===") print(f"Chapters: {len(chapters)}") # -- Image URLs (signed, 30min TTL) -- ch = chapters[0] chapter_url = ch.get("content_url") # signed directory URL qualities = ch.get("qualities") or {} page_count = qualities.get("pages", 0) img_format = qualities.get("format", "image") print(f"\nChapter 1: {page_count} pages ({img_format})") # -- Extract sig and expires from the directory URL -- from urllib.parse import urlparse, parse_qs parsed = urlparse(chapter_url) params = parse_qs(parsed.query) sig = params.get("sig", [""])[0] expires = params.get("expires", [""])[0] # -- Download all page images -- import os os.makedirs("chapter_1", exist_ok=True) for i in range(1, page_count + 1): filename = f"{i:03d}.jpg" img_url = f"{chapter_url}/{filename}?sig={sig}&expires={expires}" img_data = requests.get(img_url) with open(f"chapter_1/{filename}","wb") as f: f.write(img_data.content) print(f"Downloaded {filename}") print(f"Saved {page_count} images to chapter_1/") Previous Endpoints