API pengklonan suara dan penjanaan dengan suara yang ditetapkan (tidak disyorkan)

Dikemas kini 2026-09-18 · pasukan Suno-API

⛔ Laluan lama, tidak disyorkan untuk integrasi baharu. Halaman ini menerangkan laluan persona awal (voice_task_id / generate-with-voice). Ia masih berfungsi, tetapi tidak lagi disyorkan kepada pelanggan; menu di kiri menandakannya sebagai "tidak disyorkan".

Untuk integrasi baharu gunakan 【Disyorkan】 API profil suara: bina profil suara daripada satu sampel vokal (POST /api/music/voice-profile/create), kemudian gunakannya untuk membuat kover lagu tertentu atau menyanyikan lagu baharu. Profil suara ialah sumber kelas pertama: boleh disenaraikan, diambil dan dipadam, serta audio sumbernya disimpan secara kekal.

Jika produk anda memerlukan kitaran lengkap "bina suara → guna semula jangka panjang → kover", utamakan laluan baharu.

Penting: suara yang diklon boleh luput.

voice_id / voice_task_id yang dihasilkan oleh pengklonan suara bukan sumber yang boleh digunakan selama-lamanya: ia boleh berhenti berfungsi kerana tempoh sah, keadaan akaun atau perubahan keadaan suara. Pihak yang berintegrasi tidak boleh mengklon sekali kemudian menggunakan semula ID suara yang di-cache secara tempatan selama-lamanya.

Amalan yang disyorkan:

  • Simpan voice_task_id, voice_id, is_available, updated_at dan masa penjanaan berjaya yang terakhir.
  • Sebelum setiap penjanaan dengan suara yang diklon, panggil GET /api/voice/clone/tasks/{voice_task_id} atau POST /api/voice/clone/tasks/{voice_task_id}/check dan pastikan is_available=true.
  • Jika endpoint memulangkan bahawa suara tidak tersedia, tugasan tidak wujud atau selected voice is not ready, minta pengguna mengklon semula atau memilih suara lain yang tersedia.
  • Jangan berjanji kepada pengguna akhir bahawa suara yang diklon ialah "aset kekal"; tunjukkan dalam antara muka produk bahawa "suara boleh luput dan perlu disahkan semula atau diklon semula".

Penerangan endpoint

Kumpulan endpoint ini membina suara yang boleh diguna semula dan menjana lagu dengannya. Pemanggil hanya memerlukan API Key yang dikeluarkan platform; pelayan mengendalikan penghantaran tugasan, penyegerakan status, pengebilan dan muat turun.

Pengesahan: Authorization: Bearer YOUR_API_KEY

Pengebilan:

Aliran panggilan

  1. Panggil POST /api/voice/clone/validate untuk memuat naik suara sumber dan mendapat voice_task_id.
  2. Tunggu atau tinjau GET /api/voice/clone/tasks/{voice_task_id} sehingga mendapat validate_info.
  3. Pengguna membaca teks itu dengan kuat dan merakam audio pengesahan.
  4. Panggil POST /api/voice/clone/tasks/{voice_task_id}/generate untuk menghantar audio pengesahan.
  5. Panggil POST /api/voice/clone/tasks/{voice_task_id}/check atau terus pertanyaan tugasan sehingga is_available=true.
  6. Panggil POST /api/music/generate-with-voice untuk menjana lagu dengan suara itu.
  7. Endpoint penjanaan memulangkan tugasan pemegang tempat dahulu; apabila penjanaan selesai dan anda mendapat song_id sebenar, gunakan endpoint muat turun untuk mendapatkan satu fail atau satu pakej.
  8. (Pilihan) Apabila suara tidak diperlukan lagi, panggil DELETE /api/voice/clone/voices/{voice_task_id} untuk memadamnya; semantiknya dalam bahagian 6.

Terdapat juga pengklonan satu langkah: pada halaman rakaman/muat naik suara sumber yang pertama dalam ruang kerja, anda boleh memilih selesai dalam satu langkah; sistem menyelesaikan pengesahan dan pembinaan suara sekali gus, jadi anda tidak perlu merakam audio pengesahan kedua; kosnya 5 ¥ setiap panggilan dan dipulangkan jika gagal.

Medan tugasan suara

