API för nedladdning och uppspelning av låtmedia
Beskrivning av ändpunkten
Den här gruppen ändpunkter skiljer "hämta en medieadress" från "ladda ner filen på riktigt":
- För en adress du kan spela upp eller ladda ner direkt (till exempel för att lägga i din egen spelare eller kopiera till objektlagring): använd
POST /api/music/download-url, eller denGET /api/music/downloadsom redan finns i svaren. - För att låta webbläsaren spara filen på disk: använd
POST /api/music/download-file(en fil) ellerPOST /api/music/download-all(paket). - Om låten fortfarande genereras och du vill lyssna först: använd
POST /api/music/generation-stream-url.
Fakturering: Allt är gratis. Nedladdning och förhandslyssning läser bara media som plattformen redan hostar; de anropar inte Suno och debiteras inte.
Rekommenderad modell: suno-v6. suno-v6, suno-v6-wild och suno-v6-mini finns tillgängliga.
Autentisering
| Parameter | Typ | Krävs | Anmärkningar |
|---|---|---|---|
| Authorization | string | ja | Bearer YOUR_API_KEY (GET /api/music/download accepterar även en inloggningssession) |
| Content-Type | string | ja | application/json |
Mediatyper som stöds (kind)
| kind | Anmärkningar |
|---|---|
song |
Ljud (mp3 är aliaset och standardvärdet; i svar skrivs alltid song tillbaka) |
wav |
WAV-fil; förbered den först med API för att skapa/hämta WAV |
video |
Video (mp4 är ett alias) |
midi |
MIDI per stem; gäller bara stem där separeringen är klar — se MIDI-hämtnings-API |
cover |
Omslagsbild (image är ett alias) |
lyrics |
Låttext som text (.txt); kan bara hämtas med download-file / GET /api/music/download — download-url returnerar ingen textadress |
timestamped_lyrics |
Fil med tidsstämplad låttext (.lrc, alias lrc). För närvarande stöds bara vissa låtar; när den returnerar success:false hämtar du tidslinjen med API för tidsstämplad låttext och bygger filen själv |
1) Hämta en medieadress
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..."
}
}
| Parameter | Typ | Krävs | Anmärkningar |
|---|---|---|---|
| song_id | string | ja | ID för din egen låt |
| kind | string | nej | Se tabellen ovan; standard song |
| refresh | boolean | nej | Att skicka true tvingar fram en ny förberedelse av resursen (till exempel efter att filen på CDN hämtats tillbaka) |
url används för uppspelning eller för att kopiera själv; nav_url bär Content-Disposition: attachment
och passar att klistra in direkt i webbläsarens adressfält för nedladdning (används när vissa mobilwebbläsare inte stöder blob-nedladdning).
⚠️ Adressens giltighet: 7 dagar — kopiera filen i tid
url/nav_urlpekar på plattformens objektlagring och upphör som standard efter 7 dagar (filerna hämtas tillbaka och den gamla adressen returnerar 404). Kopiera dem till din egen lagring inom dessa 7 dagar.Efter utgången behöver låten inte genereras om: anropa
POST /api/music/download-urligen (eller skickarefresh: true) för att få nya giltiga adresser för låten. Den här ändpunktsgruppen är gratis och kostar inget extra.
2) Ladda ner en enskild fil direkt
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
Svarskroppen är en filström (inte JSON) och Content-Disposition innehåller redan filnamnet.
Låttext och tidsstämplad låttext kan bara hämtas med denna ändpunkt (download-url returnerar bara medieadresser, inte text).
.lrc-filen stöds för närvarande bara för vissa låtar; om den returnerar success:false bygger du .lrc själv med
API för tidsstämplad låttext enligt nästa avsnitt, utan att försöka igen.
Så hämtar du tidsstämplad låttext (.lrc)
Två steg rekommenderas, och de fungerar för alla låtar:
Steg 1: hämta tidslinjen ord för ord (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"}'
Svaret är en vanlig array (ingen data-omslutning); varje element ser ut så här:
{"word": "…", "start_s": 1.117, "end_s": 8.138, "success": true, "p_align": 0.99}.
word innehåller redan radbrytningar, så du kan dela upp det per rad; för fältens betydelse, filtrering av instrumentala partier och andra varningar se
"Fält" och "Användningsnoter" i API för tidsstämplad låttext.
Steg 2: bygg .lrc själv från start_s (tidsformat [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 laddar också ner serverns .lrc direkt,
men för närvarande stöds bara vissa låtar: om den returnerar success:false bygger du den själv enligt ovan —
inget nytt försök behövs och faktureringen påverkas inte.
3) Paketnedladdning
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
Använd antingen song_id (en enda) eller song_ids (batch, upp till 50 poster). Svarskroppen är en ZIP-ström.
4) Stabil nedladdningsadress
GET /api/music/download?song_id=<id>&kind=<kind> är nedladdningsingången som ges direkt i låtsvar.
Den accepterar både en API-nyckel och en inloggningssession, beter sig som download-file och passar att hårdkoda i en klient eller en tredjepartsspelare.
5) Förhandslyssning under generering
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
}
]
}
}
| Parameter | Typ | Krävs | Anmärkningar |
|---|---|---|---|
| song_id | string | nej | Ett enskilt låt-ID |
| song_ids | string[] | nej | Batch, upp till 24 poster (max antal stem i en automatisk separeringsbatch) |
Ett playable_until_completed som är true betyder att det är en tillfällig förhandslyssningsadress för en låt som genereras; byt till den permanenta adressen när låten är klar.
Om en låt misslyckas får den posten ett error-fält och övriga låtar returneras som vanligt.
Noter
- Alla ändpunkter returnerar bara medieadresser som hostas av plattformen; de returnerar aldrig Sunos krypterade källa eller en tillfälligt signerad adress.
- Adresserna är inte permanenta — kopiera filerna själv om du behöver behålla dem länge; använd
download-filenär du behöver originalfilen på disk. - MIDI för ett stem kräver att det stemets separering är klar, annars returneras ett fel.
Skaffa en API-nyckel
Skapa en API-nyckel i konsolen efter registreringen. Varje generering kostar 0,6 ¥ och returnerar 2 spår, nedladdningar är obegränsade och inget telefonnummer krävs.
Hämta API-nyckel Tillbaka till översikten