API Uç Noktaları
Bölüm değiştirme
Bölüm Değiştirme API
https://udioapi.pro/api/v2/replace-sectionÖnceden oluşturduğunuz bir şarkının bir bölümünü, örneğin kusurlu birkaç saniyeyi ya da farklı söylenmesini istediğiniz bir dizeyi yeniden oluşturun ve o bölümü yeniden işlenmiş tam şarkıyı geri alın.
Nasıl çalışır
- Tamamlanmış bir şarkıda bir zaman penceresi seçin. Şarkı bu pencerenin çevresinde yeniden işlenir ve müzik üretimiyle aynı görev akışı üzerinden, genellikle iki varyasyon hâlinde tam uzunlukta parçalar olarak döner.
- Yeni bölümün doğal geçiş yapması için pencerenin her iki yanındaki yaklaşık 10 saniye de yeniden işlenir. Bu aralığın dışındaki her şey, yeni ses kodlaması dışında aynı kalır.
- Pencere kuralları, kredi düşülmeden önce kontrol edilir: en az 10 saniye, en fazla şarkının %50'si ve en fazla 480 saniye; infill_end_s şarkı süresini aşamaz.
- lyrics göndermezseniz pencere içinde söylenen sözler, şarkının kelime zaman damgalarından otomatik olarak doldurulur. Farklı sözler istiyorsanız kendiniz gönderin.
- Süresi orijinalden 15 saniyeden fazla farklı olan bir sonuç atılır. Hiç sonuç kalmazsa görev FAILED olarak biter ve kredileriniz iade edilir; pencerenin başlangıcını veya bitişini birkaç saniye kaydırmak genellikle işe yarar.
- İstek başına 5 kredi; istek kabul edildiğinde düşülür. Doğrulamada reddedilen istekler ve başarısız görevler otomatik olarak iade edilir.
- Yalnızca aynı API anahtarıyla /v2/generate veya /v2/extend kullanılarak oluşturulan şarkılar düzenlenebilir. Yüklenen ses ve önceki değiştirme sonuçları kaynak olarak desteklenmez.
Hızlı Başlangıç
{
"origin_task_id": "gen2cd84c4e3ecb94ed6a9137a8f12138ca1bksv",
"audio_id": "24015dc4-1b81-4033-9f41-cf47a3fae958",
"infill_start_s": 70,
"infill_end_s": 85,
"prompt": "Same melody and arrangement, cleaner vocal in this part"
}style, title ve full_lyrics isteğe bağlıdır. Gönderilmediklerinde orijinal şarkının değerleri kullanılır.
Yanıt
{
"code": 200,
"message": "success",
"workId": "rep2a15b5bbc14304ca89fcc7b7eae29c8a7bksv",
"data": {
"task_id": "rep2a15b5bbc14304ca89fcc7b7eae29c8a7bksv"
}
}Dönen workId'yi durum SUCCESS veya FAILED olana kadar 5–10 saniyede bir sorgulayın. Kullanılacak API: Görev Durumu API
Parametreler
Zorunlu parametreler
origin_task_idzorunlustringDüzenlemek istediğiniz tamamlanmış şarkının /v2/generate veya /v2/extend tarafından döndürülen task_id değeri.
audio_idzorunlustringBu görevdeki şarkının id değeri (response_data[].id). Bir görev genellikle iki şarkı döndürür; düzenlenecek olanı seçin.
infill_start_szorunlunumberBölümün başlangıcı (saniye): 0 veya daha büyük, en fazla iki ondalık basamak.
infill_end_szorunlunumberBölümün bitişi (saniye). infill_start_s'den en az 10 saniye sonra olmalı ve şarkının sonunu geçmemelidir.
promptzorunlustringBölümün nasıl değişeceği, en fazla 1000 karakter; örneğin "Same melody and arrangement, cleaner vocal in this part".
İsteğe bağlı parametreler
lyricsisteğe bağlıstringBölüm içinde söylenecek sözler, en fazla 5000 karakter. Varsayılan olarak pencerede şu anda söylenen sözler kullanılır.
styleisteğe bağlıstringSonucun müzik tarzı, en fazla 1000 karakter. Varsayılan olarak orijinal şarkının tarzı.
titleisteğe bağlıstringSonucun başlığı, en fazla 80 karakter. Varsayılan olarak orijinal başlık.
full_lyricsisteğe bağlıstringDüzenlenen şarkının tüm sözleri, en fazla 5000 karakter. Varsayılan olarak orijinal sözler.
callback_urlisteğe bağlıstringNihai sonucu alan herkese açık URL; içerik, görev durumundaki response_data ile aynıdır. Sorgulama bu alan olsa da olmasa da çalışır.
Sonuçlar
Görev başarılı olduğunda response_data yeni tam uzunlukta şarkıları içerir. Her öğenin kendi id, audio_url ve duration değeri vardır. Orijinal süreyi yalnızca bir varyasyon koruduysa yalnızca o döndürülür.
{
"code": 200,
"message": "success",
"data": {
"type": "SUCCESS",
"request_body": {
"origin_task_id": "gen2cd84c4e3ecb94ed6a9137a8f12138ca1bksv",
"audio_id": "24015dc4-1b81-4033-9f41-cf47a3fae958",
"infill_start_s": 70,
"infill_end_s": 85,
"prompt": "Same melody and arrangement, cleaner vocal in this part"
},
"response_data": [
{
"id": "3a8248e4-07b0-4ceb-92b7-34b7615d2552",
"audio_url": "https://…/3a8248e4-07b0-4ceb-92b7-34b7615d2552.mp3",
"image_url": "https://…/3a8248e4-07b0-4ceb-92b7-34b7615d2552.jpeg",
"status": "complete",
"title": "Harbor Lights",
"duration": 119.6,
"model_name": "chirp-v6-mini"
},
{
"id": "eac654a1-5c07-4b6c-896a-59061d323e11",
"audio_url": "https://…/eac654a1-5c07-4b6c-896a-59061d323e11.mp3",
"image_url": "https://…/eac654a1-5c07-4b6c-896a-59061d323e11.jpeg",
"status": "complete",
"title": "Harbor Lights",
"duration": 120.84,
"model_name": "chirp-v6-mini"
}
]
}
}Tüm sonuçlar şarkı süresini değiştirdiyse veya bölüm işlenemediyse görev FAILED olur ve krediler iade edilir:
{
"code": 200,
"message": "success",
"data": {
"type": "FAILED",
"response_data": [
{
"status": "FAILED",
"fail_message": "Generation failed. Your credits have been refunded. The result changed the song length (119.6s -> 225.36s / 224.6s), so it was discarded. Try moving the section start or end by a few seconds.",
"error_message": "Generation failed. Your credits have been refunded. The result changed the song length (119.6s -> 225.36s / 224.6s), so it was discarded. Try moving the section start or end by a few seconds."
},
{
"status": "FAILED",
"fail_message": "Generation failed. Your credits have been refunded. The result changed the song length (119.6s -> 225.36s / 224.6s), so it was discarded. Try moving the section start or end by a few seconds.",
"error_message": "Generation failed. Your credits have been refunded. The result changed the song length (119.6s -> 225.36s / 224.6s), so it was discarded. Try moving the section start or end by a few seconds."
}
]
}
}Kod Örnekleri
cURL
curl -X POST "https://udioapi.pro/api/v2/replace-section" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"origin_task_id": "gen2cd84c4e3ecb94ed6a9137a8f12138ca1bksv",
"audio_id": "24015dc4-1b81-4033-9f41-cf47a3fae958",
"infill_start_s": 70,
"infill_end_s": 85,
"prompt": "Same melody and arrangement, cleaner vocal in this part"
}'JavaScript
const response = await fetch('https://udioapi.pro/api/v2/replace-section', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"origin_task_id": "gen2cd84c4e3ecb94ed6a9137a8f12138ca1bksv",
"audio_id": "24015dc4-1b81-4033-9f41-cf47a3fae958",
"infill_start_s": 70,
"infill_end_s": 85,
"prompt": "Same melody and arrangement, cleaner vocal in this part"
})
});
const { workId } = await response.json();
// Poll https://udioapi.pro/api/v2/feed?workId=... every 5-10 seconds until SUCCESS or FAILED.Python
import requests
response = requests.post(
"https://udioapi.pro/api/v2/replace-section",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"origin_task_id": "gen2cd84c4e3ecb94ed6a9137a8f12138ca1bksv",
"audio_id": "24015dc4-1b81-4033-9f41-cf47a3fae958",
"infill_start_s": 70,
"infill_end_s": 85,
"prompt": "Same melody and arrangement, cleaner vocal in this part"
},
)
work_id = response.json()["workId"]
# Poll https://udioapi.pro/api/v2/feed?workId=... every 5-10 seconds until SUCCESS or FAILED.Hata Yanıtları
{
"code": 400,
"message": "The section must be at least 10 seconds long (requested 9.99s)."
}{
"code": 400,
"message": "The section can cover at most 50% of the song and 480s (max 59.8s for this song, requested 65s)."
}{
"code": 400,
"message": "\"infill_end_s\" must not exceed the song length (119.6s)."
}{
"code": 400,
"message": "The provided \"origin_task_id\" is invalid or could not be found. Use the task_id of a completed song generated with your API key."
}{
"code": 400,
"message": "\"audio_id\" 1234 does not belong to this task. Use one of the song ids returned for \"origin_task_id\"."
}{
"code": 400,
"message": "Only songs generated with this API can be edited: send \"origin_task_id\" and \"audio_id\", without \"upload_url\" or \"model\"."
}{
"code": 402,
"message": "No available credits"
}{
"code": 401,
"message": "Invalid API key"
}