Ses klonlama ve belirtilen sesle üretim API'si (önerilmez)

2026-09-18 tarihinde güncellendi · Suno-API ekibi

⛔ Eski yol, yeni entegrasyonlar için önerilmez. Bu sayfa ilk dönem persona yolunu (voice_task_id / generate-with-voice) anlatır. Hâlâ çalışır, ancak müşterilere artık önerilmez; soldaki menüde "önerilmez" olarak işaretlenmiştir.

Yeni entegrasyonlar için 【Önerilir】 Ses profili API'sini kullanın: tek bir vokal örneğinden ses profili oluşturun (POST /api/music/voice-profile/create) ve bu profille seçtiğiniz şarkıyı cover'layın ya da yeni bir şarkı söyletin. Ses profili birinci sınıf bir kaynaktır: listelenebilir, sorgulanabilir ve silinebilir; kaynak ses kalıcı olarak saklanır.

Ürününüzün "ses oluştur → uzun süre yeniden kullan → cover'la" döngüsünün tamamına ihtiyacı varsa yeni yolu tercih edin.

Önemli: klonlanan ses süresi dolabilir.

Ses klonlamanın ürettiği voice_id / voice_task_id kalıcı olarak kullanılabilen bir kaynak değildir; geçerlilik süresi, hesap durumu veya ses durumundaki değişiklikler nedeniyle çalışmayı bırakabilir. Entegrasyon yapan taraf, bir kez klonlayıp yerel önbellekteki ses kimliğini sonsuza kadar yeniden kullanmamalıdır.

Önerilen yaklaşım:

  • voice_task_id, voice_id, is_available, updated_at ve son başarılı üretim zamanını saklayın.
  • Klonlanmış sesle üretim yapmadan önce her seferinde GET /api/voice/clone/tasks/{voice_task_id} veya POST /api/voice/clone/tasks/{voice_task_id}/check çağırıp is_available=true olduğunu doğrulayın.
  • Uç nokta sesin kullanılamadığını, görevin bulunmadığını veya selected voice is not ready döndürürse kullanıcıdan yeniden klonlamasını ya da başka bir kullanılabilir ses seçmesini isteyin.
  • Son kullanıcıya klonlanan sesin "kalıcı bir varlık" olduğunu vaat etmeyin; ürün arayüzünde "ses süresi dolabilir, yeniden doğrulama veya yeniden klonlama gerekebilir" bilgisini gösterin.

Uç nokta açıklaması

Bu uç nokta grubu yeniden kullanılabilir bir ses oluşturur ve o sesle şarkı üretir. Çağıran taraf yalnızca platformun verdiği API anahtarını kullanır; görev gönderimi, durum eşitleme, faturalama ve indirme sunucu tarafında yürütülür.

Kimlik doğrulama: Authorization: Bearer YOUR_API_KEY

Faturalama:

Çağrı akışı

  1. POST /api/voice/clone/validate çağırıp kaynak sesi yükleyin ve voice_task_id alın.
  2. GET /api/voice/clone/tasks/{voice_task_id} çağrısını bekleyin veya yoklayın, validate_info bilgisini alın.
  3. Kullanıcı bu metni yüksek sesle okur ve doğrulama sesini kaydeder.
  4. POST /api/voice/clone/tasks/{voice_task_id}/generate çağırıp doğrulama sesini gönderin.
  5. POST /api/voice/clone/tasks/{voice_task_id}/check çağırın veya görevi sorgulamaya devam edip is_available=true olana kadar bekleyin.
  6. POST /api/music/generate-with-voice çağırıp bu sesle şarkı üretin.
  7. Üretim uç noktası önce yer tutucu görevleri döndürür; üretim tamamlanıp gerçek song_id alındığında indirme uç noktalarıyla tek dosya veya paket indirebilirsiniz.
  8. (İsteğe bağlı) Ses artık gerekmediğinde DELETE /api/voice/clone/voices/{voice_task_id} çağırıp silin; anlamı 6. bölümde.

Ayrıca tek adımda klonlama vardır: çalışma alanındaki ilk kayıt/kaynak ses yükleme sayfasında tek seferde tamamlamayı seçebilirsiniz; sistem doğrulama ile ses oluşturmayı birlikte yapar, böylece ikinci bir doğrulama sesi kaydetmeniz gerekmez; çağrı başına 5 ¥ olup hata durumunda iade edilir.

Ses görevi alanları

