API unggahan yang disempurnakan
Deskripsi endpoint
Unggahan yang disempurnakan mengirim berkas audio lokal; sistem melakukan penyempurnaan di latar belakang dan menghasilkan lagu lengkap yang bisa diputar. Panggilan kirim langsung mengembalikan informasi tugas, dan klien melakukan polling ke endpoint kueri untuk memantau kemajuan.
Endpoint kirim: POST /api/music/enhanced-upload
Kueri satu tugas: GET /api/music/enhanced-upload/:id
Batalkan tugas: POST /api/music/enhanced-upload/:id/cancel
Kueri daftar: GET /api/music/enhanced-upload
Biaya: 10 ¥ per panggilan, ditagih di muka dengan harga tetap suno-enhanced-upload. Bila tugas gagal, atau dibatalkan pada tahap yang diizinkan, jumlah yang ditagih di muka dikembalikan otomatis. Jumlah yang benar-benar ditagih mengikuti konfigurasi harga di back-office saat ini.
Alur pemanggilan
- Panggil
POST /api/music/enhanced-uploaduntuk mengunggah berkas audio. - Simpan
task_idyang dikembalikan. - Panggil
GET /api/music/enhanced-upload/:iduntuk memeriksa kemajuan dan hasil. - Setelah Suno menyelesaikan rendering akhir, layanan memakai akun Suno yang terikat pada tugas itu untuk memanggil endpoint unduhan terotorisasi Studio dan menulis MP3 ke layanan media CN2.
- Tugas baru menjadi
completedsetelah aset CN2 siap; saat itulah alamat audio CDN diambil dariaudio_urlpada respons.
/api/forbidden adalah alamat pengganti yang bisa muncul di metadata Suno Studio; itu bukan sumber daya yang bisa diputar atau diunduh. Alamat ini tidak pernah dikembalikan ke pelanggan dan tidak dipakai sebagai dasar penyelesaian. Bila rendering sudah selesai tetapi CN2 masih menyiapkan, endpoint tetap mengembalikan processing dan tidak mengembalikan audio_url; klien sebaiknya terus melakukan polling dan tidak menganggap alamat kosong sebagai kegagalan.
Mengirim unggahan yang disempurnakan
Headers
| Parameter | Tipe | Wajib | Catatan |
|---|---|---|---|
| Authorization | string | ya | Bearer YOUR_API_KEY |
| Content-Type | string | tidak | Untuk permintaan multipart jangan disetel manual; biarkan klien membuatnya |
Parameter form
| Parameter | Tipe | Wajib | Default | Catatan |
|---|---|---|---|---|
| file | file | ya | - | Berkas audio lokal, maksimal 80 MB |
| title | string | tidak | nama berkas tanpa ekstensi | Judul lagu |
Contoh permintaan
Contoh di bawah memakai cara pemanggilan yang sama seperti saat validasi produksi, tetapi API Key sudah diganti dengan pengganti.
curl.exe --http1.1 -s -S \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@source.aac" \
-F "title=Enhanced upload demo" \
"https://www.suno-api.io/api/music/enhanced-upload"
Respons
{
"success": true,
"message": "",
"data": {
"task_id": 3209,
"song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "queued",
"created_at": 1781137961,
"pre_consumed_quota": 5000000,
"billing_source": "wallet"
}
}
Mengueri satu tugas
Contoh permintaan
curl.exe --http1.1 -s -S \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.suno-api.io/api/music/enhanced-upload/3209"
Contoh respons saat diproses
{
"success": true,
"message": "",
"data": {
"task": {
"task_id": 3209,
"song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "processing",
"type": "enhanced_upload",
"progress": {
"stage": "media_preparing",
"percent": 98,
"label": "正在准备播放资源",
"updated_at": 1781138500
},
"pre_consumed_quota": 5000000,
"billing_source": "wallet",
"created_at": 1781137961,
"updated_at": 1781138500
}
}
}
Contoh respons saat selesai
{
"success": true,
"message": "",
"data": {
"task": {
"task_id": 3209,
"song_id": "56cbd0bb-0e8c-4a34-8729-55d5c05d9c53",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "completed",
"type": "enhanced_upload",
"audio_url": "https://media.code-go.com/assets/56cbd0bb-0e8c-4a34-8729-55d5c05d9c53-mp3.mp3",
"duration": 217.74,
"progress": {
"stage": "completed",
"percent": 100,
"label": "已完成",
"updated_at": 1781138943
},
"pre_consumed_quota": 5000000,
"billing_source": "wallet",
"created_at": 1781137961,
"updated_at": 1781138943,
"completed_at": 1781138943
}
}
}
Membatalkan tugas
Pembatalan hanya mungkin selama tugas dan alur backend masih berada di tahap queued. Setelah tugas masuk leasing, running, processing, atau sudah selesai, tugas tidak bisa dibatalkan.
Contoh permintaan
curl.exe --http1.1 -s -S -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.suno-api.io/api/music/enhanced-upload/3209/cancel"
Respons
{
"success": true,
"message": "",
"data": {
"task_id": 3209,
"song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"status": "cancelled"
}
}
Jika tugas sudah mulai diproses, endpoint mengembalikan:
{
"success": false,
"message": "强化上传已开始处理,无法取消"
}
Mengueri daftar tugas
Endpoint daftar hanya mengembalikan tugas unggahan yang disempurnakan milik pengguna pemegang API Key saat ini; tugas pembuatan biasa, cover, dan extend tidak tercampur.
Parameter kueri
| Parameter | Tipe | Wajib | Default | Catatan |
|---|---|---|---|---|
| p | number | tidak | 1 | Nomor halaman |
| page_size | number | tidak | default sistem | Item per halaman, maksimal 100 |
Contoh permintaan
curl.exe --http1.1 -s -S \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.suno-api.io/api/music/enhanced-upload?p=1&page_size=3"
Respons
{
"success": true,
"message": "",
"data": {
"page": 1,
"page_size": 3,
"total": 1,
"items": [
{
"task_id": 3209,
"song_id": "56cbd0bb-0e8c-4a34-8729-55d5c05d9c53",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "completed",
"type": "enhanced_upload",
"audio_url": "https://media.code-go.com/assets/56cbd0bb-0e8c-4a34-8729-55d5c05d9c53-mp3.mp3",
"duration": 217.74,
"progress": {
"stage": "completed",
"percent": 100,
"label": "已完成",
"updated_at": 1781138943
},
"pre_consumed_quota": 5000000,
"billing_source": "wallet",
"created_at": 1781137961,
"updated_at": 1781138943,
"completed_at": 1781138943
}
]
}
}
Penjelasan kolom respons
| Kolom | Tipe | Catatan |
|---|---|---|
| task_id | number | ID tugas unggahan yang disempurnakan; dipakai untuk kueri dan pembatalan berikutnya |
| song_id | string | pending:enhanced-upload:* saat diproses; ID lagu asli setelah selesai |
| client_request_id | string | ID pelacakan permintaan klien |
| status | string | Status tugas, seperti queued, processing, completed, failed, cancelled |
| type | string | Selalu enhanced_upload |
| audio_url | string | Alamat audio setelah selesai |
| duration | number | Durasi audio dalam detik |
| progress.stage | string | Tahap pemrosesan saat ini |
| progress.percent | number | Persentase kemajuan |
| progress.label | string | Teks kemajuan yang ditampilkan ke pengguna |
| pre_consumed_quota | number | Kuota yang ditagih di muka untuk panggilan ini |
| billing_source | string | Sumber penagihan, misalnya wallet |
| error_message | string | Alasan kegagalan |
Catatan
- Saat ini endpoint hanya mendukung unggahan berkas multipart;
file_urldanfile_base64dalam JSON tidak didukung. - Berkas yang diunggah maksimal 80 MB.
- Endpoint kirim bersifat asinkron: respons
queuedberarti tugas sudah masuk antrean, bukan berarti audionya sudah selesai. - Pembatalan hanya berlaku untuk tugas yang belum mulai diproses; setelah pemrosesan dimulai, alur akun platform tidak dihentikan.
- Jangan mengekspos API Key asli di kode klien.
Memulai cover setelah unggahan yang disempurnakan selesai
Setelah unggahan yang disempurnakan selesai, Anda bisa memakai hasilnya sebagai clip sumber dan memanggil POST /api/music/generate-from-source untuk memulai cover.
Perhatian: cover adalah endpoint sinkron — pesanan baru diterima saat respons tiba, dan menurut pengukuran bisa menunggu hingga sekitar 230 detik. Setel timeout klien 300 detik atau lebih dan jangan mencoba ulang langsung setelah timeout. Lihat "Waktu tunggu dan pengaturan timeout" di Ringkasan API baru.
Pertama, polling GET /api/music/enhanced-upload/:id sampai task.status bernilai completed. Saat itu:
task.song_idadalah ID lagu asli dan sekaligussourceClipIdyang dibutuhkan endpoint cover;- sebaiknya kirim
task.audio_urlsebagaisourceAudioUrl, agar server bisa menangani kasus clip sumber dan akun pelaksana berbeda; task.task_idhanya ID tugas unggahan yang disempurnakan dan tidak bisa dipakai sebagaisourceClipId;pending:enhanced-upload:*adalah ID pengganti tahap pemrosesan dan tidak bisa dipakai untuk cover.
Saat memulai cover, gunakan API Key yang sama seperti unggahan yang disempurnakan dan susun permintaan sesuai pemetaan kolom berikut.
| Kolom permintaan cover | Sumber nilainya |
|---|---|
sourceClipId |
task.song_id dari hasil unggahan yang disempurnakan yang sudah selesai |
sourceAudioUrl |
task.audio_url dari hasil unggahan yang disempurnakan yang sudah selesai |
sourceTitle |
task.title dari hasil unggahan yang disempurnakan yang sudah selesai |
Isi parameter lainnya (lirik, gaya, judul, model) sesuai API cover dari clip sumber. Setelah endpoint cover mengembalikan clips[].song_id baru, gunakan POST /api/music/query untuk memeriksa status pembuatan dan audio akhirnya.
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