API de încărcare a audio-ului sursă
Descrierea endpoint-ului
Încărcarea audio-ului sursă transformă un fișier audio local sau la distanță într-un clip sursă pe care îl pot folosi funcțiile ulterioare: cover, prelungire, înlocuire de secțiune, separare și altele.
Endpoint: POST /api/music/upload-source
Facturare: Gratuit. Acest endpoint doar încarcă audio-ul sursă; nu pornește nicio sarcină de generare.
Utilizare recomandată: este pasul 1 al «cover-ului în doi pași». Încarcă mai întâi audio-ul cu acest endpoint (gratuit, iar la eșec poți reîncerca oricând) și păstrează
clip_id-ul returnat; după ce confirmi că încărcarea a reușit (statusîntr-o stare finalizată), apelează API-ul de cover dintr-un clip sursă pentru a porni cover-ul — corpul acelei cereri are doar câteva sute de octeți, deci nu poate fi trunchiat în tranzit pentru că audio-ul este prea mare. Comparativ cu API-ul de o singură dată încarcă și fă cover, această separare este mai robustă când audio-ul este mare, rețeaua este instabilă sau același material va fi reutilizat de mai multe ori (prelungire / înlocuire / separare).
Sfaturi pentru încărcarea fișierelor mari
| Situație | Abordare recomandată |
|---|---|
| Audio-ul este deja public (are link direct https) | Folosește file_url: corpul cererii are doar câteva sute de octeți, cea mai robustă opțiune |
| URL semnat temporar (ByteDance și altele) | Folosește file_url numai cât timp URL-ul este public și valid; altfel folosește multipart sau încarcă imediat |
| Fișier local (Node / Python / desktop) | Folosește încărcare multipart (-F "file=@source.mp3") și nu seta Content-Type manual |
| Doar JSON + base64 este posibil | Atenție: Content-Length trebuie să fie numărul de octeți (Buffer.byteLength), altfel corpul poate fi trunchiat |
După terminarea încărcării, confirmă mereu că status din răspuns este deja finalizat și salvează clip_id înainte de a trece la pasul 2;
o încărcare eșuată nu se facturează și nu creează sarcină de generare — reîncearcă pur și simplu.
Verifică file_url înainte de încărcare
Serverul platformei descarcă singur
file_urlprin HTTP, nu browserul. Un URL care se deschide în browser nu este neapărat accesibil de pe serverele de producție.
Pentru fișiere locale, folosește upload multipart cu câmpul file. Nu folosi file_url pentru linkuri ByteDance sau URL-uri semnate temporar decât dacă sunt publice și încă valide când trimiți cererea.
Rulează comanda de pe un server public înainte de a trimite cererea:
curl -L --max-time 30 -D - -o /dev/null "https://example.com/source.mp3"
Cererea GET trebuie să se încheie cu HTTP 200, să returneze un MIME audio și să conțină date. Paginile de autentificare, răspunsurile HTML și codurile 401, 403, 404 sau 410 nu pot fi folosite de server.
file_url download failed: HTTP 404 înseamnă de obicei că semnătura a expirat, fișierul a fost șters sau parametrii URL lipsesc.
Încărcarea este gratuită. Dacă descărcarea file_url eșuează, nu se creează clip_id, task de melodie sau apel de generare și nu se percepe nicio taxă; nu este necesară rambursarea.
Parametrii cererii
Headers
Pentru cereri JSON:
| Parametru | Tip | Obligatoriu | Observații |
|---|---|---|---|
| Authorization | string | da | Bearer YOUR_API_KEY |
| Content-Type | string | da | application/json |
Nu seta Content-Type manual în cererile multipart; clientul îl generează automat.
Parametri din body
| Parametru | Tip | Obligatoriu | Implicit | Observații |
|---|---|---|---|---|
| model | string | nu | suno-v6 | Nume de model pentru client: suno-v6, suno-v6-wild sau suno-v6-mini |
| file_url | string | nu | - | URL-ul audio-ului la distanță |
| file_base64 | string | nu | - | Audio în Base64 |
| file | fișier (multipart) | nu | - | Fișierul audio de încărcat; numele câmpului trebuie să fie file |
| file_name | string | nu | - | Numele fișierului |
| upload_type | string | nu | file_upload | Tipul încărcării |
Exemplu de cerere JSON
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"
}'
Exemplu de cerere multipart
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())
Răspuns
{
"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": {}
}
Obține o cheie API
Creează o cheie API în consolă după înregistrare. Fiecare generare costă 0,6 ¥ și returnează 2 piese, descărcările sunt nelimitate și nu este nevoie de număr de telefon.
Obține cheia API Înapoi la prezentare