Alan Tür Açıklama
voice_task_id number Platform içindeki ses görevi kimliği; sonraki tüm uç noktalar bu kimliği kullanır
voice_id string Şarkı üretmek için kullanılabilen ses kimliği; görev kullanılabilir olduğunda döner
voice_name string Ses adı
description string Ses açıklaması
style string Ses stili
singer_skill_level string Vokal seviyesi; yaygın değerler: beginner, intermediate, professional
language string Kaynak sesin dili, örneğin zh, en
validate_info string Yüksek sesle okunması gereken doğrulama metni
validate_status string Doğrulama görevinin durumu
voice_status string Ses oluşturma durumu
is_available boolean Şarkı üretmek için kullanılabilir olup olmadığı
status string Platformdaki görev durumu
stage string Geçerli aşama
error_code string Hata durumunda hata kodu
error_message string Hata nedeni
source_duration_seconds number Kaynak ses süresi, saniye
created_at number Oluşturma zaman damgası
updated_at number Güncelleme zaman damgası
completed_at number Tamamlanma zaman damgası

1. Kaynak sesi doğrulamaya gönderin

Uç nokta: POST /api/voice/clone/validate

Gövde parametreleri

Parametre Tür Zorunlu Varsayılan Açıklama
voice_url string Hayır - Kaynak sesin ses dosyası URL'si. Bu ya da file_base64
file_base64 string Hayır - Base64 ses. Bu ya da voice_url
file_name string Hayır - Dosya adı; file_base64 kullanırken önerilir
voice_name string Hayır otomatik oluşturulur Ses adı
description string Hayır - Ses açıklaması
style string Hayır - Ses stili
singer_skill_level string Hayır beginner Vokal seviyesi
language string Hayır zh Kaynak sesin dili
vocal_start_s number Evet - Kullanılabilir vokalin başlangıç saniyesi
vocal_end_s number Evet - Kullanılabilir vokalin bitiş saniyesi
source_duration_seconds number Hayır - Kaynak sesin toplam süresi, saniye

vocal_end_s - vocal_start_s en kısa vokal parçası koşulunu sağlamalıdır. Belirgin eşlik ve gürültü içermeyen temiz bir vokal kaydı yükleyin.

İstek örneği

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": "Çince kadın sesim",
    "description": "Net ve doğal Çince kadın sesi",
    "style": "Mandopop",
    "singer_skill_level": "intermediate",
    "language": "zh",
    "vocal_start_s": 1.2,
    "vocal_end_s": 18.5,
    "source_duration_seconds": 20
  }'

Yanıt örneği

{
  "success": true,
  "message": "",
  "data": {
    "voice": {
      "voice_task_id": 123,
      "voice_name": "Çince kadın sesim",
      "language": "zh",
      "validate_status": "submitted",
      "is_available": false,
      "status": "validate_submitted",
      "stage": "validate_submitted",
      "created_at": 1780480000,
      "updated_at": 1780480000
    }
  }
}

2. Ses görevini sorgulayın

Uç nokta: GET /api/voice/clone/tasks/{voice_task_id}

İstek örneği

curl https://www.suno-api.io/api/voice/clone/tasks/123 \
  -H "Authorization: Bearer YOUR_API_KEY"

Yanıt örneği

{
  "success": true,
  "message": "",
  "data": {
    "voice": {
      "voice_task_id": 123,
      "voice_name": "Çince kadın sesim",
      "validate_info": "Burada dönen doğrulama metnini yüksek sesle okuyun",
      "validate_status": "success",
      "is_available": false,
      "status": "validate_ready",
      "stage": "validate_callback"
    }
  }
}

3. Doğrulama metnini yeniden oluşturun

Uç nokta: POST /api/voice/clone/tasks/{voice_task_id}/regenerate

Doğrulama metni yüksek sesle okumaya uygun değilse veya doğrulamanın yeniden yapılması gerekiyorsa çağırın.

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. Doğrulama sesini gönderin ve sesi oluşturun

Uç nokta: POST /api/voice/clone/tasks/{voice_task_id}/generate

Gövde parametreleri

Parametre Tür Zorunlu Varsayılan Açıklama
verify_url string Hayır - Doğrulama metninden okunan sesin URL'si. Bu ya da file_base64
file_base64 string Hayır - Base64 doğrulama sesi. Bu ya da verify_url
file_name string Hayır - Dosya adı; file_base64 kullanırken önerilir
voice_name string Hayır görev adı Ses adı
description string Hayır görev açıklaması Ses açıklaması
style string Hayır görev stili Ses stili
singer_skill_level string Hayır görev ayarı Vokal seviyesi