Medan Jenis Penerangan
voice_task_id number ID tugasan suara dalam platform; semua endpoint berikutnya menggunakan ID ini
voice_id string ID suara yang boleh digunakan untuk menjana lagu; dipulangkan apabila tugasan boleh digunakan
voice_name string Nama suara
description string Penerangan suara
style string Gaya suara
singer_skill_level string Tahap vokal; nilai biasa: beginner, intermediate, professional
language string Bahasa suara sumber, contohnya zh, en
validate_info string Teks pengesahan yang perlu dibaca dengan kuat
validate_status string Status tugasan pengesahan
voice_status string Status pembinaan suara
is_available boolean Sama ada sudah boleh digunakan untuk menjana lagu
status string Status tugasan pada platform
stage string Peringkat semasa
error_code string Kod ralat apabila gagal
error_message string Punca kegagalan
source_duration_seconds number Tempoh audio sumber dalam saat
created_at number Cap masa penciptaan
updated_at number Cap masa pengemaskinian
completed_at number Cap masa penyiapan

1. Hantar suara sumber untuk pengesahan

Endpoint: POST /api/voice/clone/validate

Parameter body

Parameter Jenis Wajib Lalai Penerangan
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 fail; disyorkan apabila menggunakan file_base64
voice_name string Tidak dijana automatik Nama suara
description string Tidak - Penerangan suara
style string Tidak - Gaya suara
singer_skill_level string Tidak beginner Tahap vokal
language string Tidak zh Bahasa suara sumber
vocal_start_s number Ya - Saat mula vokal yang boleh digunakan
vocal_end_s number Ya - Saat akhir vokal yang boleh digunakan
source_duration_seconds number Tidak - Jumlah tempoh audio sumber dalam saat

vocal_end_s - vocal_start_s mesti memenuhi syarat minimum segmen vokal. Muat naik rakaman vokal yang bersih, tanpa iringan atau bunyi bising yang jelas.

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 semula jadi",
    "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. Pertanyaan tugasan 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": "Baca dengan kuat teks pengesahan yang dipulangkan di sini",
      "validate_status": "success",
      "is_available": false,
      "status": "validate_ready",
      "stage": "validate_callback"
    }
  }
}

3. Jana semula teks pengesahan

Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/regenerate

Panggil apabila teks pengesahan tidak sesuai untuk dibaca dengan kuat atau pengesahan 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. Hantar audio pengesahan dan bina suara

Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/generate

Parameter body

Parameter Jenis Wajib Lalai Penerangan
verify_url string Tidak - URL audio yang dibaca daripada teks pengesahan. Ini atau file_base64
file_base64 string Tidak - Audio pengesahan dalam base64. Ini atau verify_url
file_name string Tidak - Nama fail; disyorkan apabila menggunakan file_base64
voice_name string Tidak nama tugasan Nama suara
description string Tidak penerangan tugasan Penerangan suara
style string Tidak gaya tugasan Gaya suara
singer_skill_level string Tidak tetapan tugasan Tahap 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 sama ada suara boleh digunakan

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 '{}'

Apabila tugasan boleh digunakan, is_available dalam respons ialah true dan voice_id dipulangkan.

6. Padam suara

Endpoint: DELETE /api/voice/clone/voices/{voice_task_id}

Pengebilan: percuma.

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
  }
}
Medan Jenis Penerangan
voice_task_id number ID tugasan suara yang dipadam
deleted boolean Sentiasa true; permintaan pemadaman telah diterima

Apa yang berlaku selepas pemadaman

7. Jana lagu dengan suara yang diklon

Endpoint: POST /api/music/generate-with-voice

Pengebilan: 1.2 ¥ setiap panggilan.

Parameter body

Parameter Jenis Wajib Lalai Penerangan
voice_task_id number Ya - ID tugasan suara yang sudah boleh digunakan
voice_id string Tidak - Medan pengesahan pilihan; jika dihantar ia mesti sepadan dengan voice_id pada tugasan
customMode boolean Tidak false false ialah mod ilham, true ialah mod lanjutan
prompt string Ya - Dalam mod ilham ialah penerangan lagu, dalam mod lanjutan ialah lirik. Kedua-duanya tidak boleh kosong
style string Ya dalam mod lanjutan - Tag gaya; tidak boleh kosong apabila customMode=true
title string Ya dalam mod lanjutan - Tajuk lagu; tidak boleh kosong apabila customMode=true
negativeTags string Tidak - Gaya yang dikecualikan
instrumental boolean Tidak false Medan keserasian; penjanaan dengan suara yang diklon sentiasa dianggap lagu bervokal
waitAudio boolean Tidak false Medan keserasian; endpoint ini sentiasa memulangkan tugasan pemegang tempat secara tak segerak dan tidak menunggu audio
model string Tidak suno-v6 Model penjanaan lagu biasa; boleh guna suno-v6, suno-v6-wild atau suno-v6-mini
vocalGender string Tidak - Keutamaan jantina vokal
lyricsMode string Tidak - Medan keserasian; laluan penghantaran suara yang diklon semasa tidak mengubah mod lirik sendiri
weirdnessConstraint number Tidak - Kekuatan kreativiti
styleWeight number Tidak - Pemberat gaya
audioWeight number Tidak lalai platform Audio Influence (sejauh mana audio rujukan diambil kira), julat 0.0-1.0. Jika tidak dihantar, lalai platform digunakan (bersamaan 25% dalam antara muka rasmi); 0 ialah nilai sah yang bermaksud tidak condong sama sekali kepada rujukan. Medan ini berkait rapat dengan sourceClipId pada baris berikutnya: dengan sumber ia menunjuk kepada audio rujukan, tanpa sumber ia menunjuk kepada suara yang diklon; platform hanya mempunyai satu slider ini untuk kedua-dua kes, jadi jangan pecahkannya kepada dua parameter mengikut kes penggunaan
sourceClipId string Tidak - ID klip sebenar dalam ruang kerja bagi lagu sumber. Jika dihantar, anda masuk ke kover dengan suara yang diklon; jika tidak, ia penjanaan biasa dengan suara yang diklon
sourceAudioUrl string Tidak - Medan paparan sumber; ia tidak terlibat dalam pemilikan atau keputusan akaun, pelayan berpandukan rekod pangkalan datanya
sourceTitle string Tidak - Medan paparan sumber; ia tidak terlibat dalam pemilikan atau keputusan akaun
clientSubmissionId string Tidak - Medan keserasian Create UI; untuk penyahduaan yang boleh dipercayai dalam API pelanggan, header Idempotency-Key mesti digunakan

