API kueri lagu dan riwayat

Diperbarui 2026-09-18 · tim Suno-API

Halaman ini mencakup tiga endpoint kueri gratis:

Kemampuan Method Endpoint
Kueri status dan hasil satu lagu POST /api/music/query
Kueri lagu yang sudah dibuat akun saat ini GET /api/music/songs
Kueri parameter yang disimpan saat lagu dibuat GET /api/music/songs/:song_id

Jika Anda memakai mode tanda terima penerimaan (accept_mode=async) pada endpoint pembuatan, yang Anda pegang adalah nomor tanda terima, bukan ID lagu. Pantau kemajuannya dengan GET /api/music/requests/{request_id} lalu kembali ke endpoint di halaman ini setelah mendapat song_id asli. Lihat "Mode tanda terima penerimaan" di API pembuatan mode sederhana.

Autentikasi dan cakupan data

Ketiga endpoint memakai kunci API yang sama:

Authorization: Bearer YOUR_API_KEY

Riwayat lagu dipisahkan berdasarkan user_id pemilik kunci API. Beberapa kunci yang dibuat di bawah akun utama yang sama dapat membaca riwayat akun itu, tetapi tidak dapat membaca lagu pengguna lain atau akun subsitus lain.

Endpoint riwayat hanya mengembalikan lagu yang benar-benar dibuat. Tidak termasuk:


1. Kueri status pembuatan

Mencari status saat ini dan hasil akhir dari satu atau beberapa ID lagu.

Endpoint: POST /api/music/query

Biaya: Gratis.

Headers

Parameter Tipe Wajib Catatan
Authorization string ya Bearer YOUR_API_KEY
Content-Type string ya application/json

Parameter body

Parameter Tipe Wajib Default Catatan
model string tidak suno-v6 Versi model
song_ids string ya - ID lagu, dipisahkan koma

Contoh permintaan

curl -X POST https://www.suno-api.io/api/music/query \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-v6",
    "song_ids": "clip_id_1,clip_id_2"
  }'

Contoh respons

[
  {
    "song_id": "clip_id_1",
    "song_title": "Judul lagu",
    "status": "completed",
    "audio_url": "https://example.com/audio.mp3",
    "video_url": "https://example.com/video.mp4",
    "cover_url": "https://example.com/cover.jpg",
    "lyrics": "Teks lirik",
    "style_tags": "Mandopop, acoustic",
    "duration": 180.5,
    "model_version": "suno-v6",
    "created_at": "2026-05-21T10:00:00Z"
  }
]

Catatan kompatibilitas

Dokumentasi lama mungkin menampilkan song_ids sebagai array. Kini disarankan string yang dipisahkan koma, sesuai cara endpoint ini sebenarnya dipanggil.

song_ids harus berisi ID lagu asli. ID placeholder yang diawali pending: bukan song_id final dan tidak bisa dipakai di sini; mengueri hanya ID placeholder bisa mengembalikan array kosong [].

model, model_version, atau model_name platform pada respons bisa menyimpan nilai historis. Tugas baru sebaiknya memakai suno-v6, suno-v6-wild, atau suno-v6-mini; dari suno-v2 sampai suno-v5-5 sudah dihentikan, dan melihat nama itu di riwayat bukan berarti modelnya masih bisa dikirim.

Selama tugas berstatus pending, submitted, atau processing, audio_url, video_url, dan cover_url bisa kosong — itu normal untuk tugas yang belum selesai. Jangan menyimpulkan gagal hanya karena alamat kosong; gunakan status dan kueri lagi setelah statusnya selesai. Hanya jika status sudah selesai tetapi alamat tetap kosong, sebaiknya menghubungi dukungan dengan menyertakan song_id.

⚠️ Alamat audio hanya bertahan 7 hari — pindahkan berkas Anda tepat waktu

audio_url, video_url (dan alamat media lain seperti WAV) yang dikembalikan di sini dilayani dari penyimpanan objek platform dan kedaluwarsa setelah 7 hari secara default: berkas didaur ulang dan alamat lama mengembalikan 404.

  • Dalam 7 hari itu, pindahkan berkas ke penyimpanan Anda sendiri; jangan anggap alamat ini sebagai tautan berumur panjang.
  • Alamat yang kedaluwarsa tidak perlu membuat ulang lagu dan tidak dikenai biaya lagi: panggil lagi endpoint ini (POST /api/music/query) untuk memperoleh alamat baru yang masih berlaku bagi lagu tersebut.

