API Uç Noktaları

Bölüm değiştirme

Bölüm Değiştirme API

POST
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_idzorunlustring

Düzenlemek istediğiniz tamamlanmış şarkının /v2/generate veya /v2/extend tarafından döndürülen task_id değeri.

audio_idzorunlustring

Bu 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_szorunlunumber

Bölümün başlangıcı (saniye): 0 veya daha büyük, en fazla iki ondalık basamak.

infill_end_szorunlunumber

Bölümün bitişi (saniye). infill_start_s'den en az 10 saniye sonra olmalı ve şarkının sonunu geçmemelidir.

promptzorunlustring

Bö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ıstring

Bö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ıstring

Sonucun müzik tarzı, en fazla 1000 karakter. Varsayılan olarak orijinal şarkının tarzı.

titleisteğe bağlıstring

Sonucun başlığı, en fazla 80 karakter. Varsayılan olarak orijinal başlık.

full_lyricsisteğe bağlıstring

Düzenlenen şarkının tüm sözleri, en fazla 5000 karakter. Varsayılan olarak orijinal sözler.

callback_urlisteğe bağlıstring

Nihai 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ı

400 · Bölüm 10 saniyeden kısa
{
  "code": 400,
  "message": "The section must be at least 10 seconds long (requested 9.99s)."
}
400 · Bölüm şarkının %50'sinden uzun
{
  "code": 400,
  "message": "The section can cover at most 50% of the song and 480s (max 59.8s for this song, requested 65s)."
}
400 · Bölüm şarkının sonundan sonra bitiyor
{
  "code": 400,
  "message": "\"infill_end_s\" must not exceed the song length (119.6s)."
}
400 · Bilinmeyen veya tamamlanmamış kaynak görev
{
  "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."
}
400 · audio_id göreve ait değil
{
  "code": 400,
  "message": "\"audio_id\" 1234 does not belong to this task. Use one of the song ids returned for \"origin_task_id\"."
}
400 · Yüklenen ses desteklenmiyor
{
  "code": 400,
  "message": "Only songs generated with this API can be edited: send \"origin_task_id\" and \"audio_id\", without \"upload_url\" or \"model\"."
}
402 · Yetersiz kredi
{
  "code": 402,
  "message": "No available credits"
}
401 · Geçersiz API anahtarı
{
  "code": 401,
  "message": "Invalid API key"
}