API pełnego utworu (Get Full Song)
Opis punktu końcowego
Łączenie w pełny utwór zestawia «utwór źródłowy + nowo wygenerowany fragment» w jeden kompletny utwór: po Extend dołącza kolejną część, a po Replace Section wszywa nowy fragment z powrotem w oryginał. Oficjalny interfejs webowy nazywa tę możliwość Get Full Song.
Punkt końcowy: POST /api/music/concat
Rozliczenie: Płatne, stała opłata 0,05 CNY za wywołanie. Łączenie jest niezależne od ceny generowania i nie uczestniczy w Max Mode ani w mnożnikach profilu głosu; faktycznie pobrana kwota zależy od konfiguracji cen w panelu administracyjnym.
Czasy oczekiwania i limity czasu (ważne): to punkt końcowy synchroniczny — zamówienie zostaje przyjęte i przekazane do łączenia dopiero, gdy przyjdzie odpowiedź. Ustaw limit czasu klienta na 300 sekund lub więcej; brak odpowiedzi nie oznacza, że nic nie zostało połączone, 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.
Uwierzytelnianie
| Parametr | Typ | Wymagany | Uwagi |
|---|---|---|---|
| Authorization | string | tak | Bearer YOUR_API_KEY |
| Content-Type | string | tak | application/json |
Parametry żądania
| Parametr | Typ | Wymagany | Domyślnie | Uwagi |
|---|---|---|---|---|
| song_id | string | tak | - | Identyfikator song_id fragmentu do połączenia (wynik Extend lub Replace Section); musi być ukończony |
| is_infill | boolean | nie | false | false = łączenie przedłużenia; true = łączenie zamiany (infill) |
| source_audio_url | string | nie | - | Adres dźwięku źródłowego, gdy fragment pochodzi z zewnętrznego konta |
| source_file_name | string | nie | - | Nazwa pliku źródłowego, gdy fragment pochodzi z zewnętrznego konta |
| source_title | string | nie | - | Tytuł źródłowy, gdy fragment pochodzi z zewnętrznego konta |
audio_id, source_clip_id i sourceClipId to równoważne zapisy song_id; użyj jednego z nich.
Przykład żądania
curl -X POST https://www.suno-api.io/api/music/concat \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_id": "extended_or_replaced_clip_id",
"is_infill": false
}'
Aby połączyć po zamianie fragmentu, ustaw is_infill na true:
{ "song_id": "infilled_clip_id", "is_infill": true }
Odpowiedź
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "concat_clip_id",
"song_title": "Tytuł utworu źródłowego",
"status": "queued"
}
]
}
}
Łączenie zwraca tylko 1 wynik (nie tworzy od razu 2 utworów). Zapisz clips[].song_id i odpytuj API zapytań o utwory i historii aż do stanu complete, zanim pobierzesz dźwięk.
Skąd bierze się długość wyniku
Łączenie nie skleja po prostu dwóch plików jeden za drugim; przycina utwór źródłowy według punktów czasu zapisanych w historii fragmentu:
| Tryb | Skład wyniku |
|---|---|
is_infill: false |
utwór źródłowy [0 .. continue_at] + pełna długość fragmentu przedłużenia |
is_infill: true |
utwór źródłowy [0 .. początek] + nowy zamieniony fragment + utwór źródłowy [koniec .. koniec ścieżki] |
Dźwięk oryginalny po punkcie kontynuacji jest więc odrzucany, dzięki czemu żadna część nie powtarza się w całości.
Uwagi
- Łączyć można tylko ukończone fragmenty; jeśli fragment wciąż się generuje, poczekaj na jego zakończenie.
- Wynik to nowy rekord; fragment oryginalny pozostaje i nadal można go używać.
- Aby połączyć dwa różne utwory w jeden, użyj API mashupu; aby zachować tylko jeden fragment, użyj API przycinania.
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