API kloning suara dan pembuatan dengan suara yang ditentukan (tidak disarankan)
⛔ Jalur lama, tidak disarankan untuk integrasi baru. Halaman ini menjelaskan jalur
personaawal (voice_task_id/generate-with-voice). Masih berfungsi, tetapi tidak lagi disarankan kepada pelanggan; menu di kiri menandainya "tidak disarankan".Untuk integrasi baru gunakan 【Disarankan】 API profil suara: buat profil suara dari satu sampel vokal (
POST /api/music/voice-profile/create), lalu pakai untuk meng-cover lagu tertentu atau menyanyikan lagu baru. Profil suara adalah sumber daya kelas satu: bisa didaftar, diambil, dan dihapus, serta audio sumbernya disimpan permanen.Jika produk Anda memerlukan siklus lengkap "buat suara → pakai ulang jangka panjang → cover", prioritaskan jalur baru.
Penting: suara hasil kloning bisa kedaluwarsa.
voice_id/voice_task_idyang dihasilkan kloning suara bukan sumber daya yang bisa dipakai selamanya: bisa berhenti berfungsi karena masa berlaku, status akun, atau perubahan status suara. Pihak yang mengintegrasikan tidak boleh mengkloning sekali lalu memakai ulang ID suara yang di-cache lokal selamanya.Praktik yang disarankan:
- Simpan
voice_task_id,voice_id,is_available,updated_at, dan waktu pembuatan sukses terakhir.- Sebelum setiap pembuatan memakai suara hasil kloning, panggil
GET /api/voice/clone/tasks/{voice_task_id}atauPOST /api/voice/clone/tasks/{voice_task_id}/checkdan pastikanis_available=true.- Jika endpoint menjawab suara tidak tersedia, tugas tidak ada, atau
selected voice is not ready, minta pengguna mengkloning ulang atau memilih suara lain yang tersedia.- Jangan menjanjikan ke pengguna akhir bahwa suara hasil kloning adalah "aset permanen"; tampilkan di antarmuka produk bahwa "suara bisa kedaluwarsa dan perlu validasi ulang atau kloning ulang".
Deskripsi endpoint
Grup endpoint ini membuat suara yang dapat dipakai ulang dan membuat lagu dengan suara itu. Pemanggil hanya perlu API Key dari platform; server menangani pengiriman tugas, sinkronisasi status, penagihan, dan unduhan.
Autentikasi: Authorization: Bearer YOUR_API_KEY
Biaya:
- Validasi suara, kloning suara, kueri status, penghapusan, dan unduhan: gratis.
- Pintu kloning satu langkah di ruang kerja: 5 ¥ tetap per panggilan; menyelesaikan validasi suara sumber dan audio verifikasi kedua secara otomatis, dan mengembalikan dana jika gagal.
- Lanjut otomatis ke audio verifikasi setelah kloning biasa: 5 ¥ tetap per panggilan; jika gagal dikembalikan sesuai alur yang berlaku.
- Membuat lagu dengan suara hasil kloning: berbayar, 1,2 ¥ tetap per panggilan; tiap panggilan biasanya mengembalikan 2 tugas placeholder.
- Saat Max Mode aktif (
max_mode: truepadaPOST /api/music/generate-with-voice), tarif 1,2 ¥ per panggilan ditagih 2×, yaitu 2,4 ¥ per panggilan; pembuatan suara juga mendukungvariety(0-4, tanpa biaya tambahan); aturan nilainya ada di bagian "Parameter lanjutan" pada ringkasan API baru.
Alur pemanggilan
- Panggil
POST /api/voice/clone/validateuntuk mengunggah suara sumber dan mendapatkanvoice_task_id. - Tunggu atau polling
GET /api/voice/clone/tasks/{voice_task_id}sampai mendapatvalidate_info. - Pengguna membacakan teks itu dan merekam audio verifikasi.
- Panggil
POST /api/voice/clone/tasks/{voice_task_id}/generateuntuk mengirim audio verifikasi. - Panggil
POST /api/voice/clone/tasks/{voice_task_id}/checkatau terus kueri tugasnya sampaiis_available=true. - Panggil
POST /api/music/generate-with-voiceuntuk membuat lagu dengan suara itu. - Endpoint pembuatan mengembalikan tugas placeholder lebih dulu; setelah pembuatan selesai dan Anda mendapat
song_idsebenarnya, gunakan endpoint unduhan untuk mengambil satu berkas atau satu paket. - (Opsional) Saat suara tidak diperlukan lagi, panggil
DELETE /api/voice/clone/voices/{voice_task_id}untuk menghapusnya; semantiknya di bagian 6.
Ada juga kloning satu langkah: pada halaman perekaman/pengunggahan suara sumber pertama di ruang kerja, Anda bisa memilih selesai dalam satu langkah; sistem menyelesaikan validasi dan pembuatan suara sekaligus, sehingga Anda tidak perlu merekam audio verifikasi kedua; biayanya 5 ¥ per panggilan dan dikembalikan jika gagal.
Field tugas suara
| Field | Tipe | Keterangan |
|---|---|---|
voice_task_id |
number | ID tugas suara di dalam platform; semua endpoint berikutnya memakai ID ini |
voice_id |
string | ID suara yang dapat dipakai membuat lagu; dikembalikan saat tugas sudah bisa dipakai |
voice_name |
string | Nama suara |
description |
string | Deskripsi suara |
style |
string | Gaya suara |
singer_skill_level |
string | Tingkat vokal; nilai umum: beginner, intermediate, professional |
language |
string | Bahasa suara sumber, misalnya zh, en |
validate_info |
string | Teks verifikasi yang harus dibacakan |
validate_status |
string | Status tugas validasi |
voice_status |
string | Status pembuatan suara |
is_available |
boolean | Apakah sudah bisa dipakai membuat lagu |
status |
string | Status tugas di platform |
stage |
string | Tahap saat ini |
error_code |
string | Kode kesalahan saat gagal |
error_message |
string | Penyebab kegagalan |
source_duration_seconds |
number | Durasi audio sumber dalam detik |
created_at |
number | Stempel waktu pembuatan |
updated_at |
number | Stempel waktu pembaruan |
completed_at |
number | Stempel waktu penyelesaian |
1. Kirim suara sumber untuk divalidasi
Endpoint: POST /api/voice/clone/validate
Parameter body
| Parameter | Tipe | Wajib | Default | Keterangan |
|---|---|---|---|---|
voice_url |
string | Tidak | - | URL audio suara sumber. Ini atau file_base64 |
file_base64 |
string | Tidak | - | Audio dalam base64. Ini atau voice_url |
file_name |
string | Tidak | - | Nama berkas; disarankan saat memakai file_base64 |
voice_name |
string | Tidak | dibuat otomatis | Nama suara |
description |
string | Tidak | - | Deskripsi suara |
style |
string | Tidak | - | Gaya suara |
singer_skill_level |
string | Tidak | beginner |
Tingkat vokal |
language |
string | Tidak | zh |
Bahasa suara sumber |
vocal_start_s |
number | Ya | - | Detik awal vokal yang dapat dipakai |
vocal_end_s |
number | Ya | - | Detik akhir vokal yang dapat dipakai |
source_duration_seconds |
number | Tidak | - | Durasi total audio sumber dalam detik |
vocal_end_s - vocal_start_sharus memenuhi syarat minimum segmen vokal. Unggah rekaman vokal yang bersih, tanpa iringan atau derau yang mencolok.
Contoh permintaan
curl -X POST https://www.suno-api.io/api/voice/clone/validate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"voice_url": "https://example.com/source-voice.wav",
"voice_name": "Suara wanita Mandarin saya",
"description": "Suara wanita Mandarin yang jernih dan alami",
"style": "Mandopop",
"singer_skill_level": "intermediate",
"language": "zh",
"vocal_start_s": 1.2,
"vocal_end_s": 18.5,
"source_duration_seconds": 20
}'
Contoh respons
{
"success": true,
"message": "",
"data": {
"voice": {
"voice_task_id": 123,
"voice_name": "Suara wanita Mandarin saya",
"language": "zh",
"validate_status": "submitted",
"is_available": false,
"status": "validate_submitted",
"stage": "validate_submitted",
"created_at": 1780480000,
"updated_at": 1780480000
}
}
}
2. Kueri tugas suara
Endpoint: GET /api/voice/clone/tasks/{voice_task_id}
Contoh permintaan
curl https://www.suno-api.io/api/voice/clone/tasks/123 \
-H "Authorization: Bearer YOUR_API_KEY"
Contoh respons
{
"success": true,
"message": "",
"data": {
"voice": {
"voice_task_id": 123,
"voice_name": "Suara wanita Mandarin saya",
"validate_info": "Bacakan teks verifikasi yang dikembalikan di sini",
"validate_status": "success",
"is_available": false,
"status": "validate_ready",
"stage": "validate_callback"
}
}
}
3. Buat ulang teks verifikasi
Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/regenerate
Panggil bila teks verifikasi tidak cocok untuk dibacakan atau validasi perlu diulang.
curl -X POST https://www.suno-api.io/api/voice/clone/tasks/123/regenerate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
4. Kirim audio verifikasi dan buat suara
Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/generate
Parameter body
| Parameter | Tipe | Wajib | Default | Keterangan |
|---|---|---|---|---|
verify_url |
string | Tidak | - | URL audio yang dibacakan dari teks verifikasi. Ini atau file_base64 |
file_base64 |
string | Tidak | - | Audio verifikasi dalam base64. Ini atau verify_url |
file_name |
string | Tidak | - | Nama berkas; disarankan saat memakai file_base64 |
voice_name |
string | Tidak | nama tugas | Nama suara |
description |
string | Tidak | deskripsi tugas | Deskripsi suara |
style |
string | Tidak | gaya tugas | Gaya suara |
singer_skill_level |
string | Tidak | pengaturan tugas | Tingkat vokal |
Contoh permintaan
curl -X POST https://www.suno-api.io/api/voice/clone/tasks/123/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"verify_url": "https://example.com/verify-voice.wav",
"voice_name": "Suara wanita Mandarin saya"
}'
5. Periksa apakah suara bisa dipakai
Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/check
curl -X POST https://www.suno-api.io/api/voice/clone/tasks/123/check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Saat tugas sudah bisa dipakai, is_available pada respons bernilai true dan voice_id dikembalikan.
6. Hapus suara
Endpoint: DELETE /api/voice/clone/voices/{voice_task_id}
Biaya: gratis.
curl -X DELETE https://www.suno-api.io/api/voice/clone/voices/123 \
-H "Authorization: Bearer YOUR_API_KEY"
Contoh respons
{
"success": true,
"message": "",
"data": {
"voice_task_id": 123,
"deleted": true
}
}
| Field | Tipe | Keterangan |
|---|---|---|
| voice_task_id | number | ID tugas suara yang dihapus |
| deleted | boolean | Selalu true; permintaan penghapusan sudah diterima |
Apa yang terjadi setelah dihapus
- Tidak bisa lagi dipakai membuat lagu baru: memanggil
POST /api/music/generate-with-voicedenganvoice_task_idini (atauvoice_id-nya) akan ditolak dengan pesanselected voice is not ready, tanpa biaya. - Lagu yang sudah dibuat dengannya sama sekali tidak terpengaruh: pemutaran, unduhan, lanjutan, penggantian, dan pemisahan stem tetap berjalan seperti biasa.
- Tugas suara ini hilang dari kueri:
GET /api/voice/clone/tasks/{voice_task_id}mengembalikanrecord not found. - Audio sumber tetap disimpan sesuai kebijakan penyimpanan permanen platform (sejak 2026-09-23 penghapusan tidak lagi membersihkan sampel vokal yang Anda unggah), tetapi itu tidak berarti bisa dipulihkan: tugas lama sudah berakhir, dan untuk melanjutkan dengan suara yang sama Anda harus melewati alur kloning lagi, yang menghasilkan
voice_task_idbaru. - Hapus dua kali: menghapus tugas yang sama sekali lagi mengembalikan
record not found(sudah dalam status terhapus dan tidak bisa ditemukan).
7. Buat lagu dengan suara hasil kloning
Endpoint: POST /api/music/generate-with-voice
Biaya: 1,2 ¥ per panggilan.
Parameter body
| Parameter | Tipe | Wajib | Default | Keterangan |
|---|---|---|---|---|
voice_task_id |
number | Ya | - | ID tugas suara yang sudah bisa dipakai |
voice_id |
string | Tidak | - | Field verifikasi opsional; jika dikirim harus sama dengan voice_id pada tugas |
customMode |
boolean | Tidak | false |
false adalah mode inspirasi, true mode lanjutan |
prompt |
string | Ya | - | Di mode inspirasi berisi deskripsi lagu, di mode lanjutan berisi lirik. Keduanya tidak boleh kosong |
style |
string | Ya di mode lanjutan | - | Tag gaya; tidak boleh kosong saat customMode=true |
title |
string | Ya di mode lanjutan | - | Judul lagu; tidak boleh kosong saat customMode=true |
negativeTags |
string | Tidak | - | Gaya yang dikecualikan |
instrumental |
boolean | Tidak | false |
Field kompatibilitas; pembuatan dengan suara hasil kloning selalu diperlakukan sebagai lagu bervokal |
waitAudio |
boolean | Tidak | false |
Field kompatibilitas; endpoint ini selalu mengembalikan tugas placeholder secara asinkron dan tidak menunggu audio |
model |
string | Tidak | suno-v6 |
Model pembuatan lagu biasa; bisa memakai suno-v6, suno-v6-wild, atau suno-v6-mini |
vocalGender |
string | Tidak | - | Preferensi gender vokal |
lyricsMode |
string | Tidak | - | Field kompatibilitas; jalur pengiriman suara hasil kloning saat ini tidak mengubah mode lirik sendiri |
weirdnessConstraint |
number | Tidak | - | Kekuatan kreativitas |
styleWeight |
number | Tidak | - | Bobot gaya |
audioWeight |
number | Tidak | default platform | Audio Influence (seberapa penting audio referensi), rentang 0.0-1.0. Jika tidak dikirim, berlaku default platform (setara 25% di antarmuka resmi); 0 adalah nilai valid yang berarti sama sekali tidak condong ke sumber referensi. Field ini terkait erat dengan sourceClipId di baris berikutnya: bila ada sumber ia mengarah ke audio referensi, bila tidak ada sumber ia mengarah ke suara hasil kloning; platform hanya punya satu slider ini untuk kedua kasus, jadi jangan pecah menjadi dua parameter per kasus penggunaan |
sourceClipId |
string | Tidak | - | ID clip sebenarnya di ruang kerja untuk lagu sumber. Jika dikirim, Anda masuk ke cover dengan suara hasil kloning; jika tidak, itu pembuatan biasa dengan suara hasil kloning |
sourceAudioUrl |
string | Tidak | - | Field tampilan sumber; tidak ikut menentukan kepemilikan atau akun, server mengacu pada catatan basis datanya |
sourceTitle |
string | Tidak | - | Field tampilan sumber; tidak ikut menentukan kepemilikan atau akun |
clientSubmissionId |
string | Tidak | - | Field kompatibilitas Create UI; untuk deduplikasi yang andal di API pelanggan harus memakai header Idempotency-Key |
suno-v6, suno-v6-wild, dan suno-v6-mini didukung; model kosong diperlakukan sebagai suno-v6. Model lama V5/V5.5 sudah dihentikan, tetapi tugas historis mungkin masih menampilkan nama model lama.
Struktur permintaan bersama juga membaca field kompatibilitas Create UI seperti task, soundType, soundLoop, soundBpm, soundKey, voiceTaskId, dan voiceId, namun itu bukan parameter pelanggan yang valid untuk endpoint ini: tugas suara harus dikirim sebagai voice_task_id, verifikasi suara opsional sebagai voice_id, dan pembuatan musik dengan suara tidak pernah membaca field sound.
Cara mengisi parameter pembuatan
- Saat
customMode=false,promptberisi deskripsi lagu; saatcustomMode=true,promptberisi lirik lengkap, danstylesertatitlejuga harus diisi. Jangan mengirim lirik ke field deskripsi mode inspirasi dan jangan memperlakukan deskripsi lagu sebagai lirik mode lanjutan. weirdnessConstraintdanstyleWeightadalah rasio desimal dari0.0sampai1.0;50atau50%tidak bisa dikirim.0.5adalah nilai seimbang; tidak mengirim berarti "tidak ditentukan", dan0adalah nilai eksplisit yang valid.vocalGenderhanya menerimam,male,f, ataufemale.instrumentaldi sini hanya field kompatibilitas: pembuatan dengan suara hasil kloning selalu diperlakukan sebagai lagu bervokal.waitAudiotidak mengubah perilaku di sini; endpoint selalu mengembalikan tugas placeholder secara asinkron.audio_urlkosong pada hasil awal itu normal: kueri denganclient_request_iddan baca alamat audio hanya setelah hasilnya selesai.
Parameter header
| Header | Wajib | Keterangan |
|---|---|---|
Authorization: Bearer ... |
Ya | Token API pelanggan |
Content-Type: application/json |
Ya | Body permintaan JSON |
Idempotency-Key |
Tidak, sangat disarankan | Maksimal 128 karakter. Dengan pengguna, token, endpoint, kunci, dan body yang sama, penagihan dan pembuatan tugas hanya sekali |
Perilaku Idempotency-Key:
- Permintaan pertama menulis catatan idempotensi permanen sebelum penagihan;
- Jika kunci yang sama dengan permintaan yang sama sudah selesai, respons penerimaan pertama diputar ulang, tanpa tagihan kedua dan tanpa tugas kedua;
- Kunci yang sama dengan body berbeda akan ditolak;
- Kunci yang sama yang masih diproses mengembalikan galat "sedang diproses" yang stabil dan hanya menampilkan
client_request_idyang aman setelah dihasilkan; - Jika permintaan pertama dengan suatu kunci gagal, status gagal tetap berlaku; mencoba lagi memerlukan kunci baru.
Syarat cover dengan sourceClipId
Cover dari sumber di API pelanggan ditangani sepenuhnya di sisi server: akses ke lagu sumber diselesaikan server dan pelanggan tidak mengirim data akun apa pun. Bisa atau tidaknya ditentukan respons sebenarnya dari endpoint.
Sumber harus milik pengguna API saat ini, berupa lagu ruang kerja yang sudah selesai dan bukan pending:, serta memiliki audio yang bisa dipakai. Didukung pembuatan biasa, sumber dari unggahan biasa, dan lagu akhir unggahan yang diperkuat; catatan antara unggahan yang diperkuat ditolak sebelum penagihan. Server hanya menerima ID lagu sumber yang dikirim pelanggan dan tidak pernah menerima ID akun; sumber yang tidak tersedia atau belum selesai mengembalikan galat sebelum penagihan.
Contoh permintaan
curl -X POST https://www.suno-api.io/api/music/generate-with-voice \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"voice_task_id": 123,
"customMode": true,
"prompt": "Tulis lagu pop Mandarin tentang tepi laut pada malam musim panas",
"style": "Mandopop, warm piano, emotional",
"title": "Angin laut malam musim panas",
"negativeTags": "noise, low quality",
"instrumental": false,
"model": "suno-v6"
}'
Contoh respons
{
"success": true,
"message": "",
"data": {
"client_request_id": "cu_1780480000_abcd1234",
"items": [
{
"placeholder_id": "pending:cu_1780480000_abcd1234:0",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 0,
"status": "submitted",
"type": "voice_generate",
"title": "Angin laut malam musim panas",
"prompt": "Tulis lagu pop Mandarin tentang tepi laut pada malam musim panas"
},
{
"placeholder_id": "pending:cu_1780480000_abcd1234:1",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 1,
"status": "submitted",
"type": "voice_generate",
"title": "Angin laut malam musim panas",
"prompt": "Tulis lagu pop Mandarin tentang tepi laut pada malam musim panas"
}
],
"pre_consumed_quota": 600000,
"billing_source": "wallet"
}
}
Tentang tugas placeholder dan song_id akhir
generate-with-voice adalah endpoint pembuatan asinkron. Respons sukses hanya berarti tugas pembuatan sudah dikirim, bukan bahwa lagunya sudah selesai.
Arti field penting pada respons:
| Field | Keterangan |
|---|---|
client_request_id |
ID pelacakan permintaan pembuatan ini. Satu permintaan biasanya membuat 2 lagu, dan kedua hasil memakai client_request_id yang sama. |
items[].placeholder_id |
ID placeholder lokal platform, biasanya berbentuk pending:{client_request_id}:{index}. Ini bukan ID lagu akhir. |
items[].client_request_index |
Indeks hasil dalam permintaan yang sama, biasanya 0 dan 1. |
items[].status |
Status awal setelah dikirim, misalnya submitted. Sukses atau gagal selanjutnya mengikuti catatan tugas akhir. |
Perhatian: placeholder_id yang dimulai dengan pending: tidak bisa dipakai sebagai song_id akhir dan tidak bisa langsung dikirim ke /api/music/query atau endpoint unduhan. Memanggil /api/music/query hanya dengan nilai pending:* bisa mengembalikan array kosong [], karena lagu sebenarnya belum selesai atau tugas placeholder belum diganti dengan ID lagu akhir.
Contoh yang salah:
{
"song_ids": "pending:cu_1780480000_abcd1234:0"
}
Alur yang benar:
- Panggil
POST /api/music/generate-with-voiceuntuk mengirim tugas pembuatan musik dengan suara. - Simpan
client_request_id,items[].placeholder_id, danitems[].client_request_indexdari respons. - Polling
GET /api/music/generate-with-voice/results?client_request_id=cu_xxx. - Saat
items[].song_idsudah bernilai dan tidak diawalipending:, panggil/api/music/query,/api/music/download-file, atau/api/music/download-all.
Versi saat ini menambahkan endpoint kueri publik:
GET /api/music/generate-with-voice/results?client_request_id=cu_xxx
Endpoint ini mengembalikan hasil tugas dengan client_request_id yang sama di bawah pengguna saat ini, sehingga pelanggan dapat mencari song_id akhir sendiri. Dalam daftar yang dikembalikan:
song_idadalah ID lagu sebenarnya;placeholder_idhanya muncul selama tugas masih berstatus placeholder;- nilai yang diawali
pending:tidak bisa dipakai dengan/api/music/queryatau endpoint unduhan.
Jika Anda hanya menyimpan client_request_id atau ID placeholder pending:*, panggil endpoint hasil ini lebih dulu; bila song_id sebenarnya tetap tidak ditemukan, kirim client_request_id ke dukungan teknis untuk ditelusuri.
Kueri hasil pembuatan musik dengan suara
Endpoint: GET /api/music/generate-with-voice/results
Biaya: gratis.
Parameter query
| Parameter | Tipe | Wajib | Keterangan |
|---|---|---|---|
client_request_id |
string | Ya | ID pelacakan yang dikembalikan generate-with-voice |
Contoh permintaan
curl -X GET "https://www.suno-api.io/api/music/generate-with-voice/results?client_request_id=cu_1780480000_abcd1234" \
-H "Authorization: Bearer YOUR_API_KEY"
Contoh respons saat sedang dibuat
{
"success": true,
"message": "",
"data": {
"client_request_id": "cu_1780480000_abcd1234",
"status": "processing",
"items": [
{
"song_id": "",
"placeholder_id": "pending:cu_1780480000_abcd1234:0",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 0,
"status": "processing",
"type": "voice_generate",
"title": "Angin laut malam musim panas"
}
]
}
}
Contoh respons setelah selesai
{
"success": true,
"message": "",
"data": {
"client_request_id": "cu_1780480000_abcd1234",
"status": "completed",
"items": [
{
"song_id": "song_abc123",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 0,
"status": "completed",
"type": "voice_generate",
"title": "Angin laut malam musim panas",
"audio_url": "https://...",
"image_url": "https://...",
"duration": 180.5
}
]
}
}
Arti status tingkat teratas
| Status | Keterangan |
|---|---|
not_found |
Di bawah pengguna saat ini belum ada catatan tugas dengan client_request_id itu |
processing |
Masih ada minimal satu hasil yang belum selesai; lanjutkan polling |
completed |
Semua hasil selesai; song_id bisa dikueri atau diunduh |
partial |
Sebagian selesai, sebagian gagal; tangani dulu song_id yang selesai |
failed |
Semua hasil gagal; lihat items[].error_message |
8. Unduh satu berkas
Endpoint: POST /api/music/download-file
Parameter body
| Parameter | Tipe | Wajib | Keterangan |
|---|---|---|---|
song_id |
string | Ya | ID lagu |
kind |
string | Ya | Jenis unduhan: audio, cover, wav, video |
Contoh permintaan
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_abc123",
"kind": "audio"
}' \
--output song.mp3
Responsnya adalah aliran berkas; Content-Type dan nama berkas mengikuti yang dikembalikan backend.
9. Unduh sumber daya lagu sebagai paket
Endpoint: POST /api/music/download-all
Parameter body
| Parameter | Tipe | Wajib | Keterangan |
|---|---|---|---|
song_id |
string | Ya | ID lagu |
Contoh permintaan
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_id": "song_abc123"
}' \
--output song.zip
Paket biasanya berisi audio, sampul, dan metadata.json; jika suatu jenis sumber daya belum dibuat, berkas itu tidak dimasukkan ke arsip.
Kesalahan umum
| message | Keterangan |
|---|---|
voice audio is required |
Saat mengirim suara sumber, voice_url maupun file_base64 tidak diberikan |
invalid voice task id |
ID tugas suara di path tidak valid |
voice validation is not ready |
Teks verifikasi belum tersedia, jadi audio verifikasi tidak bisa dikirim |
selected voice is not ready |
Suara yang dipilih belum bisa membuat lagu (belum siap, sudah dihapus, atau bukan milik akun saat ini) |
selected voice does not match voice task |
voice_id pada permintaan tidak cocok dengan tugasnya |
voice task is required |
voice_task_id tidak ada saat membuat lagu dengan suara |
record not found |
Tugas / lagu tidak ada, bukan milik akun API Key saat ini, atau sudah dihapus (mengueri tugas ini setelah suara dihapus akan menunjukkan hal yang sama) |
Kesalahan grup ini selalu mengembalikan HTTP 200: nilai keberhasilan dari field
successdi body (falseberarti gagal, alasannya dimessage) dan jangan hanya melihat kode status HTTP. Semantik lengkap penghapusan suara (apakah masih bisa dipakai, apakah bisa dipulihkan) ada di bagian 6.
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