API di download e anteprima dei media dei brani

Aggiornato il 2026-09-18 · team Suno-API

Descrizione dell'endpoint

Questo gruppo di endpoint separa «ottenere un indirizzo del media» da «scaricare davvero il file»:

Fatturazione: Tutto gratuito. Download e anteprima leggono solo media già ospitati dalla piattaforma; non chiamano Suno e non vengono addebitati.

Modello consigliato: suno-v6. Puoi usare suno-v6, suno-v6-wild o suno-v6-mini.

Autenticazione

Parametro Tipo Obbligatorio Note
Authorization string sì Bearer YOUR_API_KEY (GET /api/music/download accetta anche una sessione browser)
Content-Type string sì application/json

Tipi di media supportati (kind)

kind Note
song Audio (mp3 è l'alias e il valore predefinito; nelle risposte viene sempre restituito come song)
wav File WAV; va preparato prima con l'API di generazione/recupero WAV
video Video (mp4 è un alias)
midi MIDI per stem; valido solo per gli stem la cui separazione è terminata — vedi l'API di recupero MIDI
cover Immagine di copertina (image è un alias)
lyrics Testo del brano (.txt); si ottiene solo con download-file / GET /api/music/download — download-url non restituisce un indirizzo del testo
timestamped_lyrics File di testo con timestamp (.lrc, alias lrc). Attualmente solo alcuni brani sono supportati; quando restituisce success:false, usa l'API di testi con timestamp per ottenere la timeline e generare il file da solo

1) Ottenere un indirizzo del media

curl -X POST https://www.suno-api.io/api/music/download-url \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_id": "song_id", "kind": "song"}'
{
  "code": 200,
  "message": "success",
  "data": {
    "song_id": "song_id",
    "kind": "song",
    "url": "https://media.suno-api.io/assets/song_id-mp3.mp3",
    "nav_url": "https://media.suno-api.io/assets/song_id-mp3.mp3?...&response-content-disposition=attachment..."
  }
}
Parametro Tipo Obbligatorio Note
song_id string sì L'ID di un tuo brano
kind string no Vedi la tabella sopra; predefinito song
refresh boolean no Passare true forza una nuova preparazione della risorsa (per esempio dopo che il file sulla CDN è stato recuperato)

url serve per la riproduzione o per copiarla da solo; nav_url porta Content-Disposition: attachment e si presta a essere incollato direttamente nella barra degli indirizzi del browser per scaricare (utile quando alcuni browser mobili non supportano il download via blob).

⚠️ Validità dell'indirizzo: 7 giorni — copia il file in tempo

url / nav_url puntano allo storage a oggetti della piattaforma e scadono di default dopo 7 giorni (i file vengono recuperati e il vecchio indirizzo restituisce 404). Copiali nel tuo storage entro questi 7 giorni.

Dopo la scadenza non serve rigenerare il brano: richiama POST /api/music/download-url (o passa refresh: true) per ottenere nuovi indirizzi validi di quel brano. Questo gruppo di endpoint è gratuito e non aggiunge addebiti.

2) Scaricare direttamente un file singolo

curl -X POST https://www.suno-api.io/api/music/download-file \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_id": "song_id", "kind": "song"}' \
  -o song.mp3

Il corpo della risposta è uno stream di file (non JSON) e Content-Disposition contiene già il nome del file. Il testo e il testo con timestamp si ottengono solo con questo endpoint (download-url restituisce solo indirizzi dei media, non il testo). Il file .lrc al momento è supportato solo per alcuni brani; se restituisce success:false, genera il .lrc da solo con l'API di testi con timestamp come nella sezione successiva, senza ritentare.

Come ottenere testi con timestamp (.lrc)

Si consigliano due passaggi, validi per qualsiasi brano:

Passo 1: ottenere la timeline parola per parola (gratis)

curl -X POST https://www.suno-api.io/api/lyrics/timeline \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "suno-v6", "song_id": "song_id"}'

La risposta è un array diretto (senza wrapper data); ogni elemento ha la forma {"word": "…", "start_s": 1.117, "end_s": 8.138, "success": true, "p_align": 0.99}. word contiene già le interruzioni di riga, quindi puoi dividerlo per riga; per il significato dei campi, il filtro delle parti strumentali e altre avvertenze vedi «Campi» e «Note d'uso» dell'API di testi con timestamp.

Passo 2: costruire il .lrc da solo da start_s (formato orario [mm:ss.cc])

def to_lrc(segments):
    lines = []
    for seg in segments:
        text = seg["word"].strip()
        if not text:
            continue
        start = max(0.0, float(seg["start_s"]))
        cs = int(start * 100 + 0.5)
        lines.append(f"[{cs // 6000:02d}:{(cs % 6000) // 100:02d}.{cs % 100:02d}]{text}")
    return "\n".join(lines)

GET /api/music/download?song_id=<id>&kind=lrc scarica direttamente anche il .lrc generato dal server, ma attualmente solo alcuni brani sono supportati: se restituisce success:false, generalo da solo come sopra — non serve ritentare e la fatturazione non ne risente.

3) Download in pacchetto

curl -X POST https://www.suno-api.io/api/music/download-all \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_ids": ["song_id_1", "song_id_2"]}' \
  -o songs.zip

Usa song_id (uno solo) oppure song_ids (lotto, fino a 50 voci). Il corpo della risposta è uno stream ZIP.

4) Indirizzo di download stabile

GET /api/music/download?song_id=<id>&kind=<kind> è il punto di ingresso per il download fornito direttamente nelle risposte dei brani. Accetta sia una chiave API sia una sessione browser, si comporta come download-file ed è adatto a essere fissato in un client o in un player di terze parti.

5) Anteprima durante la generazione

curl -X POST https://www.suno-api.io/api/music/generation-stream-url \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_ids": ["song_id_1", "song_id_2"]}'
{
  "code": 200,
  "message": "success",
  "data": {
    "items": [
      {
        "song_id": "song_id_1",
        "url": "https://media.suno-api.io/assets/song_id_1-mp3.mp3",
        "expires_at": 0,
        "content_type": "audio/mpeg",
        "playable_until_completed": false,
        "mode": "mp3",
        "ranges": true
      }
    ]
  }
}
Parametro Tipo Obbligatorio Note
song_id string no Un singolo ID di brano
song_ids string[] no Lotto, fino a 24 voci (il massimo di stem di un lotto di separazione automatica)

Un playable_until_completed pari a true indica un indirizzo di anteprima temporaneo per un brano in generazione; passa all'indirizzo definitivo quando il brano è completo. Se un brano fallisce, quella voce porta un campo error e gli altri brani vengono restituiti come al solito.

Note

AvantiAPI di download Free2

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