Music API pribadi (edukasi) dengan engine native YouTube Music — search, play, stream, lirik sinkron, radio, album, artist, playlist. Tanpa API key, tanpa cost.
Base: https://api.chioriya.my.id Public · Tanpa API Key Cost: 0 Native InnerTube Engine Lyrics LRCLIB Fallback JioSaavn 320kbpsTidak membutuhkan API key. Semua action music public dan tidak memotong limit panel.
action=session tetap ada hanya untuk kompatibilitas client lama.
Engine utama adalah native InnerTube client (api internal YouTube Music — sama yang dipakai web music.youtube.com), tanpa dependensi katalog eksternal:
search/suggestions/browse/radio → POST music.youtube.com/youtubei/v1/search|browse|next
stream → POST /player (rotasi client: WEB_REMIX+cookie → ANDROID_VR → IOS →
ANDROID_MUSIC → TVHTML5) → URL audio googlevideo (expired ±6 jam)
lirik → LRCLIB (sinkron LRC + plain) → fallback transcript YouTube
fallback stream → JioSaavn 320kbps (decrypt DES pure-JS) — otomatis bila YouTube
memblokir IP server ("Sign in to confirm you're not a bot")
Engine 8SPINE sudah dihapus sejak V10.3.0 (tidak berkerja lagi). Sekarang hanya native YouTube Music + fallback JioSaavn. Parameter module lama dialihkan mulus ke engine native.
process.envprocess.envCatatan: URL googlevideo terikat IP server yang me-resolve — direct dari browser pasti gagal. Selalu putar memakai playUrl/proxyAudioUrl: proxy me-resolve ulang stream di invocation yang sama sebelum fetch (aman serverless/Vercel), support Range + download, dan otomatis re-resolve bila upstream 403/410.
GET /api/music?action=search&q=...&filter=songs|videos|albums|artists|playlists|allmodule=all menambahkan hasil JioSaavn.GET /api/music?action=suggestions&q=...GET /api/music?action=play&q=...&quality=HIGH|MEDium|LOW&lyrics=1lyrics=1 menyertakan lirik dalam response.GET /api/music?action=stream&id=VIDEO_IDGET /api/music?action=lyrics&id=VIDEO_ID atau &q=judul&artist=...&format=lrcformat=lrc|text untuk output teks.GET /api/music?action=next&id=VIDEO_IDGET /api/music?action=album&id=MPREb_xxxGET /api/music?action=artist&id=UCxxxGET /api/music?action=playlist&id=PLxxxGET /api/music?action=modulesGET /api/music/audio?t=...&download=1.GET /api/music?action=health# search lagu curl "https://api.chioriya.my.id/api/music?action=search&q=Brave%20Shine%20Aimer&filter=songs" # play langsung + lirik curl "https://api.chioriya.my.id/api/music?action=play&q=Brave%20Shine%20Aimer&lyrics=1" # resolve stream dari videoId curl "https://api.chioriya.my.id/api/music?action=stream&id=XeI8E20ZUE4" # lirik LRC murni (text/plain) curl "https://api.chioriya.my.id/api/music?action=lyrics&id=XeI8E20ZUE4&format=lrc" # radio dari sebuah lagu curl "https://api.chioriya.my.id/api/music?action=next&id=XeI8E20ZUE4"
{
"id": "hvVN2i6o4A4",
"videoId": "hvVN2i6o4A4",
"title": "Brave Shine",
"artist": "Aimer",
"album": "",
"duration": 234,
"durationText": "3:54",
"artwork": "https://yt3.googleusercontent.com/...",
"isVideo": false,
"url": "https://music.youtube.com/watch?v=hvVN2i6o4A4",
"module": { "id": "ytmusic", "name": "YouTube Music (native)", "version": "10.0.0" },
"streamEndpoint": "https://api.chioriya.my.id/api/music?action=stream&module=ytmusic&id=hvVN2i6o4A4",
"lyricsEndpoint": "https://api.chioriya.my.id/api/music?action=lyrics&id=hvVN2i6o4A4"
}
Response play/stream menyertakan: playUrl (proxy server — pakai ini untuk playback), proxyAudioUrl (alias playUrl), audioUrl/directAudioUrl (URL googlevideo mentah, hanya referensi), downloadUrl, mimeType, bitrate, audioQuality, expiresAt, resolvedBy, dan source (engine yang berhasil: ytmusic / jiosaavn-fallback).
action=data (playlist panel), action=lrc&url=... (LRC panel), action=session, dan action=audio tetap berkerja seperti V9. Sejak V10.5.0 proxy audio re-resolve stream di invocation yang sama; sejak V10.6.0 bila googlevideo tetap menolak (403) endpoint audio otomatis memutar lagu yang sama dari JioSaavn (header X-Music-Source: jiosaavn-fallback).
403 saat playback bukan masalah cookie — GVS (googlevideo) menuntut poToken BotGuard yang ter-pair dengan visitorData untuk fetch dari IP datacenter. Sejak V10.6.1 server membuat pasangan poToken+visitorData sendiri otomatis (challenge BotGuard dijalankan di server, TTL ±6 jam, refresh otomatis) — tanpa env, tanpa Termux, tanpa browser. Cek status: action=health → po_token_check.mode = auto / manual-env + cached/ttlMinutesLeft.
Mode manual masih didukung: jalankan node gen-pot.mjs (Termux/PC, ada di paket) → copy 2 nilai tercetak ke env YTMUSIC_PO_TOKEN + YTMUSIC_VISITOR_DATA → redeploy. Bila env diset, mode manual aktif dan auto tidak berjalan. Tanpa poToken pun playback tetap jalan via fallback otomatis JioSaavn 320kbps (matching ketat judul+artis+durasi, tidak memutar lagu salah).
API ini untuk penggunaan pribadi dan edukasi. Tidak berafiliasi dengan YouTube, Google, JioSaavn, atau LRCLIB. Gunakan dengan bijak.