← Kembali ke Music API

Chioriya Music API V10.6.1

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 320kbps

Auth

Tidak membutuhkan API key. Semua action music public dan tidak memotong limit panel.

action=session tetap ada hanya untuk kompatibilitas client lama.

Cara Kerja (Arsitektur V10)

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.

Config Opsional (env)

YTMUSIC_COOKIEprocess.env
Cookie login music.youtube.com (SAPISID). Disarankan — membuat resolusi stream YouTube paling stabil via SAPISIDHASH auth.
YTMUSIC_PO_TOKEN + YTMUSIC_VISITOR_DATAprocess.env
Opsional. Sejak V10.6.1 pasangan ini di-generate otomatis di server (mode auto) — set env hanya untuk mode manual.

Catatan: 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.

Endpoint

SearchGET /api/music?action=search&q=...&filter=songs|videos|albums|artists|playlists|all
Full filter katalog YouTube Music. module=all menambahkan hasil JioSaavn.
SuggestionsGET /api/music?action=suggestions&q=...
Autocomplete query + rekomendasi track.
PlayGET /api/music?action=play&q=...&quality=HIGH|MEDium|LOW&lyrics=1
Search + resolve stream lagu pertama. lyrics=1 menyertakan lirik dalam response.
StreamGET /api/music?action=stream&id=VIDEO_ID
Resolve videoId → URL audio. Otomatis fallback JioSaavn bila YouTube gagal.
LyricsGET /api/music?action=lyrics&id=VIDEO_ID atau &q=judul&artist=...&format=lrc
Lirik sinkron LRC + plain. format=lrc|text untuk output teks.
Next / RadioGET /api/music?action=next&id=VIDEO_ID
Antrian radio/related dari sebuah track.
AlbumGET /api/music?action=album&id=MPREb_xxx
Detail album + daftar track. ID dari search filter albums.
ArtistGET /api/music?action=artist&id=UCxxx
Profil artist + lagu teratas. ID dari search filter artists.
PlaylistGET /api/music?action=playlist&id=PLxxx
Detail playlist + semua track.
ModulesGET /api/music?action=modules
Daftar engine aktif: ytmusic (default) + jiosaavn.
Audio ProxyGET /api/music/audio?t=...
Proxy/download audio dari signed token (support Range). Tambahkan &download=1.
HealthGET /api/music?action=health
Status engine, config cookie/potoken, daftar endpoint.

Contoh Cepat

# 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"

Format Response Track

{
  "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).

Legacy (tetap dipertahankan)

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).

V10.6.1 — poToken otomatis (fix 403 tanpa env)

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).

Disclaimer

API ini untuk penggunaan pribadi dan edukasi. Tidak berafiliasi dengan YouTube, Google, JioSaavn, atau LRCLIB. Gunakan dengan bijak.