Ringkasan dokumentasi Suno API
Daftar dengan alamat email dan Anda sudah bisa membuat kunci API. Satu kali pembuatan berbiaya 0,6 ¥, menghasilkan 2 lagu, dan mencakup unduhan MP3/WAV, lagu cover, Extend, pemisahan stem, serta kloning suara. URL dasar: https://www.suno-api.io.
Halaman ini mencantumkan model yang tersedia saat ini, seluruh endpoint pembuatan dan pengeditan, cara penagihan, dan urutan baca yang disarankan. Jika Anda baru pertama kali berintegrasi, bacalah dari atas ke bawah; bagian penanganan masalah 401/403/429 juga ada di sini.
Jawaban singkat
Bagaimana cara mendapatkan kunci API? Daftar dengan alamat email, buka konsol, masuk ke manajemen token, lalu buat token. Tidak perlu nomor telepon dan tidak perlu kartu bank.
Berapa biaya satu panggilan? Satu kali pembuatan berbiaya 0,6 ¥ dan menghasilkan 2 lagu. Kueri status, WAV, lirik bertimestamp, dan saran prompt gratis.
Model apa yang didukung? suno-v6 (default), suno-v6-wild, dan suno-v6-mini. Model pembuatan standar v5.5 dan yang lebih lama sudah dihentikan; karya yang sudah ada tidak terpengaruh.
Apa URL dasarnya? https://www.suno-api.io, dengan header Authorization: Bearer YOUR_API_KEY.
Model yang tersedia saat ini
Model untuk pelanggan pada pembuatan lagu standar adalah suno-v6, suno-v6-wild, dan suno-v6-mini. Jika model dikosongkan, sistem memakai suno-v6.
Model standar suno-v2, suno-v3, suno-v3-5, suno-v4, suno-v4-5, suno-v4-5-all, suno-v4-5-plus, suno-v5, dan suno-v5-5 sudah dihentikan. Tugas lama mungkin masih menampilkan nama-nama itu; itu data riwayat, bukan tanda bahwa model tersebut masih bisa dipakai untuk permintaan baru. Pemisahan stem adalah pengecualian — lihat API pemisahan stem (pisah vokal/musik).
Autentikasi
Semua endpoint publik berkunci API memakai set header yang sama:
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
URL dasar:
https://www.suno-api.io
Konvensi parameter umum
numberdi body harus berupa angka JSON, bukan string persentase. Intensitas 50% ditulis0.5, tidak pernah50atau50%.booleanharustrueataufalse. Jangan memakai0atau1sebagai pengganti.- Kolom bertanda "tidak" boleh dihilangkan sepenuhnya. Jika Anda belum yakin fungsi sebuah parameter, biarkan kosong agar layanan memakai perilaku defaultnya; jangan mengirim string kosong,
null, atau0sebagai pengganti "tidak dikirim", karena0adalah nilai sah untuk sebagian kolom angka. - Nama kolom peka ejaan. Setiap halaman endpoint mencantumkan nama yang disarankan dan alias yang kompatibel; kirim persis seperti pada tabel parameter. Di tempat dokumentasi menyatakan snake_case dan camelCase sama-sama diterima, jangan mengirim keduanya sekaligus.
- Setiap kolom durasi yang berakhiran
_satauSecondsdiukur dalam detik dan menerima desimal. Timestamp Unix dijelaskan terpisah, termasuk apakah dalam detik atau milidetik. - ID yang diawali
pending:adalah placeholder platform, bukansong_idsungguhan. Pakai hanya di tempat endpoint secara eksplisit menyatakan dukungan placeholder; selain itu tunggusong_idyang asli.
Batas kolom teks
Melebihi batas teks mengembalikan HTTP 400 secara langsung: tidak ada yang dibuat, tidak ada pre-charge, dan tidak ada catatan tugas yang dibuat. Perhitungannya per karakter Unicode (satu aksara Han dihitung 1) dan spasi di awal/akhir ikut dihitung.
| Kolom (termasuk alias kompatibel yang didokumentasikan di tiap endpoint) | Batas |
|---|---|
prompt / lyrics / description / theme / gpt_description_prompt |
3000 karakter |
style_tags / tags / style / original_tags |
1000 karakter |
negative_tags |
1000 karakter |
song_title / title |
100 karakter |
Kolom message menyebutkan kolom mana yang melanggar beserta panjang terukurnya, jadi dua angka itu sudah cukup untuk memangkasnya:
{
"error": {
"message": "style_tags must not exceed 1000 characters; received 2772",
"type": "invalid_request_error"
}
}
Berlaku untuk: /api/music/create, /api/music/create/custom, /api/music/extend, /api/music/upload-cover, /api/music/generate-from-source, /api/music/add-instrumental, /api/music/add-vocal, /api/music/add-stem, /api/music/mashup, /api/music/sample, /api/music/inspo, /api/music/crop, /api/music/remove-section, /api/music/fade, /api/music/reverse, /api/music/speed, /api/music/replace-section, /api/music/generate-with-voice.
Satu pengecualian: kolom description pada POST /api/music/sounds dibatasi 100 karakter, karena jalur efek suara memakai batas platform yang lebih pendek.
Pembuatan asinkron dan alamat audio
Endpoint pembuatan musik secara default bekerja asinkron. Ketika respons pertama membawa status bernilai pending, submitted, atau processing, audio_url, video_url, atau cover_url yang kosong adalah hal normal dan bukan tanda tugas gagal. Simpan song_id yang asli (atau client_request_id yang dikembalikan endpoint) lalu panggil endpoint kueri yang sesuai; baca dan unduh alamat audio hanya setelah statusnya selesai.
⚠️ Alamat audio kedaluwarsa setelah 7 hari — pindahkan berkas Anda tepat waktu
audio_url,wav_url,video_url, dan alamat yang dikembalikan endpoint unduhan dilayani dari penyimpanan objek platform dan kedaluwarsa setelah 7 hari secara default (berkas didaur ulang; alamat lama mengembalikan 404 / gagal diunduh).
- Dalam 7 hari itu, pindahkan berkas ke penyimpanan Anda sendiri (penyimpanan objek Anda, CDN, atau disk server). Jangan memperlakukan alamat kami sebagai tautan berumur panjang.
- Alamat yang kedaluwarsa tidak perlu membuat ulang lagu dan tidak berbiaya tambahan: panggil lagi API kueri lagu (atau API unduh media) untuk memperoleh alamat baru yang masih berlaku bagi lagu tersebut.
Waktu tunggu dan pengaturan timeout
Endpoint pembuatan bersifat sinkron: pesanan baru diterima dan diteruskan ke platform untuk digenerate ketika responsnya tiba. Sebelum itu, layanan harus menjadwalkan akun dan melewati pemeriksaan keamanan yang diwajibkan, dan tidak ada respons antara — tidak ada endpoint lain yang bisa melihat pesanan tersebut. Jadi satu-satunya bukti andal bahwa "sesuatu sudah dibuat" adalah responsnya sendiri, bukan apa pun yang Anda amati selama menunggu.
Waktu tunggu terukur (keluarga /api/music/create di produksi, 2026-09-18 sampai 2026-09-20)
| Persentil | Waktu tunggu |
|---|---|
| p50 | sekitar 1,2–1,6 detik |
| p75 | sekitar 2–6 detik |
| p90 | sekitar 42–49 detik |
| p95 | sekitar 48–76 detik |
| p99 | sekitar 109–160 detik |
| terlama | sekitar 230 detik |
- Sekitar 10% permintaan memakan waktu lebih dari 30 detik dan sekitar 1% memakan 1–2 menit. Permintaan yang lambat biasanya berarti permintaan itu harus melewati pemeriksaan keamanan lebih dulu.
- Kolom permintaan, bentuk respons, kode kesalahan, dan penagihan tidak berubah, jadi integrasi yang sudah ada hanya perlu menaikkan timeout klien — tanpa perubahan kode lain.
Persyaratan integrasi
- Setel timeout klien 300 detik atau lebih. Klien yang default 30, 60, atau 120 detik akan memutus koneksi saat menunggu.
- Tidak ada respons bukan berarti tidak ada yang dibuat. Saat timeout atau koneksi terputus, pesanan bisa sudah diterima dan sedang digenerate.
- Jangan mencoba ulang langsung setelah timeout: pengiriman ganda membuat pesanan kedua dan menagih lagi.
- Jika koneksi terputus, daftarkan lagu Anda dengan
GET /api/music/songs(terbaru dulu) beberapa saat kemudian — pesanan yang sudah diterima akan muncul normal. Kirim ulang hanya setelah Anda memastikan pesanan itu benar-benar tidak ada. - Saat melaporkan masalah, sertakan header respons
X-Oneapi-Request-Idagar permintaan itu bisa dilacak langsung.
Tidak mau menahan koneksi lama? Gunakan mode terima-tanda-terima. POST /api/music/create dan POST /api/music/create/custom mendukung tanda terima opsional: tambahkan "accept_mode": "async" ke body (atau header X-Accept-Mode: async) dan endpoint langsung mengembalikan 202 beserta nomor tanda terima sementara pembuatan berlanjut di latar belakang; panggil GET /api/music/requests/{request_id} untuk memantau kemajuannya. Klien yang timeout-nya hanya beberapa puluh detik jadi tidak salah membaca "tidak ada respons" sebagai "tidak ada yang dibuat", dan tidak bisa tertagih dua kali karena percobaan ulang. Lihat "Mode terima-tanda-terima" di API pembuatan mode sederhana.
Sebagai referensi:
python requestsmemakaitimeout=300,urllibmemakaiurlopen(..., timeout=300), Node memakaireq.setTimeout(300000), curl memakai--max-time 300.
Daftar endpoint yang disarankan
| Kemampuan | Method | Path | Catatan biaya | Dokumentasi |
|---|---|---|---|---|
| Saldo akun | GET | /api/user/balance |
Gratis | Lihat |
| Pembuatan mode sederhana | POST | /api/music/create |
Berbayar, saat ini default 0,6 ¥ per panggilan | Lihat |
| Pembuatan mode kustom | POST | /api/music/create/custom |
Berbayar; mendukung gender vokal, pengaruh gaya, dan tingkat keanehan | Lihat |
| Pembuatan ucapan | POST | /api/music/speech |
Berbayar, saat ini default 0,6 ¥ per panggilan; musik latar opsional | Lihat |
| Progres lewat tanda terima | GET | /api/music/requests/{request_id} |
Gratis; dipakai bersama accept_mode=async |
Lihat |
| Efek suara | POST | /api/music/sounds |
Berbayar, saat ini default 0,6 ¥ per panggilan | Lihat |
| Pembuatan lirik | POST | /api/lyrics/generate |
Gratis dalam kuota (10/menit, 300/hari), setelah itu 0,1 ¥ per panggilan | Lihat |
| Pembuatan profil suara (disarankan) | POST | /api/music/voice-profile/create |
Gratis (enhanced=true ditagih dengan harga unggah yang disempurnakan) |
Lihat |
| Cover dengan suara (disarankan) | POST | /api/music/voice-profile/cover |
1,2 ¥ per panggilan; 2,4 ¥ dengan Max Mode | Lihat |
| Daftar / detail / hapus suara (disarankan) | GET/POST | /api/music/voice-profile/list, /{voice_id}, /delete |
Gratis | Lihat |
| Kloning suara (jalur lama, tidak disarankan) | POST | /api/voice/clone/validate |
Gratis | Lihat |
| Kueri tugas kloning suara | GET | /api/voice/clone/tasks/:voice_task_id |
Gratis | Lihat |
| Buat ulang teks verifikasi | POST | /api/voice/clone/tasks/:voice_task_id/regenerate |
Gratis | Lihat |
| Kirim audio verifikasi dan buat suara | POST | /api/voice/clone/tasks/:voice_task_id/generate |
Ditagih menurut aturan kloning suara | Lihat |
| Periksa apakah suara hasil kloning bisa dipakai | POST | /api/voice/clone/tasks/:voice_task_id/check |
Gratis | Lihat |
| Hapus suara hasil kloning | DELETE | /api/voice/clone/voices/:voice_task_id |
Gratis | Lihat |
| Buat musik dengan suara pilihan | POST | /api/music/generate-with-voice |
Berbayar, 1,2 ¥ per panggilan; 2,4 ¥ dengan Max Mode | Lihat |
| Kueri hasil pembuatan dengan suara pilihan | GET | /api/music/generate-with-voice/results |
Gratis | Lihat |
| Penguatan gaya | POST | /api/music/boost-style |
Gratis dalam kuota (10/menit, 300/hari), setelah itu 0,1 ¥ per panggilan | Lihat |
| Saran prompt | POST | /api/prompts/suggestions |
Gratis dalam kuota (10/menit, 300/hari), setelah itu 0,1 ¥ per panggilan | Lihat |
| Unggah audio sumber | POST | /api/music/upload-source |
Gratis | Lihat |
| Kirim unggahan yang disempurnakan | POST | /api/music/enhanced-upload |
Berbayar, 10 ¥ per panggilan | Lihat |
| Daftar tugas unggahan yang disempurnakan | GET | /api/music/enhanced-upload |
Gratis | Lihat |
| Kueri satu tugas unggahan yang disempurnakan | GET | /api/music/enhanced-upload/:id |
Gratis | Lihat |
| Batalkan tugas unggahan yang disempurnakan | POST | /api/music/enhanced-upload/:id/cancel |
Gratis; hanya tahap yang bisa dibatalkan yang direfund | Lihat |
| Unggah lalu cover | POST | /api/music/upload-cover |
Berbayar, saat ini default 0,6 ¥ per panggilan; untuk audio besar sebaiknya pakai dua langkah upload-source + generate-from-source |
Lihat |
| Cover dari klip sumber | POST | /api/music/generate-from-source |
Berbayar, saat ini default 0,6 ¥ per panggilan | Lihat |
| Extend | POST | /api/music/extend |
Berbayar, saat ini default 0,6 ¥ per panggilan | Lihat |
| Replace Section | POST | /api/music/replace-section |
Berbayar, saat ini default 0,6 ¥ per panggilan | Lihat |
| Get Full Song | POST | /api/music/concat |
Berbayar, tetap 0,05 ¥ per panggilan | Lihat |
| Remaster | POST | /api/music/remaster |
Berbayar, saat ini default 0,6 ¥ per panggilan | Lihat |
| Tambah instrumental | POST | /api/music/add-instrumental |
Berbayar, ditagih menurut model yang diminta | Lihat |
| Tambah vokal | POST | /api/music/add-vocal |
Berbayar, ditagih menurut model yang diminta | Lihat |
| Tambah stem | POST | /api/music/add-stem |
Berbayar, ditagih menurut model yang diminta | Lihat |
| Mashup | POST | /api/music/mashup |
Berbayar, ditagih menurut model yang diminta | Lihat |
| Sample | POST | /api/music/sample |
Berbayar, ditagih menurut model yang diminta | Lihat |
| Inspo | POST | /api/music/inspo |
Berbayar, ditagih menurut model yang diminta | Lihat |
| Crop | POST | /api/music/crop |
Berbayar, ditagih menurut model yang diminta | Lihat |
| Hapus bagian | POST | /api/music/remove-section |
Berbayar, ditagih menurut model yang diminta | Lihat |
| Fade in/out | POST | /api/music/fade |
Berbayar, ditagih menurut model yang diminta | Lihat |
| Balik arah | POST | /api/music/reverse |
Berbayar, ditagih menurut model yang diminta | Lihat |
| Ubah kecepatan | POST | /api/music/speed |
Berbayar, ditagih menurut model yang diminta | Lihat |
| Pemisahan stem (pisah vokal/musik) | POST | /api/music/separate |
Berbayar; two default 0,6 ¥ per panggilan, twelve 3,0 ¥ |
Lihat |
| Hilangkan vokal | POST | /api/music/vocal-removal |
Gratis | Lihat |
| Hapus stem | POST | /api/music/stem-delete |
Gratis | Lihat |
| Buat / ambil WAV | POST | /api/music/wav |
Gratis | Lihat |
| Ambil MIDI | POST | /api/music/download-file (kind=midi) |
Gratis | Lihat |
| Alamat media / stream pratinjau | POST | /api/music/download-url, /api/music/generation-stream-url |
Gratis | Lihat |
| Unduh berkas lagu | POST | /api/music/download-file |
Gratis | Lihat |
| Unduh paket lagu | POST | /api/music/download-all |
Gratis | Lihat |
| Alamat unduh stabil | GET | /api/music/download |
Gratis | Lihat |
| Unduhan free2 | POST | /api/music/free2 |
Berbayar, 0,2 ¥ per lagu yang berhasil | Lihat |
| Kueri status satu lagu | POST | /api/music/query |
Gratis | Lihat |
| Riwayat lagu akun | GET | /api/music/songs |
Gratis | Lihat |
| Parameter pembuatan lagu | GET | /api/music/songs/:song_id |
Gratis | Lihat |
| Lirik bertimestamp | POST | /api/lyrics/timeline |
Gratis | Lihat |
| Kelayakan lisensi dan identitas | GET | /api/music/authorization/context |
Gratis | Lihat |
| Ikat identitas lisensi | POST | /api/music/authorization/identity |
Gratis; tidak bisa diubah setelah dikonfirmasi | Lihat |
| Daftar lagu yang bisa dilisensikan | GET | /api/music/authorization/songs |
Gratis; wajib mengikat identitas | Lihat |
| Terbitkan lisensi komersial | POST | /api/music/authorization/certificates |
Gratis; wajib memenuhi kelayakan | Lihat |
| Riwayat lisensi | GET | /api/music/authorization/certificates |
Gratis | Lihat |
| Detail lisensi | GET | /api/music/authorization/certificates/:id |
Gratis | Lihat |
| Unduh PDF lisensi | GET | /api/music/authorization/certificates/:id/download |
Gratis | Lihat |
/api/voice/clone/*dan/api/music/generate-with-voiceadalah jalur kloning suara generasi awal dan tidak disarankan untuk integrasi baru; gunakan 【Disarankan】 API profil suara sebagai gantinya.
Parameter lanjutan: Max Mode dan Variety
Endpoint pembuatan mendukung dua parameter opsional ini (mengosongkannya mempertahankan perilaku dan harga sebelumnya):
| Parameter | Tipe | Rentang | Catatan |
|---|---|---|---|
| max_mode | boolean | true / false |
Memakai komputasi lebih banyak untuk meningkatkan konsistensi sepanjang lagu; permintaan ini ditagih 2× harga |
| variety | integer | 0-4 |
Tingkat variasi gaya: 0=Mati, 1=Normal, 2=Tinggi, 3=Ekstra, 4=Maksimal. Kosongkan untuk memakai tingkat default model (keluarga v6 default 1); tanpa biaya tambahan |
Kedua parameter ini didukung oleh: POST /api/music/create, POST /api/music/create/custom,
POST /api/music/extend, POST /api/music/upload-cover, POST /api/music/generate-from-source,
POST /api/music/add-instrumental, POST /api/music/add-vocal, POST /api/music/add-stem,
POST /api/music/mashup, POST /api/music/sample, POST /api/music/inspo,
POST /api/music/replace-section, POST /api/music/voice-profile/cover, POST /api/music/speech.
- Harga 2× dalam praktik: endpoint yang berbiaya 0,6 ¥ per panggilan menjadi 1,2 ¥ dengan
max_mode; pembuatan dengan suara pilihan berbiaya 1,2 ¥ per panggilan dan 2,4 ¥ dengan Max Mode; cover dengan suara dari 【Disarankan】 API profil suara juga 1,2 ¥ per panggilan (2,4 ¥ denganmax_mode). varietyhanya berlaku untuk keluargasuno-v6(suno-v6,suno-v6-wild,suno-v6-mini); mengirimnya bersama model lain mengembalikan 400.- Efek suara, pemisahan stem, concat, WAV, dan aksi pengeditan Studio (crop, hapus bagian, fade, balik arah, ubah kecepatan, dan seterusnya) tidak menerima kedua parameter ini — mengirimnya secara eksplisit mengembalikan 400, agar tidak ada parameter yang diabaikan diam-diam.
varietyadalah bilangan bulat mentah 0-4;style_weightdanweirdness_constraintadalah desimal dari 0 sampai 1, jadi skalanya berbeda.
Kolom respons lagu yang umum
Endpoint pembuatan, cover, extend, pemisahan, dan kueri biasanya mengembalikan array lagu dengan kolom berikut:
| Kolom | Tipe | Catatan |
|---|---|---|
song_id |
string | ID lagu atau tugas |
song_title |
string | Judul lagu |
status |
string | Status seperti pending, completed, failed |
audio_url |
string | Alamat audio, dikembalikan setelah pembuatan selesai |
video_url |
string | Alamat video, bisa kosong |
cover_url |
string | Alamat gambar sampul |
lyrics |
string | Teks lirik |
style_tags |
string | Tag gaya |
duration |
number | Durasi audio dalam detik |
created_at |
string | Waktu pembuatan |
model_version |
string | Versi model |
generation_type |
string | Jenis pembuatan |
error_message |
string | Alasan kegagalan |
Empat langkah berintegrasi (contoh minimal yang berjalan)
Lakukan keempat langkah ini dan Anda sudah punya lagu pertama; daftar kolom lengkap tiap langkah ada di halaman yang sesuai pada daftar endpoint yang disarankan.
# 1) Kirim permintaan pembuatan: 0,6 ¥, menghasilkan 2 lagu
curl -X POST https://www.suno-api.io/api/music/create \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"description": "bright Mandarin pop, piano intro, warm female vocal", "model": "suno-v6"}'
# 2) Polling tugas sampai status completed (interval 3-5 detik sudah bagus)
curl -X POST https://www.suno-api.io/api/music/query \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"song_id": "song_id yang dikembalikan di langkah 1"}'
# 3) Ambil alamat media: endpoint baca semuanya gratis; tersedia song / wav / video / cover / midi
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 yang sama", "kind": "song"}'
Jika ada masalah: 401 / 402 / 403 / 429 dibahas di referensi kesalahan; timeout dan tagihan ganda di bagian "Waktu tunggu dan pengaturan timeout" di atas; detail per endpoint di daftar endpoint yang disarankan di bawah.
Rekomendasi
- Integrasi baru sebaiknya memakai
suno-v6di sepanjang alur. - Untuk endpoint yang menyebut harga default, jumlah yang benar-benar ditagih mengikuti konfigurasi harga back-office saat ini dan model yang diminta.
- Endpoint pembuatan biasanya mengembalikan tugas lebih dulu; baca audio akhirnya lewat
/api/music/query. wait_completion=truememblokir sampai selesai dan cocok untuk pengujian bervolume kecil; di produksi, polling lebih disarankan.- Endpoint pembuatan bisa sangat lama baru merespons — setel timeout klien 300 detik atau lebih, dan ingat bahwa "tidak ada respons" tidak sama dengan "tidak ada yang dibuat"; lihat "Waktu tunggu dan pengaturan timeout" di atas.
- Kemampuan unggah, cover, replace, dan WAV bergantung pada akun platform dan izin klip sumber; jika gagal, baca lebih dulu
messageatauerror_messageyang dikembalikan.
Tentang dokumentasi ini
Halaman ini disusun ulang mengikuti kemampuan yang benar-benar ditampilkan Create UI, dan integrasi baru sebaiknya membacanya lebih dulu. Dokumentasi API lama masih tersedia di bagian "Dokumentasi API lama (kompatibel)" bagi pemanggil yang ingin terus memakainya.
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