API Replace Section (sostituzione di una sezione)
Descrizione dell'endpoint
Replace Section rigenera sul posto un intervallo di tempo di un brano esistente. Serve a correggere una riga del testo o a sostituire un passaggio.
Endpoint: POST /api/music/replace-section
Fatturazione: A pagamento, attualmente 0,6 ¥ per chiamata per impostazione predefinita. L'importo effettivamente addebitato segue la configurazione prezzi attuale del back-office.
Max Mode / Variety: questo endpoint supporta i parametri opzionali max_mode e variety (0-4). Con
max_mode attivo, questa chiamata viene fatturata al doppio del prezzo (0,6 → 1,2 ¥ per chiamata); variety non costa
nulla in più. Significato e modalità di invio sono nella sezione «Parametri avanzati» della
Panoramica della nuova API.
Tempi di attesa e timeout (importante): è un endpoint sincrono — l'ordine viene accettato e passato alla generazione solo quando arriva la risposta. Dai dati misurati, la maggior parte delle richieste risponde in 1-3 secondi, circa il 10% supera i 30 secondi e la più lunga arriva a circa 230 secondi. Imposta il timeout del client a 300 secondi o più; nessuna risposta non significa che non sia stato generato nulla, e non ritentare subito dopo un timeout (duplica l'ordine e riaddebita). Se la connessione è caduta, verifica più tardi con
GET /api/music/songs. Vedi «Tempi di attesa e impostazione del timeout» nella Panoramica della nuova API.
Parametri della richiesta
Headers
| Parametro | Tipo | Obbligatorio | Note |
|---|---|---|---|
| Authorization | string | sì | Bearer YOUR_API_KEY |
| Content-Type | string | sì | application/json |
Parametri del body
| Parametro | Tipo | Obbligatorio | Predefinito | Note |
|---|---|---|---|---|
| model | string | no | suno-v6 | Nome del modello lato cliente: suno-v6, suno-v6-wild o suno-v6-mini |
| audioId | string | sì | - | ID del brano originale |
| startSeconds | number | sì | - | Secondo di inizio della sostituzione; ammessi decimali. La sezione deve durare almeno 2 secondi |
| endSeconds | number | sì | - | Secondo finale della sostituzione; ammessi decimali. Deve essere maggiore di startSeconds e l'intervallo deve stare dentro la durata del brano originale |
| contextLyrics | string | sì | - | Il testo completo dell'intero brano, usato come contesto di generazione (forma compatibile prompt). Se manca, la risposta è 400 |
| contextWindowLyrics | string | no | come contextLyrics |
Il testo attorno al passaggio sostituito (bastano una o due frasi prima e dopo), usato per la giunzione; se omesso si usa contextLyrics |
| infillLyrics | string | no | come contextLyrics |
Il nuovo testo da mettere al posto; se omesso si usa contextLyrics (equivale a ricantare quel passaggio con il testo originale) |
| style | string | no | - | Tag di stile |
| title | string | no | - | Titolo |
| negativeTags | string | no | - | Stili esclusi |
| requestedAt | number | no | - | Timestamp della richiesta |
startSeconds e endSeconds sono in secondi e accettano decimali; startSeconds deve essere minore di endSeconds e l'intervallo deve stare dentro la durata del brano originale. requestedAt si usa solo quando serve trasmettere l'ora della richiesta, come timestamp Unix in secondi (non millisecondi); di norma può essere omesso.
Anche la sostituzione è un'attività asincrona. Il clip restituito può partire in pending, e un indirizzo audio vuoto in quel momento è normale; usa il song_id reale restituito per consultare il risultato finale.
Lunghezza della sezione: almeno 2 secondi (importante)
L'intervallo da sostituire non può essere più corto di 2 secondi. Misurato: intervalli di 1,0 / 1,2 / 1,5 secondi sono tutti falliti, mentre 2,0 secondi e oltre hanno funzionato.
Quando l'intervallo è troppo corto, la piattaforma non risponde con un «errore di parametro» ma con un messaggio facile da fraintendere:
{"error":{"message":"You don't have access to this model. Upgrade your plan to use it.",
"type":"bad_response_status_code","code":"bad_response_status_code"}}
Quella frase non è un problema di account o di piano — la sezione è troppo corta. Allunga l'intervallo oltre 2 secondi e invia di nuovo.
Esempio di richiesta
curl -X POST https://www.suno-api.io/api/music/replace-section \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"audioId": "clip_id",
"startSeconds": 30,
"endSeconds": 45,
"contextLyrics": "testo di contesto completo",
"contextWindowLyrics": "testo di contesto della finestra",
"infillLyrics": "testo della sostituzione",
"style": "Mandopop, acoustic",
"title": "Versione sostituita",
"negativeTags": "noise"
}'
Risposta
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "replace_clip_id",
"song_title": "Versione sostituita",
"status": "pending"
}
],
"replaceTask": "infill",
"clipId": "clip_id",
"source_update": {}
}
}
Campi compatibili
audioId/audio_id/clipId/clip_idstartSeconds/start_seconds/infillStartS/infill_start_sendSeconds/end_seconds/infillEndS/infill_end_sinfillLyrics/infill_lyrics/replacementLyrics/replacement_lyricsstyle/tagsnegativeTags/negative_tags
Ottenere una chiave API
Dopo la registrazione puoi creare una chiave API nella console. Ogni generazione costa 0,6 ¥ e restituisce 2 brani, i download sono illimitati e non serve un numero di telefono.
Ottieni chiave API Torna alla panoramica