API unduhan dan pratinjau media lagu
Deskripsi endpoint
Grup endpoint ini memisahkan "mengambil alamat media" dari "benar-benar mengunduh berkas":
- Untuk mendapatkan alamat yang bisa langsung diputar atau diunduh (misalnya untuk dimasukkan ke pemutar Anda sendiri atau disalin ke penyimpanan objek): gunakan
POST /api/music/download-url, atauGET /api/music/downloadyang sudah ada di respons. - Agar peramban menyimpan berkas ke disk: gunakan
POST /api/music/download-file(satu berkas) atauPOST /api/music/download-all(paket). - Jika lagu masih dibuat dan ingin mendengarkan lebih dulu: gunakan
POST /api/music/generation-stream-url.
Biaya: Semuanya gratis. Unduhan dan pratinjau hanya membaca media yang sudah dihosting platform; tidak memanggil Suno dan tidak dikenai biaya.
Model yang disarankan: suno-v6. Tersedia suno-v6, suno-v6-wild, dan suno-v6-mini.
Autentikasi
| Parameter | Tipe | Wajib | Catatan |
|---|---|---|---|
| Authorization | string | ya | Bearer YOUR_API_KEY (GET /api/music/download juga menerima sesi login) |
| Content-Type | string | ya | application/json |
Tipe media yang didukung (kind)
| kind | Catatan |
|---|---|
song |
Audio (mp3 adalah aliasnya dan nilai default; di respons selalu ditulis kembali sebagai song) |
wav |
Berkas WAV; siapkan dulu dengan API pembuatan/pengambilan WAV |
video |
Video (mp4 adalah alias) |
midi |
MIDI per stem; hanya berlaku untuk stem yang pemisahannya sudah selesai — lihat API pengambilan MIDI |
cover |
Gambar sampul (image adalah alias) |
lyrics |
Teks lirik (.txt); hanya bisa diambil dengan download-file / GET /api/music/download — download-url tidak mengembalikan alamat lirik |
timestamped_lyrics |
Berkas lirik bertimestamp (.lrc, alias lrc). Saat ini hanya sebagian lagu yang didukung; bila mengembalikan success:false, gunakan API lirik bertimestamp untuk mengambil timeline lalu buat berkasnya sendiri |
1) Mendapatkan alamat media
curl -X POST https://www.suno-api.io/api/music/download-url \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"song_id": "song_id", "kind": "song"}'
{
"code": 200,
"message": "success",
"data": {
"song_id": "song_id",
"kind": "song",
"url": "https://media.suno-api.io/assets/song_id-mp3.mp3",
"nav_url": "https://media.suno-api.io/assets/song_id-mp3.mp3?...&response-content-disposition=attachment..."
}
}
| Parameter | Tipe | Wajib | Catatan |
|---|---|---|---|
| song_id | string | ya | ID lagu milik Anda sendiri |
| kind | string | tidak | Lihat tabel di atas; default song |
| refresh | boolean | tidak | Mengirim true memaksa sumber daya disiapkan ulang (misalnya setelah berkas di CDN ditarik kembali) |
url dipakai untuk memutar atau menyalin sendiri; nav_url membawa Content-Disposition: attachment
sehingga cocok ditempel langsung ke bilah alamat peramban untuk mengunduh (dipakai saat sebagian peramban seluler tidak mendukung unduhan blob).
⚠️ Masa berlaku alamat: 7 hari — segera salin berkasnya
url/nav_urlmenunjuk ke penyimpanan objek platform dan kedaluwarsa setelah 7 hari secara default (berkas ditarik kembali dan alamat lama mengembalikan 404). Salin berkasnya ke penyimpanan Anda sendiri dalam 7 hari itu.Setelah kedaluwarsa tidak perlu membuat ulang lagunya: panggil
POST /api/music/download-urllagi (atau kirimrefresh: true) untuk mendapatkan alamat baru yang valid bagi lagu tersebut. Grup endpoint ini gratis dan tidak menambah biaya.
2) Mengunduh satu berkas langsung
curl -X POST https://www.suno-api.io/api/music/download-file \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"song_id": "song_id", "kind": "song"}' \
-o song.mp3
Isi respons adalah aliran berkas (bukan JSON) dan Content-Disposition sudah memuat nama berkasnya.
Lirik dan lirik bertimestamp hanya bisa diambil lewat endpoint ini (download-url hanya mengembalikan alamat media, bukan lirik).
Berkas .lrc saat ini hanya didukung untuk sebagian lagu; bila mengembalikan success:false, buat .lrc sendiri dengan
API lirik bertimestamp seperti pada bagian berikut, jangan coba ulang.
Cara mendapatkan lirik bertimestamp (.lrc)
Disarankan dua langkah, berlaku untuk lagu apa pun:
Langkah 1: ambil timeline per kata (gratis)
curl -X POST https://www.suno-api.io/api/lyrics/timeline \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "suno-v6", "song_id": "song_id"}'
Hasilnya langsung berupa array (tanpa pembungkus data); setiap elemen berbentuk
{"word": "…", "start_s": 1.117, "end_s": 8.138, "success": true, "p_align": 0.99}.
word sudah memuat baris baru sehingga bisa dipisah per baris; untuk arti setiap kolom, penyaringan bagian instrumental, dan catatan lain, lihat
"Kolom" dan "Catatan penggunaan" pada API lirik bertimestamp.
Langkah 2: susun .lrc sendiri dari start_s (format waktu [mm:ss.cc])
def to_lrc(segments):
lines = []
for seg in segments:
text = seg["word"].strip()
if not text:
continue
start = max(0.0, float(seg["start_s"]))
cs = int(start * 100 + 0.5)
lines.append(f"[{cs // 6000:02d}:{(cs % 6000) // 100:02d}.{cs % 100:02d}]{text}")
return "\n".join(lines)
GET /api/music/download?song_id=<id>&kind=lrc juga mengunduh .lrc buatan server secara langsung,
tetapi saat ini hanya sebagian lagu yang didukung: bila mengembalikan success:false, buat sendiri seperti di atas —
tidak perlu mencoba ulang dan tidak memengaruhi penagihan.
3) Unduhan paket
curl -X POST https://www.suno-api.io/api/music/download-all \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"song_ids": ["song_id_1", "song_id_2"]}' \
-o songs.zip
Gunakan song_id (satu) atau song_ids (banyak, maksimal 50 item). Isi respons adalah aliran ZIP.
4) Alamat unduhan stabil
GET /api/music/download?song_id=<id>&kind=<kind> adalah pintu unduhan yang diberikan langsung pada respons lagu.
Ia menerima kunci API maupun sesi login, berperilaku sama seperti download-file, dan cocok ditulis tetap di klien atau pemutar pihak ketiga.
5) Pratinjau saat pembuatan
curl -X POST https://www.suno-api.io/api/music/generation-stream-url \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"song_ids": ["song_id_1", "song_id_2"]}'
{
"code": 200,
"message": "success",
"data": {
"items": [
{
"song_id": "song_id_1",
"url": "https://media.suno-api.io/assets/song_id_1-mp3.mp3",
"expires_at": 0,
"content_type": "audio/mpeg",
"playable_until_completed": false,
"mode": "mp3",
"ranges": true
}
]
}
}
| Parameter | Tipe | Wajib | Catatan |
|---|---|---|---|
| song_id | string | tidak | Satu ID lagu |
| song_ids | string[] | tidak | Banyak, maksimal 24 item (batas jumlah stem dalam satu batch pemisahan otomatis) |
playable_until_completed bernilai true berarti ini alamat pratinjau sementara untuk lagu yang sedang dibuat; setelah lagu selesai, beralihlah ke alamat permanen.
Jika satu lagu gagal, item itu membawa kolom error dan lagu lain tetap dikembalikan seperti biasa.
Catatan
- Semua endpoint hanya mengembalikan alamat media yang dihosting platform; tidak pernah mengembalikan sumber terenkripsi Suno atau alamat bertanda tangan sementara.
- Alamat tidak permanen — salin sendiri berkasnya jika perlu disimpan lama; gunakan
download-filebila Anda butuh berkas aslinya di disk. - MIDI sebuah stem menuntut pemisahan stem tersebut sudah selesai, jika tidak akan dikembalikan galat.
Dapatkan kunci API
Buat kunci API di konsol setelah mendaftar. Setiap pembuatan berbiaya 0,6 ¥ dan menghasilkan 2 lagu, unduhan tidak terbatas, dan nomor telepon tidak diperlukan.
Ambil kunci API Kembali ke ringkasan