İstek örneği

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": "Çince kadın sesim"
  }'

5. Sesin kullanılabilir olup olmadığını kontrol edin

Uç nokta: 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 '{}'

Görev kullanılabilir olduğunda yanıttaki is_available değeri true olur ve bir voice_id döner.

6. Sesi silin

Uç nokta: DELETE /api/voice/clone/voices/{voice_task_id}

Faturalama: ücretsiz.

curl -X DELETE https://www.suno-api.io/api/voice/clone/voices/123 \
  -H "Authorization: Bearer YOUR_API_KEY"

Yanıt örneği

{
  "success": true,
  "message": "",
  "data": {
    "voice_task_id": 123,
    "deleted": true
  }
}
Alan Tür Açıklama
voice_task_id number Silinen ses görevinin kimliği
deleted boolean Her zaman true; silme isteğinin kabul edildiğini gösterir

Silme sonrasında ne olur

7. Klonlanmış sesle şarkı üretin

Uç nokta: POST /api/music/generate-with-voice

Faturalama: çağrı başına 1,2 ¥.

Gövde parametreleri

Parametre Tür Zorunlu Varsayılan Açıklama
voice_task_id number Evet - Kullanılabilir durumdaki ses görevinin kimliği
voice_id string Hayır - İsteğe bağlı doğrulama alanı; gönderirseniz görevdeki voice_id ile aynı olmalıdır
customMode boolean Hayır false false ilham modu, true gelişmiş mod
prompt string Evet - İlham modunda şarkı açıklaması, gelişmiş modda şarkı sözleri. İkisi de boş olamaz
style string Gelişmiş modda evet - Stil etiketleri; customMode=true iken boş olamaz
title string Gelişmiş modda evet - Şarkı başlığı; customMode=true iken boş olamaz
negativeTags string Hayır - Hariç tutulacak stil
instrumental boolean Hayır false Uyumluluk alanı; klonlanmış sesle üretim her zaman vokalli şarkı olarak işlenir
waitAudio boolean Hayır false Uyumluluk alanı; bu uç nokta her zaman yer tutucu görevleri eşzamanlı olmayan biçimde döndürür ve sesi beklemez
model string Hayır suno-v6 Normal şarkı üretim modeli; suno-v6, suno-v6-wild veya suno-v6-mini
vocalGender string Hayır - Vokal cinsiyet tercihi
lyricsMode string Hayır - Uyumluluk alanı; mevcut klonlanmış ses gönderim yolu şarkı sözü modunu tek başına değiştirmez
weirdnessConstraint number Hayır - Yaratıcılık gücü
styleWeight number Hayır - Stil ağırlığı
audioWeight number Hayır platform varsayılanı Audio Influence (referans sesin ne kadar önemsendiği), aralık 0.0-1.0. Gönderilmezse platform varsayılanı uygulanır (resmî arayüzde %25'e denk gelir); 0 geçerli bir değerdir ve referansa hiç yaklaşmamak anlamına gelir. Bir sonraki satırdaki sourceClipId ile sıkı biçimde ilişkilidir: kaynak varsa referans sesi, kaynak yoksa klonlanmış sesi işaret eder; platformun iki durum için yalnızca bu tek kaydırıcısı vardır, bu yüzden kullanım durumuna göre iki parametreye ayırmayın
sourceClipId string Hayır - Kaynak şarkının gerçek çalışma alanı clip kimliği. Gönderirseniz klonlanmış sesle cover'a girilir; göndermezseniz normal klonlanmış ses üretimi olur
sourceAudioUrl string Hayır - Kaynağın gösterim alanı; sahiplik veya hesap kararına katılmaz, sunucu veritabanı kaydını esas alır
sourceTitle string Hayır - Kaynağın gösterim alanı; sahiplik veya hesap kararına katılmaz
clientSubmissionId string Hayır - Create UI uyumluluk alanı; müşteri API'sinde güvenilir tekilleştirme için Idempotency-Key başlığı kullanılmalıdır

suno-v6, suno-v6-wild ve suno-v6-mini desteklenir; model boşsa suno-v6 olarak işlenir. Eski V5/V5.5 modelleri kaldırıldı, ancak eski görevlerde hâlâ eski model adları görünebilir.

Paylaşılan istek yapısı ayrıca task, soundType, soundLoop, soundBpm, soundKey, voiceTaskId, voiceId gibi Create UI uyumluluk alanlarını da çözümler, ancak bunlar bu uç noktanın geçerli müşteri parametreleri değildir: ses görevi voice_task_id olarak gönderilmelidir, isteğe bağlı ses doğrulaması voice_id olarak gönderilmelidir ve sesle müzik üretimi sound alanlarını hiçbir zaman okumaz.

Üretim parametrelerini doldurma

Başlık parametreleri

Başlık Zorunlu Açıklama
Authorization: Bearer ... Evet Müşteri API token'ı
Content-Type: application/json Evet JSON istek gövdesi
Idempotency-Key Hayır, kesinlikle önerilir En fazla 128 karakter. Aynı kullanıcı, token, uç nokta, anahtar ve istek gövdesi için yalnızca bir kez faturalanır ve bir görev oluşturulur

Idempotency-Key davranışı:

sourceClipId ile cover koşulları

Müşteri API'sinde kaynaktan cover tamamen sunucu tarafında yürütülür: kaynak şarkıya erişimi sunucu çözer ve müşteri hiçbir hesap bilgisi göndermez. Mümkün olup olmadığını uç noktanın gerçek yanıtı belirler.

Kaynak, geçerli API kullanıcısına ait olmalı, tamamlanmış ve pending: olmayan bir çalışma alanı şarkısı olmalı ve kullanılabilir sesi bulunmalıdır. Normal üretim, normal yükleme kaynakları ve güçlendirilmiş yüklemenin son şarkısı desteklenir; güçlendirilmiş yüklemenin ara kayıtları faturalamadan önce reddedilir. Sunucu yalnızca müşterinin gönderdiği kaynak şarkı kimliğini kabul eder, hesap kimliğini asla; kaynak kullanılamıyor veya tamamlanmamışsa faturalamadan önce hata döner.

İstek örneği

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": "Yaz gecesi deniz kıyısını anlatan bir Çince pop şarkısı yaz",
    "style": "Mandopop, warm piano, emotional",
    "title": "Yaz gecesinde deniz meltemi",
    "negativeTags": "noise, low quality",
    "instrumental": false,
    "model": "suno-v6"
  }'