2. Kueri riwayat lagu akun

Mendaftar lagu yang dibuat akun utama pemilik kunci API saat ini. Cocok untuk menyusun daftar lagu, pemilih, atau halaman riwayat Anda sendiri.

Endpoint: GET /api/music/songs

Biaya: Gratis.

Parameter query

Parameter Tipe Wajib Default Catatan
p integer tidak 1 Nomor halaman, mulai dari 1
page_size integer tidak 20 Item per halaman, maksimum 100
q string tidak - Pencarian samar berdasarkan judul, atau pencarian tepat berdasarkan ID lagu lengkap
status string tidak - Filter status tepat, misalnya completed, playable

Hasil diurutkan menurun berdasarkan created_at dan ID catatan internal, sehingga urutan halaman tetap stabil.

Menemukan kiriman yang timeout: endpoint pembuatan tidak memberi respons antara sebelum diterima. Jika klien Anda timeout atau koneksinya terputus saat mengirim, pesanan itu bisa sudah diterima dan sedang dibuat. Lihat endpoint ini (terbaru dulu): lagu yang sudah diterima muncul normal di daftar. Kirim ulang hanya setelah Anda memastikan benar-benar tidak ada, agar tidak membayar dua kali. Lihat "Waktu tunggu dan pengaturan timeout" di Ringkasan API baru.

Contoh permintaan

curl "https://www.suno-api.io/api/music/songs?p=1&page_size=20&status=completed" \
  -H "Authorization: Bearer YOUR_API_KEY"

Contoh respons

{
  "success": true,
  "message": "",
  "data": {
    "page": 1,
    "page_size": 20,
    "total": 42,
    "items": [
      {
        "song_id": "8e31b3c0-example-song-id",
        "title": "Kota di malam hari",
        "status": "completed",
        "generation_type": "custom_generate",
        "model": "suno-v6",
        "duration": 187.42,
        "audio_url": "https://example.com/audio.mp3",
        "image_url": "https://example.com/cover.jpg",
        "created_at": 1784000000,
        "completed_at": 1784000120
      }
    ]
  }
}

Kolom respons

Kolom Tipe Catatan
song_id string ID lagu asli, bisa dipakai untuk kueri detail
title string Judul saat ini, yang mungkin sudah diubah pengguna
status string Status saat ini
generation_type string Jenis pembuatan
model string Model pembuatan
duration number Durasi audio dalam detik
audio_url string Alamat audio; bisa kosong selama belum selesai
image_url string Alamat sampul; bisa kosong
created_at integer Waktu pembuatan, timestamp Unix dalam detik
completed_at integer Waktu selesai, timestamp Unix dalam detik; bisa tidak ada selama belum selesai

Endpoint daftar tidak mengembalikan prompt, kolom biaya, informasi akun, atau respons mentah. Untuk prompt dan parameter pembuatan, panggil endpoint detail lagu.


3. Kueri parameter pembuatan

Mencari prompt, gaya, model, dan lagu sumber yang disimpan platform saat lagu dibuat.

Endpoint: GET /api/music/songs/:song_id

Biaya: Gratis.

Hanya lagu milik akun utama pemilik kunci API saat ini yang bisa dibaca. Lagu pengguna lain atau akun subsitus lain selalu diperlakukan sebagai "lagu tidak ditemukan".

Parameter path

Parameter Tipe Wajib Catatan
song_id string ya ID lagu asli

Contoh permintaan

curl "https://www.suno-api.io/api/music/songs/8e31b3c0-example-song-id" \
  -H "Authorization: Bearer YOUR_API_KEY"

Contoh respons

