API voor het downloaden en beluisteren van nummer-media
Beschrijving van het endpoint
Deze groep endpoints scheidt "een media-adres ophalen" van "het bestand echt downloaden":
- Voor een adres dat u direct kunt afspelen of downloaden (bijvoorbeeld voor uw eigen speler of om naar objectopslag te kopiëren): gebruik
POST /api/music/download-url, of deGET /api/music/downloaddie al in antwoorden zit. - Om de browser het bestand direct op schijf te laten opslaan: gebruik
POST /api/music/download-file(één bestand) ofPOST /api/music/download-all(pakket). - Als het nummer nog wordt gegenereerd en u eerst wilt meeluisteren: gebruik
POST /api/music/generation-stream-url.
Facturering: Allemaal gratis. Downloaden en beluisteren lezen alleen media die het platform al host; ze roepen Suno niet aan en worden niet gefactureerd.
Aanbevolen model: suno-v6. Beschikbaar zijn suno-v6, suno-v6-wild en suno-v6-mini.
Authenticatie
| Parameter | Type | Verplicht | Opmerkingen |
|---|---|---|---|
| Authorization | string | ja | Bearer YOUR_API_KEY (GET /api/music/download accepteert ook een browsersessie) |
| Content-Type | string | ja | application/json |
Ondersteunde mediatypen (kind)
| kind | Opmerkingen |
|---|---|
song |
Audio (mp3 is het alias en de standaard; in antwoorden wordt altijd song teruggeschreven) |
wav |
WAV-bestand; eerst klaarzetten met de API voor het genereren/ophalen van WAV |
video |
Video (mp4 is een alias) |
midi |
MIDI per stem; alleen geldig voor stems waarvan de separatie is afgerond — zie de MIDI-ophaal-API |
cover |
Coverafbeelding (image is een alias) |
lyrics |
Songtekst als tekst (.txt); alleen op te halen met download-file / GET /api/music/download — download-url geeft geen adres voor de tekst |
timestamped_lyrics |
Bestand met songtekst en tijdstempels (.lrc, alias lrc). Momenteel worden alleen sommige nummers ondersteund; als het success:false teruggeeft, haal de tijdlijn op met de API voor songteksten met tijdstempels en maak het bestand zelf |
1) Een media-adres ophalen
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 | Type | Verplicht | Opmerkingen |
|---|---|---|---|
| song_id | string | ja | De ID van uw eigen nummer |
| kind | string | nee | Zie de tabel hierboven; standaard song |
| refresh | boolean | nee | true forceert een nieuwe voorbereiding van de resource (bijvoorbeeld nadat het bestand op de CDN is teruggehaald) |
url is voor afspelen of zelf kopiëren; nav_url draagt Content-Disposition: attachment
en is geschikt om direct in de adresbalk van de browser te plakken om te downloaden (handig wanneer sommige mobiele browsers blob-downloads niet ondersteunen).
⚠️ Geldigheid van het adres: 7 dagen — kopieer het bestand op tijd
url/nav_urlwijzen naar de objectopslag van het platform en vervallen standaard na 7 dagen (de bestanden worden teruggehaald en het oude adres geeft 404). Kopieer ze binnen die 7 dagen naar uw eigen opslag.Na het vervallen hoeft het nummer niet opnieuw te worden gegenereerd: roep
POST /api/music/download-urlopnieuw aan (of geefrefresh: truemee) voor nieuwe geldige adressen van dat nummer. Deze endpointgroep is gratis en kost niets extra.
2) Eén bestand rechtstreeks downloaden
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
De antwoordbody is een bestandsstream (geen JSON) en Content-Disposition bevat al de bestandsnaam.
De songtekst en de songtekst met tijdstempels zijn alleen met dit endpoint op te halen (download-url geeft alleen media-adressen, geen songtekst).
Het .lrc-bestand wordt momenteel alleen voor sommige nummers ondersteund; geeft het success:false terug, maak de .lrc dan zelf met de
API voor songteksten met tijdstempels zoals in de volgende sectie, en probeer het niet opnieuw.
Songteksten met tijdstempels (.lrc) ophalen
Twee stappen worden aanbevolen, en ze werken voor elk nummer:
Stap 1: de woord-voor-woord-tijdlijn ophalen (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"}'
Het antwoord is direct een array (geen data-wrapper); elk element ziet er zo uit:
{"word": "…", "start_s": 1.117, "end_s": 8.138, "success": true, "p_align": 0.99}.
word bevat al regeleindes, dus u kunt het per regel splitsen; voor de betekenis van de velden, het uitfilteren van instrumentale stukken en andere aandachtspunten zie
"Velden" en "Gebruiksopmerkingen" van de API voor songteksten met tijdstempels.
Stap 2: de .lrc zelf opbouwen uit start_s (tijdnotatie [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 downloadt de door de server gemaakte .lrc ook direct,
maar momenteel worden alleen sommige nummers ondersteund: geeft het success:false terug, maak het dan zelf zoals hierboven —
opnieuw proberen is niet nodig en de facturering verandert niet.
3) Pakketdownload
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
Gebruik song_id (één) of song_ids (batch, tot 50 items). De antwoordbody is een ZIP-stream.
4) Stabiel downloadadres
GET /api/music/download?song_id=<id>&kind=<kind> is het downloadtoegangspunt dat direct in nummerantwoorden staat.
Het accepteert zowel een API-sleutel als een browsersessie, gedraagt zich hetzelfde als download-file en is geschikt om vast in een client of externe speler te zetten.
5) Meeluisteren tijdens het genereren
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 | Type | Verplicht | Opmerkingen |
|---|---|---|---|
| song_id | string | nee | Eén nummer-ID |
| song_ids | string[] | nee | Batch, tot 24 items (het maximum aan stems in een automatische separatiebatch) |
Een playable_until_completed van true betekent dat dit een tijdelijk meeluisteradres is voor een nummer dat nog wordt gegenereerd; stap over op het definitieve adres zodra het nummer klaar is.
Als één nummer mislukt, krijgt dat item een error-veld en komen de overige nummers gewoon terug.
Opmerkingen
- Alle endpoints geven alleen adressen terug van media die door het platform worden gehost; ze geven nooit Suno's versleutelde bron of een tijdelijk ondertekend adres terug.
- Adressen zijn niet permanent: kopieer de bestanden zelf als u ze lang wilt bewaren; gebruik
download-fileals u het originele bestand op schijf nodig hebt. - Voor de MIDI van een stem moet de separatie van die stem afgerond zijn, anders volgt een foutmelding.
Een API-sleutel aanvragen
Maak na je registratie een API-sleutel aan in de console. Elke generatie kost ¥0,6 en levert 2 nummers op, downloads zijn onbeperkt en een telefoonnummer is niet nodig.
API-sleutel ophalen Terug naar overzicht