suno-v6, suno-v6-wild dan suno-v6-mini disokong; model kosong dianggap suno-v6. Model lama V5/V5.5 telah dihentikan, tetapi tugasan sejarah mungkin masih memaparkan nama model lama.

Struktur permintaan bersama juga mentafsir medan keserasian Create UI seperti task, soundType, soundLoop, soundBpm, soundKey, voiceTaskId dan voiceId, tetapi ia bukan parameter pelanggan yang sah untuk endpoint ini: tugasan suara mesti dihantar sebagai voice_task_id, pengesahan suara pilihan sebagai voice_id, dan penjanaan muzik dengan suara tidak pernah membaca medan sound.

Cara mengisi parameter penjanaan

Parameter header

Header Wajib Penerangan
Authorization: Bearer ... Ya Token API pelanggan
Content-Type: application/json Ya Body permintaan JSON
Idempotency-Key Tidak, sangat disyorkan Maksimum 128 aksara. Dengan pengguna, token, endpoint, kunci dan body yang sama, pengebilan dan penciptaan tugasan berlaku sekali sahaja

Tingkah laku Idempotency-Key:

Syarat kover dengan sourceClipId

Kover daripada sumber dalam API pelanggan dikendalikan sepenuhnya di pihak pelayan: akses kepada lagu sumber diselesaikan oleh pelayan dan pelanggan tidak menghantar sebarang maklumat akaun. Boleh atau tidak ditentukan oleh respons sebenar endpoint.

Sumber mesti milik pengguna API semasa, lagu ruang kerja yang telah siap dan bukan pending:, serta mempunyai audio yang boleh digunakan. Disokong penjanaan biasa, sumber muat naik biasa dan lagu akhir muat naik diperkukuh; rekod pertengahan muat naik diperkukuh ditolak sebelum pengebilan. Pelayan hanya menerima ID lagu sumber yang dihantar pelanggan dan tidak pernah menerima ID akaun; sumber yang tidak tersedia atau belum siap memulangkan ralat sebelum pengebilan.

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": "Bayu 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": "Bayu 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": "Bayu laut malam musim panas",
        "prompt": "Tulis lagu pop Mandarin tentang tepi laut pada malam musim panas"
      }
    ],
    "pre_consumed_quota": 600000,
    "billing_source": "wallet"
  }
}

Tentang tugasan pemegang tempat dan song_id akhir

generate-with-voice ialah endpoint penjanaan tak segerak. Respons berjaya hanya bermakna tugasan penjanaan telah dihantar, bukan bahawa lagu sudah siap.

Maksud medan utama dalam respons:

Medan Penerangan
client_request_id ID penjejakan permintaan penjanaan ini. Satu permintaan biasanya menjana 2 lagu dan kedua-dua hasil menggunakan client_request_id yang sama.
items[].placeholder_id ID pemegang tempat tempatan platform, biasanya dalam bentuk pending:{client_request_id}:{index}. Ia bukan ID lagu akhir.
items[].client_request_index Indeks hasil dalam permintaan yang sama, biasanya 0 dan 1.
items[].status Status awal selepas penghantaran, contohnya submitted. Kejayaan atau kegagalan seterusnya mengikut rekod tugasan akhir.