{
  "success": true,
  "message": "",
  "data": {
    "song_id": "8e31b3c0-example-song-id",
    "title": "Kota di malam hari",
    "status": "completed",
    "generation_type": "custom_generate",
    "model": "suno-v6",
    "duration": 187.42,
    "audio_url": "https://example.com/audio.mp3",
    "image_url": "https://example.com/cover.jpg",
    "video_url": "",
    "wav_url": "",
    "created_at": 1784000000,
    "completed_at": 1784000120,
    "client_request_id": "example-request-id",
    "client_request_index": 0,
    "parameters": {
      "prompt": "jalanan kota setelah hujan, lirik tentang pertemuan kembali",
      "style_tags": "Mandopop, acoustic, warm vocal",
      "title": "Kota di malam hari",
      "model": "suno-v6",
      "generation_type": "custom_generate",
      "source_song_id": "",
      "source_audio_url": "",
      "custom_mode": null,
      "instrumental": null,
      "negative_tags": null,
      "vocal_gender": null,
      "lyrics_mode": null,
      "wait_audio": null,
      "style_weight": null,
      "weirdness_constraint": null
    },
    "parameter_retention": {
      "core_parameters_available": true,
      "extended_parameters_available": false,
      "sources": [
        "suno_tasks"
      ],
      "unavailable_fields": [
        "custom_mode",
        "instrumental",
        "negative_tags",
        "vocal_gender",
        "lyrics_mode",
        "wait_audio",
        "style_weight",
        "weirdness_constraint"
      ]
    }
  }
}

Kolom parameters

Kolom Tipe Catatan
prompt string Prompt pembuatan atau lirik
style_tags string Tag gaya
title string Judul pembuatan yang disimpan; tugas riwayat biasa mungkin hanya menyimpan judul saat ini
model string Model pembuatan
generation_type string Jenis pembuatan
source_song_id string ID lagu sumber untuk tugas cover, perpanjangan, dan sejenisnya
source_audio_url string Alamat audio sumber
custom_mode boolean/null Apakah mode kustom dipakai; null bila tidak disimpan
instrumental boolean/null Apakah lagunya instrumental; data riwayat yang ada biasanya tidak menyimpannya terpisah
negative_tags string/null Gaya yang dikecualikan
vocal_gender string/null Pengaturan gender vokal
lyrics_mode string/null Mode lirik; data riwayat yang ada biasanya tidak menyimpannya
wait_audio boolean/null Apakah menunggu audio lengkap; data riwayat yang ada biasanya tidak menyimpannya
style_weight number/null Bobot gaya
weirdness_constraint number/null Parameter kreativitas / keanehan

Kolom prompt_view (lihat prompt, ditambahkan 2026-09-28)

prompt_view adalah struktur ternormalisasi khusus untuk "lihat prompt": ia menata data ke bagian tetap menurut jenis pembuatan, sehingga klien tidak perlu lagi memutuskan kolom mana yang ditampilkan. Ini kolom murni tambahan — kolom lama (parameters, parameter_retention) tetap memakai nama dan makna yang sama, dan klien yang tidak mengurai kolom baru sama sekali tidak terpengaruh.