Yanıt örneği

{
  "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": "Yaz gecesinde deniz meltemi",
        "prompt": "Yaz gecesi deniz kıyısını anlatan bir Çince pop şarkısı yaz"
      },
      {
        "placeholder_id": "pending:cu_1780480000_abcd1234:1",
        "client_request_id": "cu_1780480000_abcd1234",
        "client_request_index": 1,
        "status": "submitted",
        "type": "voice_generate",
        "title": "Yaz gecesinde deniz meltemi",
        "prompt": "Yaz gecesi deniz kıyısını anlatan bir Çince pop şarkısı yaz"
      }
    ],
    "pre_consumed_quota": 600000,
    "billing_source": "wallet"
  }
}

Yer tutucu görevler ve nihai song_id

generate-with-voice eşzamanlı olmayan bir üretim uç noktasıdır. Başarılı yanıt yalnızca üretim görevinin gönderildiğini gösterir, şarkının tamamlandığını göstermez.

Yanıttaki başlıca alanların anlamı:

Alan Açıklama
client_request_id Bu üretim isteğinin izleme kimliği. Bir istek genelde 2 şarkı üretir ve iki sonuç da aynı client_request_id değerini kullanır.
items[].placeholder_id Platforma özel yer tutucu kimliği, genelde pending:{client_request_id}:{index} biçiminde. Nihai şarkı kimliği değildir.
items[].client_request_index Aynı istek içindeki sonuç sırası, genelde 0 ve 1.
items[].status Gönderimden sonraki başlangıç durumu, örneğin submitted. Sonraki başarı veya başarısızlık nihai görev kaydına göre belirlenir.

Dikkat: pending: ile başlayan bir placeholder_id nihai song_id olarak kullanılamaz ve /api/music/query ya da indirme uç noktalarına doğrudan verilemez. Yalnızca pending:* değerleriyle /api/music/query çağırmak boş bir dizi [] döndürebilir; bunun nedeni gerçek şarkının henüz tamamlanmamış olması veya yer tutucu görevin nihai şarkı kimliğiyle değiştirilmemiş olmasıdır.

Yanlış örnek:

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

