API pembuatan mode kustom
Deskripsi endpoint
Mode kustom cocok ketika lirik, gaya, dan judul sudah siap dan Anda ingin mengendalikan suara yang bernyanyi, kekuatan pengaruh gaya, serta tingkat keacakan pembuatan.
Endpoint: POST /api/music/create/custom
Biaya: Berbayar, saat ini default 0,6 ¥ per panggilan. Setiap panggilan biasanya mengembalikan 2 lagu; jumlah yang benar-benar ditagih mengikuti konfigurasi harga di back-office saat ini.
Max Mode / Variety: endpoint ini mendukung parameter opsional max_mode dan variety (0-4). Dengan
max_mode aktif, panggilan ini ditagih 2× harga (0,6 → 1,2 ¥ per panggilan); variety tidak menambah
biaya. Arti dan cara mengirimnya ada di bagian "Parameter lanjutan" pada
Ringkasan API baru.
Waktu tunggu dan timeout (penting): ini endpoint sinkron — pesanan baru diterima dan diteruskan ke pembuatan saat respons tiba. Dari pengukuran, sebagian besar permintaan merespons dalam 1-3 detik, sekitar 10% melewati 30 detik, dan terlama sekitar 230 detik. Setel timeout klien 300 detik atau lebih; tidak ada respons bukan berarti tidak ada yang dibuat, dan jangan mencoba ulang langsung setelah timeout (itu menduplikasi pesanan dan menagih dua kali). Jika koneksi terputus, periksa lagi nanti dengan
GET /api/music/songs. Lihat "Waktu tunggu dan pengaturan timeout" di Ringkasan API baru.
Parameter permintaan
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 |
Nama model untuk pelanggan: suno-v6, suno-v6-wild, atau suno-v6-mini |
| lyrics | string | tidak | - | Lirik; boleh kosong untuk lagu instrumental |
| style_tags | string | ya | - | Tag gaya; beberapa dapat dipisahkan koma |
| song_title | string | tidak | - | Judul lagu |
| instrumental | boolean | tidak | false |
Apakah membuat lagu instrumental |
| negative_tags | string | tidak | - | Gaya atau efek yang tidak Anda inginkan |
| vocal_gender | string | tidak | - | Gender vokal: m, f, male, atau female |
| style_weight | number | tidak | - | Pengaruh gaya, dari 0.0 sampai 1.0 |
| weirdness_constraint | number | tidak | - | Keacakan, dari 0.0 sampai 1.0 |
| wait_completion | boolean | tidak | false |
Apakah menunggu pembuatan selesai sebelum merespons |
Catatan parameter lanjutan
Gender vokal vocal_gender
- Kirim
mataumaleuntuk suara pria,fataufemaleuntuk suara wanita. - Layanan menormalkan
maledanfemalemenjadimdanf. - Dengan
instrumental=true, parameter gender vokal tidak dikirim ke layanan pembuatan.
Pengaruh gaya style_weight
Mengendalikan seberapa kuat hasil mengikuti style_tags. Semakin tinggi nilainya, semakin hasil cenderung mengikuti tag gaya yang Anda kirim.
Keacakan weirdness_constraint
Mengendalikan seberapa bervariasi dan eksperimental hasilnya. Nilai tinggi biasanya memberi lebih banyak variasi; nilai rendah memberi hasil yang lebih aman.
Kedua parameter angka berkisar 0.0 sampai 1.0, dan 0 adalah nilai eksplisit yang sah. Hanya menghilangkan kolom sepenuhnya yang berarti "tidak ditentukan".
Saat mengisinya, ingat bahwa ini pecahan desimal, bukan bilangan bulat persen. Acuan yang disarankan: 0.0–0.3 konservatif, 0.4–0.6 seimbang, 0.7–1.0 lebih eksperimental; tanpa preferensi jelas gunakan 0.5 atau cukup hilangkan. Contoh: weirdness_constraint: 0.5, jangan 50 atau 50%.
Dengan instrumental=true, hasilnya instrumental sehingga lirik dan gender vokal tidak bekerja seperti pada lagu bernyanyi; jika butuh vokal, kirim false atau hilangkan kolom itu. Kolom boolean harus memakai true/false JSON, bukan string.
Contoh permintaan Python
import requests
response = requests.post(
'https://www.suno-api.io/api/music/create/custom',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'model': 'suno-v6',
'lyrics': '[Verse]\nMalam turun di atas laut\nangin senja melintas jendela',
'style_tags': 'Mandopop, acoustic guitar, warm vocal',
'song_title': 'Angin senja di tepi laut',
'vocal_gender': 'male',
'style_weight': 0.68,
'weirdness_constraint': 0.32,
},
timeout=300,
)
response.raise_for_status()
songs = response.json()
Mode tanda terima penerimaan (opsional)
Endpoint ini juga mendukung mode tanda terima penerimaan dari API pembuatan mode sederhana: dengan "accept_mode": "async" di body (atau header X-Accept-Mode: async), endpoint langsung mengembalikan 202 dan nomor tanda terima, pembuatan berjalan di latar belakang, dan Anda memantau kemajuannya dengan GET /api/music/requests/{request_id}.
Cocok untuk klien yang tidak boleh menahan koneksi lama, atau yang tidak ingin timeout dibaca sebagai "tidak ada yang dibuat". Tanpa parameter itu, perilakunya persis seperti sebelumnya.
curl -X POST https://www.suno-api.io/api/music/create/custom \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--max-time 300 \
-d '{
"style_tags": "Mandopop, acoustic guitar, warm vocal",
"song_title": "Angin senja di tepi laut",
"vocal_gender": "male",
"accept_mode": "async"
}'
Bentuk respons dan cara polling ada di bagian "Mode tanda terima penerimaan" pada API pembuatan mode sederhana.
Validasi parameter
Kasus berikut mengembalikan HTTP 400, dan message kesalahan menyebut kolom yang tidak valid:
style_weightatauweirdness_constraintbukan angka.- Nilai angka di bawah
0.0atau di atas1.0. vocal_genderbukan salah satu darim,f,male,female.
Batas kolom teks
Kolom berikut juga mengembalikan HTTP 400 saat terlalu panjang, tidak masuk ke pembuatan dan tidak dipotong biaya di muka. Perhitungan per karakter Unicode (satu aksara Han dihitung 1) dan spasi di awal/akhir ikut dihitung:
| Kolom | Batas |
|---|---|
prompt (lirik, kompatibel dengan lyrics) |
3000 karakter |
style_tags (gaya, kompatibel dengan tags, style) |
1000 karakter |
negative_tags (gaya yang dikecualikan) |
1000 karakter |
song_title (judul, kompatibel dengan title) |
100 karakter |
Pesan kesalahan berbentuk style_tags must not exceed 1000 characters; received 2772: kata pertama adalah nama kolom yang melanggar dan di akhir adalah jumlah terukur, jadi saat menerima 400 cukup memangkas dengan dua angka itu tanpa mencoba kolom satu per satu. Aturan umumnya ada di "Batas kolom teks" pada Ringkasan API baru.
Respons
Endpoint biasanya mengembalikan array berisi 2 lagu. Permintaan asinkron biasanya mulai pada status pending; simpan song_id lalu ambil status akhir dan alamat audio melalui API kueri lagu. Kolom lagunya sama dengan API pembuatan mode sederhana.
Kolom yang kompatibel
| Kolom yang disarankan | Kolom yang kompatibel |
|---|---|
vocal_gender |
vocalGender |
style_weight |
styleWeight |
weirdness_constraint |
weirdnessConstraint |
Integrasi baru sebaiknya memakai snake_case secara konsisten. Jika satu permintaan membawa snake_case dan camelCase sekaligus, nilai snake_case yang berlaku.
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