API för förstärkt uppladdning
Beskrivning av ändpunkten
Förstärkt uppladdning skickar en lokal ljudfil; systemet utför förstärkningen i bakgrunden och skapar en komplett, spelbar låt. Anropet returnerar uppgiftsinformationen direkt och klienten frågar ändpunkten för frågor om förloppet.
Ändpunkt för inskick: POST /api/music/enhanced-upload
Fråga om en uppgift: GET /api/music/enhanced-upload/:id
Avbryt en uppgift: POST /api/music/enhanced-upload/:id/cancel
Fråga om listan: GET /api/music/enhanced-upload
Fakturering: 10 ¥ per anrop, debiterat i förskott till fastpriset för suno-enhanced-upload. Om uppgiften misslyckas, eller avbryts i det tillåtna skedet, återbetalas det förskottsdebiterade beloppet automatiskt. Det faktiskt debiterade beloppet följer den aktuella prisinställningen i backoffice.
Anropsflöde
- Anropa
POST /api/music/enhanced-uploadför att ladda upp ljudfilen. - Spara det returnerade
task_id. - Anropa
GET /api/music/enhanced-upload/:idför att se förlopp och resultat. - När Suno har slutfört den slutliga renderingen använder tjänsten det Suno-konto som är knutet till uppgiften för att anropa Studios auktoriserade nedladdningsändpunkt och skriver MP3:an till CN2-medietjänsten.
- Uppgiften blir
completedförst när CN2-tillgången är klar; då hämtas CDN-ljudadressen frånaudio_urli svaret.
/api/forbidden är en platshållaradress som kan förekomma i Suno Studios metadata; den är inte en spelbar eller nedladdningsbar resurs. Den returneras aldrig till kunder och används inte som bevis på slutförande. Om renderingen är klar men CN2 fortfarande förbereder, fortsätter ändpunkten att returnera processing och returnerar inget audio_url; klienten bör fortsätta fråga och inte se den tomma adressen som ett fel.
Skicka en förstärkt uppladdning
Headers
| Parameter | Typ | Krävs | Anmärkningar |
|---|---|---|---|
| Authorization | string | ja | Bearer YOUR_API_KEY |
| Content-Type | string | nej | Ange det inte manuellt för multipart-begäranden; låt klienten generera det |
Formulärparametrar
| Parameter | Typ | Krävs | Standard | Anmärkningar |
|---|---|---|---|---|
| file | file | ja | - | Lokal ljudfil, högst 80 MB |
| title | string | nej | filnamn utan ändelse | Låttitel |
Exempelbegäran
Exemplet nedan använder samma anropsform som vid produktionsvalideringen, men API-nyckeln har ersatts av en platshållare.
curl.exe --http1.1 -s -S \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@source.aac" \
-F "title=Enhanced upload demo" \
"https://www.suno-api.io/api/music/enhanced-upload"
Svar
{
"success": true,
"message": "",
"data": {
"task_id": 3209,
"song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "queued",
"created_at": 1781137961,
"pre_consumed_quota": 5000000,
"billing_source": "wallet"
}
}
Fråga om en uppgift
Exempelbegäran
curl.exe --http1.1 -s -S \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.suno-api.io/api/music/enhanced-upload/3209"
Exempelsvar under bearbetning
{
"success": true,
"message": "",
"data": {
"task": {
"task_id": 3209,
"song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "processing",
"type": "enhanced_upload",
"progress": {
"stage": "media_preparing",
"percent": 98,
"label": "正在准备播放资源",
"updated_at": 1781138500
},
"pre_consumed_quota": 5000000,
"billing_source": "wallet",
"created_at": 1781137961,
"updated_at": 1781138500
}
}
}
Exempelsvar när den är klar
{
"success": true,
"message": "",
"data": {
"task": {
"task_id": 3209,
"song_id": "56cbd0bb-0e8c-4a34-8729-55d5c05d9c53",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "completed",
"type": "enhanced_upload",
"audio_url": "https://media.code-go.com/assets/56cbd0bb-0e8c-4a34-8729-55d5c05d9c53-mp3.mp3",
"duration": 217.74,
"progress": {
"stage": "completed",
"percent": 100,
"label": "已完成",
"updated_at": 1781138943
},
"pre_consumed_quota": 5000000,
"billing_source": "wallet",
"created_at": 1781137961,
"updated_at": 1781138943,
"completed_at": 1781138943
}
}
}
Avbryta en uppgift
Avbrott är bara möjligt så länge både uppgiften och backend-arbetsflödet fortfarande är i skedet queued. När uppgiften går in i leasing, running, processing eller har slutförts går den inte att avbryta.
Exempelbegäran
curl.exe --http1.1 -s -S -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.suno-api.io/api/music/enhanced-upload/3209/cancel"
Svar
{
"success": true,
"message": "",
"data": {
"task_id": 3209,
"song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"status": "cancelled"
}
}
Om uppgiften redan har börjat bearbetas returnerar ändpunkten:
{
"success": false,
"message": "强化上传已开始处理,无法取消"
}
Fråga om uppgiftslistan
Liständpunkten returnerar bara de förstärkta uppladdningarna för den användare som den aktuella API-nyckeln tillhör; vanliga genererings-, cover- och extend-uppgifter blandas inte in.
Frågeparametrar
| Parameter | Typ | Krävs | Standard | Anmärkningar |
|---|---|---|---|---|
| p | number | nej | 1 | Sidnummer |
| page_size | number | nej | systemstandard | Poster per sida, högst 100 |
Exempelbegäran
curl.exe --http1.1 -s -S \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.suno-api.io/api/music/enhanced-upload?p=1&page_size=3"
Svar
{
"success": true,
"message": "",
"data": {
"page": 1,
"page_size": 3,
"total": 1,
"items": [
{
"task_id": 3209,
"song_id": "56cbd0bb-0e8c-4a34-8729-55d5c05d9c53",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "completed",
"type": "enhanced_upload",
"audio_url": "https://media.code-go.com/assets/56cbd0bb-0e8c-4a34-8729-55d5c05d9c53-mp3.mp3",
"duration": 217.74,
"progress": {
"stage": "completed",
"percent": 100,
"label": "已完成",
"updated_at": 1781138943
},
"pre_consumed_quota": 5000000,
"billing_source": "wallet",
"created_at": 1781137961,
"updated_at": 1781138943,
"completed_at": 1781138943
}
]
}
}
Förklaring av svarsfält
| Fält | Typ | Anmärkningar |
|---|---|---|
| task_id | number | ID för uppgiften förstärkt uppladdning; används i senare frågor och vid avbrott |
| song_id | string | pending:enhanced-upload:* under bearbetning; låtens riktiga ID när den är klar |
| client_request_id | string | Spårnings-ID för klientbegäran |
| status | string | Uppgiftsstatus, till exempel queued, processing, completed, failed, cancelled |
| type | string | Alltid enhanced_upload |
| audio_url | string | Ljudadress när den är klar |
| duration | number | Ljudets längd i sekunder |
| progress.stage | string | Aktuellt bearbetningsskede |
| progress.percent | number | Förlopp i procent |
| progress.label | string | Förloppstext som visas för användaren |
| pre_consumed_quota | number | Kvot som debiterats i förskott för detta anrop |
| billing_source | string | Debiteringskälla, till exempel wallet |
| error_message | string | Orsak till misslyckandet |
Noter
- Ändpunkten stöder för närvarande endast multipart-filuppladdning; JSON
file_urlochfile_base64stöds inte. - Den uppladdade filen är högst 80 MB.
- Inskicksändpunkten är asynkron: ett
queued-svar betyder att uppgiften köats, inte att ljudet är klart. - Avbrott gäller bara uppgifter som ännu inte börjat bearbetas; när bearbetningen börjar avbryts inte plattformskontots arbetsflöde.
- Exponera inte riktiga API-nycklar i klientkod.
Starta en cover när den förstärkta uppladdningen är klar
När den förstärkta uppladdningen är klar kan du använda resultatet som källklipp och anropa POST /api/music/generate-from-source för att starta en cover.
Obs: en cover är en synkron ändpunkt — beställningen accepteras först när svaret kommer, och uppmätta fall kan ta upp till omkring 230 sekunder. Ställ in klientens timeout på 300 sekunder eller mer och försök inte igen direkt efter en timeout. Se "Väntetider och timeout-inställningar" i Översikt över det nya API:t.
Fråga först GET /api/music/enhanced-upload/:id tills task.status är completed. Då gäller:
task.song_idär låtens riktiga ID och är detsourceClipIdsom cover-ändpunkten behöver;- det rekommenderas att skicka
task.audio_urlsomsourceAudioUrl, så att servern kan hantera fallet där källklippet och det utförande kontot skiljer sig; task.task_idär bara ID:t för den förstärkta uppladdningsuppgiften och kan inte användas somsourceClipId;pending:enhanced-upload:*är en platshållare från bearbetningsskedet och kan inte användas för en cover.
Använd samma API-nyckel som för den förstärkta uppladdningen när du startar covern och bygg begäran enligt fältkopplingen nedan.
| Fält i cover-begäran | Var värdet kommer från |
|---|---|
sourceClipId |
task.song_id från den slutförda förstärkta uppladdningen |
sourceAudioUrl |
task.audio_url från den slutförda förstärkta uppladdningen |
sourceTitle |
task.title från den slutförda förstärkta uppladdningen |
Fyll i övriga parametrar (text, stil, titel, modell) enligt API för cover från ett källklipp. När cover-ändpunkten returnerar det nya clips[].song_id, använd POST /api/music/query för att se genereringsstatus och det slutliga ljudet.
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