API coveru na podstawie clipu źródłowego
Opis punktu końcowego
Cover na podstawie clipu źródłowego wykorzystuje ponownie clip źródłowy, który już przesłano lub który już istnieje, i tworzy na jego podstawie nową wersję coveru.
Punkt końcowy: POST /api/music/generate-from-source
Rozliczenie: Płatne, obecnie domyślnie 0,6 ¥ za wywołanie. Samo przesłanie dźwięku źródłowego jest bezpłatne; opłata pojawia się przy generowaniu coveru na podstawie clipu źródłowego. Faktycznie pobierana kwota zależy od bieżącej konfiguracji cen w panelu administracyjnym.
Max Mode / Variety: ten punkt końcowy obsługuje opcjonalne parametry max_mode i variety (0-4). Przy włączonym
max_mode to wywołanie jest rozliczane po podwójnej cenie (0,6 → 1,2 ¥ za wywołanie); variety nie kosztuje
nic dodatkowo. Znaczenie i sposób wysyłania opisano w sekcji „Parametry zaawansowane”
Przeglądu nowego API.
Czasy oczekiwania i limity czasu (ważne): to punkt końcowy synchroniczny — zamówienie zostaje przyjęte i przekazane do generowania dopiero, gdy przyjdzie odpowiedź. Z pomiarów: większość żądań odpowiada w 1-3 sekundy, około 10% przekracza 30 sekund, a najdłuższe trwa około 230 sekund. Ustaw limit czasu klienta na 300 sekund lub więcej; brak odpowiedzi nie oznacza, że nic nie zostało wygenerowane, a ponawianie od razu po limicie czasu duplikuje zamówienie i pobiera opłatę ponownie. Jeśli połączenie się zerwało, sprawdź później przez
GET /api/music/songs. Zobacz „Czasy oczekiwania i ustawienia limitu czasu” w Przeglądzie nowego API.
Zalecane użycie: to krok 2 «coveru dwuetapowego». W kroku 1 prześlij plik przez API przesyłania dźwięku źródłowego (bezpłatnie) i zachowaj
clip_id; w kroku 2 wywołaj ten punkt końcowy, aby rozpocząć cover. Dzięki temu dźwięk pojawia się tylko w bezpłatnym kroku: jeśli przesyłanie się nie powiedzie, wystarczy ponowić próbę i nic nie zostanie pobrane, a treść żądania w płatnym kroku ma tylko kilkaset bajtów, więc raczej nie zawiedzie z powodu przerwanego transferu. API przesyłania i coveru w jednym kroku umieszcza cały dźwięk w treści żądania, więc gdy dźwięk przekracza około 8 MB, łatwo zostaje obcięty w drodze i zwracaunexpected end of JSON input(zobacz „Duże pliki i obcięte żądania” na tej stronie).Dodatkowo ten sam
clip_idmożna wykorzystać ponownie w Extend, Replace Section, rozdzielaniu na ścieżki i innych kolejnych działaniach — nie trzeba przesyłać dźwięku od nowa.
Parametry żądania
Headers
| Parametr | Typ | Wymagany | Uwagi |
|---|---|---|---|
| Authorization | string | tak | Bearer YOUR_API_KEY |
| Content-Type | string | tak | application/json |
Parametry treści
| Parametr | Typ | Wymagany | Domyślnie | Uwagi |
|---|---|---|---|---|
| model | string | nie | suno-v6 | Nazwa modelu dla klienta: suno-v6, suno-v6-wild lub suno-v6-mini |
| sourceClipId | string | tak | - | ID clipu źródłowego; możesz użyć clip_id zwróconego przez przesyłanie dźwięku źródłowego, prawdziwego song_id posiadanego już utworu albo prawdziwego song_id zwróconego po zakończeniu wzmocnionego przesyłania |
| sourceAudioUrl | string | nie | - | URL dźwięku źródłowego |
| sourceTitle | string | nie | - | Tytuł dźwięku źródłowego |
| prompt | string | nie | - | Nowy tekst lub kierunek twórczy |
| customMode | boolean | nie | true | Czy użyć trybu niestandardowego |
| style | string | nie | - | Tagi stylu |
| title | string | nie | - | Tytuł |
| negativeTags | string | nie | - | Styl negatywny |
| instrumental | boolean | nie | false | Czy utwór jest instrumentalny |
| waitAudio | boolean | nie | false | Czy czekać na ukończenie dźwięku |
| vocalGender | string | nie | - | Płeć głosu |
| lyricsMode | string | nie | - | Tryb tekstu |
| weirdnessConstraint | number | nie | - | Losowość |
| styleWeight | number | nie | - | Wpływ stylu |
| audio_weight | number | nie | - | Zależność od dźwięku referencyjnego, zakres 0.0-1.0; można wysłać tylko wtedy, gdy podano clip źródłowy lub dźwięk referencyjny |
weirdnessConstraint, styleWeight i audio_weight przyjmują ułamek dziesiętny od 0.0 do 1.0, a nie liczbę całkowitą procentów; np. 50% zapisuje się jako 0.5. 0 jest poprawną wartością; dopiero pominięcie pola oznacza „nie określono”. audio_weight odpowiada polu metadata.control_sliders.audio_weight w Suno i steruje tym, jak mocno wynik opiera się na dźwięku referencyjnym; można je dołączyć tylko wtedy, gdy żądanie zawiera poprawny sourceClipId lub dźwięk referencyjny, więc nie wysyłaj go przy zwykłym generowaniu z samego tekstu. Przy customMode=true wpisz nowy tekst w prompt i podaj jednocześnie style oraz title; przy customMode=false wpisz w prompt opis twórczy. instrumental i waitAudio muszą używać wartości logicznych JSON true/false.
Ten punkt końcowy domyślnie odpowiada asynchronicznie. Dopóki zwrócony status to pending, pusty audio_url jest normalny; poczekaj na ukończenie, zanim użyjesz adresu dźwięku. sourceClipId musi być prawdziwym ID utworu/clipu źródłowego — nie używaj task_id, client_request_id ani identyfikatora zastępczego pending:.
Czym jest sourceClipId
sourceClipId to prawdziwy identyfikator clipu Suno użytego jako źródło tego coveru. Kliencki obiekt utworu na platformie zwykle nazywa ten identyfikator song_id, natomiast parametry żądania coveru zachowują nazwę sourceClipId; tutaj oba oznaczają to samo prawdziwe ID utworu.
Jeśli źródłem jest wzmocnione przesyłanie, najpierw odczytaj zadanie wzmocnionego przesyłania i poczekaj, aż status zmieni się na completed, a następnie wpisz zwrócony prawdziwy song_id w sourceClipId. Zaleca się też wpisanie audio_url i title tego wyniku odpowiednio w sourceAudioUrl i sourceTitle.
Nie wpisuj w sourceClipId identyfikatora task_id, client_request_id ani zastępczego pending:enhanced-upload:* ze wzmocnionego przesyłania.
Przykład żądania
curl -X POST https://www.suno-api.io/api/music/generate-from-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"sourceClipId": "uploaded_or_existing_clip_id",
"sourceAudioUrl": "https://example.com/source.mp3",
"sourceTitle": "Tytuł oryginalnego dźwięku",
"prompt": "Nowy tekst lub kierunek twórczy",
"customMode": true,
"style": "Mandopop, warm vocal",
"title": "Tytuł coveru",
"negativeTags": "noise",
"audio_weight": 0.5,
"instrumental": false,
"waitAudio": false
}'
Odpowiedź
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "new_clip_id",
"song_title": "Tytuł coveru",
"status": "pending"
}
],
"source_update": {}
}
}
Uwagi
Ten punkt końcowy stara się rozwiązać kwestię tego, do którego konta należy clip źródłowy. Jeśli clipu źródłowego nie da się użyć bezpośrednio, serwer może przesłać go ponownie na podstawie informacji o dźwięku źródłowym, a dopiero potem wygenerować wynik.
Uzyskaj klucz API
Po rejestracji utwórz klucz API w konsoli. Każde generowanie kosztuje 0,6 ¥ i zwraca 2 utwory, pobierania są nieograniczone, a numer telefonu nie jest wymagany.
Pobierz klucz API Powrót do przeglądu