API de piesă completă (Get Full Song)
Descrierea endpoint-ului
Unirea într-o piesă completă alătură «piesa originală + fragmentul nou generat» într-o singură piesă completă: după Extend adaugă secțiunea următoare, iar după Replace Section coase noul fragment înapoi în original. Interfața web oficială numește această funcție Get Full Song.
Endpoint: POST /api/music/concat
Facturare: Cu plată, 0,05 CNY fix per apel. Unirea este decuplată de prețul generării și nu participă la Max Mode sau la multiplicatorii profilului vocal; suma efectiv debitată urmează configurația de prețuri din back-office.
Timpii de așteptare și timeout-urile (important): este un endpoint sincron — comanda este acceptată și transmisă spre unire doar când sosește răspunsul. Setează timeout-ul clientului la 300 de secunde sau mai mult; lipsa unui răspuns nu înseamnă că nu s-a unit nimic, iar reîncercarea imediat după un timeout dublează comanda și debitează din nou. Dacă conexiunea s-a întrerupt, verifică mai târziu cu
GET /api/music/songs.
Autentificare
| Parametru | Tip | Obligatoriu | Observații |
|---|---|---|---|
| Authorization | string | da | Bearer YOUR_API_KEY |
| Content-Type | string | da | application/json |
Parametrii cererii
| Parametru | Tip | Obligatoriu | Implicit | Observații |
|---|---|---|---|---|
| song_id | string | da | - | song_id-ul fragmentului de unit (rezultat Extend sau Replace Section); trebuie să fie finalizat |
| is_infill | boolean | nu | false | false = unire pentru prelungire; true = unire pentru înlocuire (infill) |
| source_audio_url | string | nu | - | Adresa audio-ului sursă, când fragmentul provine dintr-un cont extern |
| source_file_name | string | nu | - | Numele fișierului sursă, când fragmentul provine dintr-un cont extern |
| source_title | string | nu | - | Titlul sursei, când fragmentul provine dintr-un cont extern |
audio_id, source_clip_id și sourceClipId sunt scrieri echivalente ale song_id; folosește una dintre ele.
Exemplu de cerere
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
}'
Pentru a uni după înlocuirea unei secțiuni, setează is_infill la true:
{ "song_id": "infilled_clip_id", "is_infill": true }
Răspuns
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "concat_clip_id",
"song_title": "Titlul piesei sursă",
"status": "queued"
}
]
}
}
Unirea returnează doar 1 rezultat (nu produce 2 piese deodată). Salvează clips[].song_id și interoghează API de interogare a pieselor și de istoric până la complete înainte de a prelua audio-ul.
De unde vine durata rezultatului
Unirea nu lipește pur și simplu două fișiere unul după altul; decupează piesa sursă după punctele de timp consemnate în istoricul fragmentului:
| Mod | Compoziția rezultatului |
|---|---|
is_infill: false |
piesa sursă [0 .. continue_at] + întreaga lungime a fragmentului de prelungire |
is_infill: true |
piesa sursă [0 .. început] + noul fragment înlocuit + piesa sursă [sfârșit .. finalul piesei] |
Astfel, audio-ul original de după punctul de continuare este eliminat, iar o secțiune nu se dublează niciodată în întregime.
Note
- Se pot uni doar fragmente finalizate; dacă fragmentul încă se generează, așteaptă să se termine.
- Rezultatul este o înregistrare nouă; fragmentul original rămâne și este în continuare utilizabil.
- Pentru a combina două piese diferite într-una singură, folosește API-ul de mashup; pentru a păstra doar o secțiune, API-ul de decupare.
Obține o cheie API
Creează o cheie API în consolă după înregistrare. Fiecare generare costă 0,6 ¥ și returnează 2 piese, descărcările sunt nelimitate și nu este nevoie de număr de telefon.
Obține cheia API Înapoi la prezentare