API voor het uploaden van bronaudio
Beschrijving van het endpoint
Bronaudio uploaden maakt van een lokaal of extern audiobestand een bronclip die latere functies kunnen gebruiken: cover, verlengen, sectie vervangen, scheiding enzovoort.
Endpoint: POST /api/music/upload-source
Facturering: Gratis. Dit endpoint uploadt alleen de bronaudio; het start geen generatieopdracht.
Aanbevolen gebruik: dit is stap 1 van de "tweetraps-cover". Upload de audio eerst met dit endpoint (gratis, en bij een fout kunt u het altijd opnieuw proberen) en bewaar de teruggegeven
clip_id; nadat u hebt bevestigd dat de upload is geslaagd (statusin een voltooide toestand), roept u de API voor cover op basis van een bronclip aan om de cover te starten — die requestbody is maar een paar honderd bytes, dus die kan niet worden afgebroken doordat de audio te groot is. Vergeleken met de eenmalige API voor uploaden en coveren is deze splitsing robuuster wanneer de audio groot is, het netwerk instabiel is of hetzelfde materiaal meerdere keren wordt hergebruikt (verlengen / vervangen / scheiding).
Tips voor het uploaden van grote bestanden
| Situatie | Aanbevolen aanpak |
|---|---|
| De audio is al openbaar (heeft een https-directlink) | Gebruik file_url: de requestbody is maar een paar honderd bytes, de meest robuuste optie |
| Tijdelijke signed URL (ByteDance en andere) | Gebruik file_url alleen zolang de URL openbaar bereikbaar en geldig is; gebruik anders multipart of upload direct |
| Lokaal bestand (Node / Python / desktop) | Gebruik een multipart-upload (-F "file=@source.mp3") en stel Content-Type niet handmatig in |
| Alleen JSON + base64 is mogelijk | Let op: Content-Length moet het aantal bytes zijn (Buffer.byteLength), anders kan de body worden afgebroken |
Bevestig na de upload altijd dat status in het antwoord al voltooid is en bewaar de clip_id voordat u naar stap 2 gaat;
een mislukte upload wordt niet gefactureerd en maakt geen generatieopdracht aan — probeer het gewoon opnieuw.
Controleer file_url vóór upload
Onze platforms server downloadt
file_urlzelf via HTTP, niet je browser. Een URL die in je browser werkt, is daarom niet automatisch bereikbaar vanaf de productieservers.
Gebruik voor lokale bestanden een multipart-upload met het veld file. Gebruik file_url niet voor ByteDance- of andere tijdelijke signed URL's, tenzij de URL openbaar bereikbaar en op het moment van de aanvraag nog geldig is.
Voer dit uit vanaf een publieke server voordat je de upload aanvraagt:
curl -L --max-time 30 -D - -o /dev/null "https://example.com/source.mp3"
De GET moet eindigen met HTTP 200, een audio-MIME-type teruggeven en niet leeg zijn. Loginpagina's, HTML-reacties en 401, 403, 404 of 410 zijn niet bruikbaar voor de server.
file_url download failed: HTTP 404 betekent meestal dat de signatuur is verlopen, het bestand is verwijderd of URL-parameters ontbreken.
Deze upload is gratis. Als het downloaden van file_url mislukt, worden geen clip_id, nummertaak of generatieaanroep aangemaakt en worden geen kosten gerekend; restitutie is niet nodig.
Verzoekparameters
Headers
Voor JSON-verzoeken:
| Parameter | Type | Verplicht | Opmerkingen |
|---|---|---|---|
| Authorization | string | ja | Bearer YOUR_API_KEY |
| Content-Type | string | ja | application/json |
Stel Content-Type niet handmatig in bij multipart-verzoeken; de client genereert die automatisch.
Body-parameters
| Parameter | Type | Verplicht | Standaard | Opmerkingen |
|---|---|---|---|---|
| model | string | nee | suno-v6 | Modelnaam voor klanten: suno-v6, suno-v6-wild of suno-v6-mini |
| file_url | string | nee | - | URL van de externe audio |
| file_base64 | string | nee | - | Audio als Base64 |
| file | bestand (multipart) | nee | - | Te uploaden audiobestand; de veldnaam moet file zijn |
| file_name | string | nee | - | Bestandsnaam |
| upload_type | string | nee | file_upload | Soort upload |
JSON-voorbeeldverzoek
curl -X POST https://www.suno-api.io/api/music/upload-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"file_url": "https://example.com/source.mp3",
"file_name": "source.mp3",
"upload_type": "file_upload"
}'
multipart-voorbeeldverzoek
curl -X POST https://www.suno-api.io/api/music/upload-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@source.mp3" \
-F "file_name=source.mp3" \
-F "upload_type=file_upload" \
-F "model=suno-v6"
import requests
with open("source.mp3", "rb") as audio:
response = requests.post(
"https://www.suno-api.io/api/music/upload-source",
headers={"Authorization": "Bearer YOUR_API_KEY"},
data={
"file_name": "source.mp3",
"upload_type": "file_upload",
"model": "suno-v6",
},
files={"file": ("source.mp3", audio, "audio/mpeg")},
timeout=300,
)
response.raise_for_status()
print(response.json())
Antwoord
{
"clip_id": "uploaded_clip_id",
"status": "complete",
"title": "source.mp3",
"image_url": "https://...",
"audio_url": "https://...",
"display_tags": "pop, vocal",
"inferred_description": "uploaded source audio",
"clip_metadata": {}
}
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