"prompt_view": {
  "type": "custom_generate",
  "type_label": "Mode kustom",
  "generation": {
    "model": "suno-v6", "max_mode": false, "duration": 182.4,
    "title": "Pukul empat pagi#701f37", "title_base": "Pukul empat pagi", "title_suffix": "701f37",
    "created_at": 1790421721
  },
  "inputs": {
    "user_text": "...", "user_text_kind": "lyrics",
    "user_style": "elektronik guochao, sub bass dalam, synth retro",
    "style_tags": "elektronik guochao, sub bass dalam, synth retro",
    "style_source": "user", "lyrics": "...",
    "negative_tags": "", "is_instrumental": false
  },
  "extended": {
    "vocal_gender": "m", "style_weight": 0.5, "audio_weight": 0.85,
    "weirdness_constraint": 0.5, "variety": 2, "lyrics_mode": "manual",
    "custom_mode": true
  },
  "reference": { "voice_name": "sv_40_34", "source_song_id": "", "source_title": "" },
  "retention": {
    "recorded_since": "2026-09-28", "missing_reason": "",
    "not_applicable_fields": ["audio_weight"]
  }
}
Kolom Tipe Catatan
type / type_label string Jenis pembuatan mentah / label tampilan (pembuatan sederhana, mode kustom, mode efek suara, pembuatan dengan suara hasil kloning…)
generation.model string Model yang dipakai
generation.max_mode bool Apakah Max Mode menyala
generation.duration number Durasi audio (detik)
generation.title string Judul apa adanya seperti disimpan (bisa memuat akhiran)
generation.title_base string Judul tampilan tanpa akhiran #xxxxxx di ujung
generation.title_suffix string Akhiran itu sendiri (tanpa #); kosong bila tidak ada
inputs.user_text string Masukan pengguna (deskripsi atau lirik, tergantung jenis)
inputs.user_text_kind string lyrics / description / cover_requirements
inputs.user_style string Gaya yang diketik pengguna sendiri (mode kustom, suara, efek suara)
inputs.style_tags string Gaya yang akhirnya berlaku
inputs.style_source string user = diisi pengguna; suno_derived = disimpulkan Suno dari deskripsi
inputs.lyrics string Isi lirik; kosong bila tidak ada, [Instrumental] untuk lagu instrumental
inputs.negative_tags string Gaya yang dikecualikan
inputs.is_instrumental bool Apakah lagunya instrumental
extended.* — Parameter lanjutan, lihat di bawah; kolom yang tidak disimpan tidak muncul
reference.voice_name string Nama suara (hanya jenis suara; persona id internal tidak dikembalikan)
reference.source_song_id / source_title string Lagu sumber untuk tugas cover, perpanjangan, dan sejenisnya
retention.recorded_since string Tanggal parameter lanjutan mulai disimpan (2026-09-28)
retention.missing_reason string Mengapa tidak ada parameter lanjutan; data riwayat memberi not_recorded_before_20260928
retention.not_applicable_fields string[] Parameter yang memang tidak pernah dibutuhkan jenis pembuatan itu (jangan tampilkan sebagai "parameter hilang")

Kolom yang mungkin muncul di extended: vocal_gender, style_weight, audio_weight, weirdness_constraint, variety, lyrics_mode, custom_mode, serta kelompok efek suara sound_type / sound_bpm / sound_key / sound_loop. Nilai kosong tidak pernah dikembalikan.

Tiga aturan tampilan (ikuti, jangan menebak):

  1. Bedakan asal gaya: bila style_source=suno_derived, tampilkan "gaya (disimpulkan Suno dari deskripsi Anda)", jangan tulis "gaya yang Anda isi";
  2. Prompt internal tidak pernah muncul: jenis cover dengan suara hanya mengembalikan 【persyaratan gaya】/【persyaratan cover】 yang diketik pengguna; rangka tetap yang kami susun untuk model tidak muncul di kolom mana pun (data riwayat juga sudah dibersihkan);
  3. Jangan menebak parameter yang tidak disimpan: bila tidak ada di extended, berarti saat itu tidak dicatat — jelaskan alasannya lewat retention.

Catatan penyimpanan parameter

parameter_retention memisahkan "nilai kosong dikirim secara eksplisit" dari "kolom tidak pernah disimpan secara historis":

Lagu riwayat biasa umumnya menyimpan prompt, gaya, judul saat ini, model, jenis pembuatan, dan lagu sumber, tetapi tidak menyimpan semua parameter lanjutan secara terpisah. Platform tidak pernah menebak nilai yang hilang dari generation_type.

Sebagian tugas musik lanjutan juga menyimpan prompt asli, gaya, judul, model, serta custom_mode, negative_tags, vocal_gender, style_weight, dan weirdness_constraint. Meski catatan lanjutan ada, instrumental, lyrics_mode, dan wait_audio bisa tetap tidak dapat dipulihkan.

Judul lagu bisa diubah pengguna setelahnya. Bila tugas riwayat biasa tidak menyimpan judul asli terpisah, parameters.title bisa berupa judul saat ini; bila ada catatan tugas lanjutan, judul pembuatan asli yang tersimpan di sana lebih diutamakan.

Tidak ditemukan atau tanpa izin

Kesalahan bisnis memakai amplop respons seragam. Bila lagu tidak ada atau bukan milik akun saat ini:

{
  "success": false,
  "message": "song not found"
}

Kesalahan bisnis ini saat ini dikembalikan dengan HTTP 200, jadi nilai hasilnya dari kolom success. Kunci API yang hilang, tidak valid, kedaluwarsa, atau dinonaktifkan mengembalikan HTTP 401.

Catatan keamanan

Endpoint riwayat dan detail tidak pernah mengembalikan:

BerikutnyaAPI lirik bertimestamp

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