Doğru akış:

  1. POST /api/music/generate-with-voice çağırıp sesle müzik üretim görevini gönderin.
  2. Yanıttaki client_request_id, items[].placeholder_id ve items[].client_request_index değerlerini saklayın.
  3. GET /api/music/generate-with-voice/results?client_request_id=cu_xxx adresini yoklayın.
  4. Dönen items[].song_id bir değer taşıyıp pending: ile başlamıyorsa /api/music/query, /api/music/download-file veya /api/music/download-all çağırın.

Mevcut sürüm bir herkese açık sorgu uç noktası ekler:

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

Geçerli kullanıcı altındaki aynı client_request_id için görev sonuçlarını döndürür; böylece müşteri nihai song_id değerini kendi sorgulayabilir. Dönen listede:

Yalnızca client_request_id ya da pending:* yer tutucu kimliğini sakladıysanız önce bu sonuç uç noktasını çağırın; gerçek song_id hâlâ bulunamıyorsa client_request_id değerini teknik desteğe göndererek konumlandırma isteyin.

Sesle üretim sonuçlarını sorgulama

Uç nokta: GET /api/music/generate-with-voice/results

Faturalama: ücretsiz.

Sorgu parametreleri

Parametre Tür Zorunlu Açıklama
client_request_id string Evet generate-with-voice tarafından dönen istek izleme kimliği

İstek örneği

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"

Üretim sürerken yanıt örneği

{
  "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": "Yaz gecesinde deniz meltemi"
      }
    ]
  }
}

Üretim tamamlandığında yanıt örneği

{
  "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": "Yaz gecesinde deniz meltemi",
        "audio_url": "https://...",
        "image_url": "https://...",
        "duration": 180.5
      }
    ]
  }
}

En üst düzey status değerleri

Durum Açıklama
not_found Geçerli kullanıcı altında bu client_request_id için henüz görev kaydı yok
processing En az bir sonuç tamamlanmadı; yoklamayı sürdürün
completed Tüm sonuçlar tamamlandı; song_id ile sorgulayabilir veya indirebilirsiniz
partial Bir kısmı tamamlandı, bir kısmı başarısız; önce tamamlanan song_id değerlerini işleyin
failed Tüm sonuçlar başarısız; items[].error_message alanına bakın

8. Tek dosya indirin

Uç nokta: POST /api/music/download-file

Gövde parametreleri

Parametre Tür Zorunlu Açıklama
song_id string Evet Şarkı kimliği
kind string Evet İndirme türü: audio, cover, wav, video

İstek örneği

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

Yanıt bir dosya akışıdır; Content-Type ve dosya adı arka ucun döndürdüğü değerlere göre belirlenir.

9. Şarkı kaynaklarını paket olarak indirin

Uç nokta: POST /api/music/download-all

Gövde parametreleri

Parametre Tür Zorunlu Açıklama
song_id string Evet Şarkı kimliği

İstek örneği

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 genelde sesi, kapağı ve metadata.json dosyasını içerir; henüz üretilmemiş bir kaynak türü arşive girmez.

Sık karşılaşılan hatalar

message Açıklama
voice audio is required Kaynak ses gönderilirken ne voice_url ne de file_base64 verildi
invalid voice task id Yoldaki ses görevi kimliği geçersiz
voice validation is not ready Doğrulama metni henüz alınmadığı için doğrulama sesi gönderilemez
selected voice is not ready Seçilen ses henüz şarkı üretemiyor (hazır değil, silinmiş veya geçerli hesaba ait değil)
selected voice does not match voice task İstekteki voice_id görevle uyuşmuyor
voice task is required Sesle şarkı üretirken voice_task_id eksik
record not found Görev / şarkı yok, geçerli API anahtarının hesabına ait değil veya zaten silinmiş (sesi sildikten sonra bu görevi sorgulamak da aynı sonucu verir)

Bu grubun hataları her zaman HTTP 200 döner: başarıyı gövdedeki success alanına göre değerlendirin (false başarısızlıktır, neden message içindedir) ve yalnızca HTTP durum koduna bakmayın. Ses silmenin tam anlamı (silindikten sonra kullanılabilir mi, geri getirilebilir mi) 6. bölümdedir.

Sonraki【Önerilir】 Ses profili API'si

API anahtarı alın

Kaydolduktan sonra konsoldan bir API anahtarı oluşturun. Her üretim 0,6 ¥ tutarındadır ve 2 parça döner, indirmeler sınırsızdır ve telefon numarası gerekmez.

API anahtarı al Genel bakışa dön