Perhatian: placeholder_id yang bermula dengan pending: tidak boleh digunakan sebagai song_id akhir dan tidak boleh dihantar terus ke /api/music/query atau endpoint muat turun. Memanggil /api/music/query hanya dengan nilai pending:* mungkin memulangkan tatasusunan kosong [], kerana lagu sebenar belum siap atau tugasan pemegang tempat belum digantikan dengan ID lagu akhir.

Contoh salah:

{
  "song_ids": "pending:cu_1780480000_abcd1234:0"
}

Aliran betul:

  1. Panggil POST /api/music/generate-with-voice untuk menghantar tugasan penjanaan muzik dengan suara.
  2. Simpan client_request_id, items[].placeholder_id dan items[].client_request_index daripada respons.
  3. Tinjau GET /api/music/generate-with-voice/results?client_request_id=cu_xxx.
  4. Apabila items[].song_id mempunyai nilai dan tidak bermula dengan pending:, panggil /api/music/query, /api/music/download-file atau /api/music/download-all.

Versi semasa menambah endpoint pertanyaan awam:

GET /api/music/generate-with-voice/results?client_request_id=cu_xxx

Ia memulangkan hasil tugasan bagi client_request_id yang sama di bawah pengguna semasa, supaya pelanggan boleh mencari song_id akhir sendiri. Dalam senarai yang dipulangkan:

Jika anda hanya menyimpan client_request_id atau ID pemegang tempat pending:*, panggil endpoint hasil ini dahulu; jika song_id sebenar masih tidak dijumpai, hantar client_request_id kepada sokongan teknikal untuk dikesan.

Pertanyaan hasil penjanaan muzik dengan suara

Endpoint: GET /api/music/generate-with-voice/results

Pengebilan: percuma.

Parameter query

Parameter Jenis Wajib Penerangan
client_request_id string Ya ID penjejakan yang dipulangkan oleh 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 semasa dijana

{
  "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": "Bayu laut malam musim panas"
      }
    ]
  }
}

Contoh respons selepas 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": "Bayu laut malam musim panas",
        "audio_url": "https://...",
        "image_url": "https://...",
        "duration": 180.5
      }
    ]
  }
}

Maksud status peringkat atas

Status Penerangan
not_found Bagi pengguna semasa belum ada rekod tugasan dengan client_request_id itu
processing Sekurang-kurangnya satu hasil belum siap; teruskan tinjauan
completed Semua hasil sudah siap; song_id boleh ditanya atau dimuat turun
partial Sebahagian siap, sebahagian gagal; tangani song_id yang siap dahulu
failed Semua hasil gagal; lihat items[].error_message

8. Muat turun satu fail

Endpoint: POST /api/music/download-file

Parameter body

Parameter Jenis Wajib Penerangan
song_id string Ya ID lagu
kind string Ya Jenis muat turun: 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 ialah strim fail; Content-Type dan nama fail mengikut apa yang dipulangkan backend.

9. Muat turun sumber lagu sebagai pakej

Endpoint: POST /api/music/download-all

Parameter body

Parameter Jenis Wajib Penerangan
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

Pakej biasanya mengandungi audio, kulit album dan metadata.json; jika sesuatu jenis sumber belum dijana, ia tidak dimasukkan ke dalam arkib.

Ralat biasa

message Penerangan
voice audio is required Semasa menghantar suara sumber, voice_url mahupun file_base64 tidak diberikan
invalid voice task id ID tugasan suara dalam laluan tidak sah
voice validation is not ready Teks pengesahan belum tersedia, jadi audio pengesahan tidak boleh dihantar
selected voice is not ready Suara yang dipilih belum boleh menjana lagu (belum sedia, telah dipadam, atau bukan milik akaun semasa)
selected voice does not match voice task voice_id dalam permintaan tidak sepadan dengan tugasan
voice task is required voice_task_id tiada semasa menjana lagu dengan suara
record not found Tugasan / lagu tidak wujud, bukan milik akaun API Key semasa, atau sudah dipadam (menanyakan tugasan ini selepas suara dipadam akan menunjukkan perkara yang sama)

Ralat kumpulan ini sentiasa memulangkan HTTP 200: nilai kejayaan daripada medan success dalam body (false bermaksud gagal, puncanya dalam message) dan jangan hanya melihat kod status HTTP. Semantik penuh pemadaman suara (sama ada masih boleh digunakan, sama ada boleh dipulihkan) ada dalam bahagian 6.

Seterusnya【Disyorkan】 API profil suara

Dapatkan kunci API

Cipta kunci API dalam konsol selepas mendaftar. Setiap penjanaan berharga 0.6 ¥ dan mengembalikan 2 lagu, muat turun tanpa had dan nombor telefon tidak diperlukan.

Dapatkan kunci API Kembali ke gambaran