API för att ladda upp källjud

Uppdaterad 2026-09-18 · Suno-API-teamet

Beskrivning av ändpunkten

Att ladda upp källjud gör om en lokal eller fjärran ljudfil till ett källklipp som senare funktioner kan använda: cover, förlängning, ersätt avsnitt, separering med mera.

Ändpunkt: POST /api/music/upload-source

Fakturering: Kostnadsfritt. Den här ändpunkten laddar bara upp källjudet; den startar inget genereringsuppdrag.

Rekommenderad användning: det här är steg 1 i "cover i två steg". Ladda upp ljudet med den här ändpunkten först (kostnadsfritt, och du kan försöka igen när det misslyckas) och spara den returnerade clip_id; när du har bekräftat att uppladdningen lyckades (status i ett slutfört läge), anropa API för cover från ett källklipp för att starta covern — den begärans body är bara några hundra byte, så den kan inte trunkeras under överföringen för att ljudet är för stort. Jämfört med engångs-API:t ladda upp och gör cover är den här uppdelningen robustare när ljudet är stort, nätet är instabilt eller samma material ska återanvändas flera gånger (förlängning / ersättning / separering).

Tips för stora filuppladdningar

Situation Rekommenderat tillvägagångssätt
Ljudet är redan offentligt (har en https-direktlänk) Använd file_url: begärans body är bara några hundra byte, det mest robusta alternativet
Tillfällig signerad URL (ByteDance m.fl.) Använd file_url endast medan URL:en är offentligt åtkomlig och giltig; använd annars multipart eller ladda upp direkt
Lokal fil (Node / Python / skrivbord) Använd multipart-uppladdning (-F "file=@source.mp3") och sätt inte Content-Type manuellt
Endast JSON + base64 är möjligt Observera att Content-Length måste vara antalet byte (Buffer.byteLength), annars kan bodyn trunkeras

När uppladdningen är klar, bekräfta alltid att status i svaret redan är slutfört och spara clip_id innan du går vidare till steg 2; en misslyckad uppladdning debiteras inte och skapar inget genereringsuppdrag — försök bara igen.

Kontrollera file_url före uppladdning

Det är vår server som hämtar file_url via HTTP, inte webbläsaren. Att URL:en fungerar i webbläsaren betyder inte att produktionsservrarna kan nå den.

Använd multipart-uppladdning med fältet file för lokala filer. Använd inte file_url för ByteDance-länkar eller tillfälliga signerade URL:er om de inte är offentligt åtkomliga och fortfarande giltiga när begäran skickas.

Kör detta från en offentlig server innan du skickar uppladdningen:

curl -L --max-time 30 -D - -o /dev/null "https://example.com/source.mp3"

GET-begäran måste sluta med HTTP 200, returnera en ljud-MIME och innehålla data. Inloggningssidor, HTML och koderna 401, 403, 404 eller 410 kan inte användas av servern.

file_url download failed: HTTP 404 betyder oftast att signaturen har gått ut, filen har tagits bort eller att URL-parametrar saknas.

Uppladdningen är gratis. Om hämtningen av file_url misslyckas skapas inget clip_id, låtuppgift eller genereringsanrop och ingen avgift tas ut; återbetalning behövs inte.

Begäransparametrar

Headers

För JSON-begäranden:

Parameter Typ Krävs Anmärkningar
Authorization string ja Bearer YOUR_API_KEY
Content-Type string ja application/json

Sätt inte Content-Type manuellt i multipart-begäranden; klienten skapar den automatiskt.

Body-parametrar

Parameter Typ Krävs Standard Anmärkningar
model string nej suno-v6 Modellnamn mot kund: suno-v6, suno-v6-wild eller suno-v6-mini
file_url string nej - URL till fjärrljudet
file_base64 string nej - Ljud i Base64
file fil (multipart) nej - Ljudfilen som ska laddas upp; fältnamnet måste vara file
file_name string nej - Filnamn
upload_type string nej file_upload Uppladdningstyp

JSON-exempelbegäran

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-exempelbegäran

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())

Svar

{
  "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": {}
}
NästaAPI för förstärkt uppladdning

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