API-ul de clonare vocală și generare cu voce indicată (nerecomandat)
⛔ Lanț vechi, nerecomandat pentru integrări noi. Această pagină descrie lanțul
personade la început (voice_task_id/generate-with-voice). Funcționează în continuare, dar nu mai este recomandat clienților; navigarea din stânga îl marchează drept „nerecomandat".Pentru integrări noi folosește 【Recomandat】 API-ul de profil vocal: creează un profil vocal dintr-o singură mostră vocală (
POST /api/music/voice-profile/create) și folosește-l ca să faci un cover la o piesă anume sau ca să cânte o piesă nouă. Profilul vocal este o resursă de prim rang: poate fi listat, interogat și șters, iar audio-ul sursă este păstrat permanent.Dacă produsul tău are nevoie de ciclul complet „creează o voce → reutilizeaz-o pe termen lung → fă cover-uri", alege lanțul nou.
Atenție importantă: o voce clonată poate expira.
voice_id/voice_task_idgenerate de clonarea vocală nu sunt o resursă utilizabilă pentru totdeauna: pot înceta să funcționeze din cauza perioadei de valabilitate, a stării contului sau a schimbării stării vocii. Cine integrează nu trebuie să cloneze o dată și apoi să refolosească la nesfârșit un ID de voce salvat local în cache.Practica recomandată:
- Salvează
voice_task_id,voice_id,is_available,updated_atși momentul ultimei generări reușite.- Înainte de fiecare generare cu o voce clonată, apelează
GET /api/voice/clone/tasks/{voice_task_id}sauPOST /api/voice/clone/tasks/{voice_task_id}/checkși confirmăis_available=true.- Dacă endpointul răspunde că vocea nu este disponibilă, că sarcina nu există sau returnează
selected voice is not ready, cere utilizatorului să cloneze din nou sau să aleagă altă voce disponibilă.- Nu promite utilizatorilor finali că o voce clonată este un „activ permanent"; afișează în interfața produsului că „vocea poate expira și poate necesita o nouă validare sau o nouă clonare".
Descrierea endpoint-ului
Acest grup de endpointuri creează o voce reutilizabilă și generează piese cu ea. Cine apelează are nevoie doar de cheia API emisă de platformă; serverul se ocupă de trimiterea sarcinilor, sincronizarea stării, facturare și descărcări.
Autentificare: Authorization: Bearer YOUR_API_KEY
Facturare:
- Validarea vocii, clonarea vocală, interogarea stării, ștergerea și descărcările: gratuit.
- Intarea de clonare într-un pas din spațiul de lucru: 5 ¥ fixe per apel; finalizează automat validarea vocii sursă și al doilea audio de verificare și returnează banii la eșec.
- Continuarea automată către audio-ul de verificare după o clonare obișnuită: 5 ¥ fixe per apel; la eșec se returnează conform fluxului existent.
- Generarea unei piese cu o voce clonată: cu plată, 1,2 ¥ fixe per apel; fiecare apel returnează de obicei 2 sarcini substituent.
- Cu Max Mode activat (
max_mode: trueînPOST /api/music/generate-with-voice), cei 1,2 ¥ per apel se facturează la 2×, adică 2,4 ¥ per apel; generarea vocală acceptă șivariety(0-4, fără cost suplimentar); regulile de valori sunt în secțiunea „Parametri avansați" din prezentarea noului API.
Fluxul apelurilor
- Apelează
POST /api/voice/clone/validatepentru a încărca vocea sursă și a obține unvoice_task_id. - Așteaptă sau interoghează
GET /api/voice/clone/tasks/{voice_task_id}până primeștivalidate_info. - Utilizatorul citește textul cu voce tare și înregistrează audio-ul de verificare.
- Apelează
POST /api/voice/clone/tasks/{voice_task_id}/generatepentru a trimite audio-ul de verificare. - Apelează
POST /api/voice/clone/tasks/{voice_task_id}/checksau continuă să interoghezi sarcina până cândis_available=true. - Apelează
POST /api/music/generate-with-voicepentru a genera o piesă cu acea voce. - Endpointul de generare returnează mai întâi sarcini substituent; când generarea s-a terminat și ai
song_id-ul real, poți folosi endpointurile de descărcare pentru un fișier unic sau o arhivă. - (Opțional) Când vocea nu mai este necesară, apelează
DELETE /api/voice/clone/voices/{voice_task_id}ca să o ștergi; semantica este în secțiunea 6.
Există și clonarea într-un pas: pe prima pagină de înregistrare/încărcare a vocii sursă din spațiul de lucru poți alege finalizarea într-un singur pas; sistemul face validarea și crearea vocii împreună, astfel încât nu mai trebuie să înregistrezi un al doilea audio de verificare; costă 5 ¥ per apel și se returnează la eșec.
Câmpurile sarcinii de voce
| Câmp | Tip | Descriere |
|---|---|---|
voice_task_id |
number | ID-ul sarcinii de voce din platformă; toate endpointurile ulterioare folosesc acest ID |
voice_id |
string | ID-ul vocii care poate fi folosit pentru generarea de piese; este returnat când sarcina devine utilizabilă |
voice_name |
string | Numele vocii |
description |
string | Descrierea vocii |
style |
string | Stilul vocii |
singer_skill_level |
string | Nivelul vocal; valori uzuale: beginner, intermediate, professional |
language |
string | Limba vocii sursă, de exemplu zh, en |
validate_info |
string | Textul de verificare care trebuie citit cu voce tare |
validate_status |
string | Starea sarcinii de validare |
voice_status |
string | Starea creării vocii |
is_available |
boolean | Dacă poate fi deja folosită pentru a genera piese |
status |
string | Starea sarcinii pe platformă |
stage |
string | Etapa curentă |
error_code |
string | Codul de eroare la eșec |
error_message |
string | Motivul eșecului |
source_duration_seconds |
number | Durata audio-ului sursă în secunde |
created_at |
number | Marcaj de timp al creării |
updated_at |
number | Marcaj de timp al actualizării |
completed_at |
number | Marcaj de timp al finalizării |
1. Trimite vocea sursă la validare
Endpoint: POST /api/voice/clone/validate
Parametri din body
| Parametru | Tip | Obligatoriu | Implicit | Descriere |
|---|---|---|---|---|
voice_url |
string | Nu | - | URL-ul audio-ului vocii sursă. Acesta sau file_base64 |
file_base64 |
string | Nu | - | Audio în base64. Acesta sau voice_url |
file_name |
string | Nu | - | Numele fișierului; recomandat când folosești file_base64 |
voice_name |
string | Nu | generat automat | Numele vocii |
description |
string | Nu | - | Descrierea vocii |
style |
string | Nu | - | Stilul vocii |
singer_skill_level |
string | Nu | beginner |
Nivelul vocal |
language |
string | Nu | zh |
Limba vocii sursă |
vocal_start_s |
number | Da | - | Secunda de început a vocii utile |
vocal_end_s |
number | Da | - | Secunda de sfârșit a vocii utile |
source_duration_seconds |
number | Nu | - | Durata totală a audio-ului sursă în secunde |
vocal_end_s - vocal_start_strebuie să respecte cerința minimă pentru fragmentul vocal. Încarcă o înregistrare vocală curată, fără acompaniament sau zgomot evidente.
Exemplu de cerere
curl -X POST https://www.suno-api.io/api/voice/clone/validate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"voice_url": "https://example.com/source-voice.wav",
"voice_name": "Vocea mea feminină în chineză",
"description": "Voce feminină în chineză, clară și naturală",
"style": "Mandopop",
"singer_skill_level": "intermediate",
"language": "zh",
"vocal_start_s": 1.2,
"vocal_end_s": 18.5,
"source_duration_seconds": 20
}'
Exemplu de răspuns
{
"success": true,
"message": "",
"data": {
"voice": {
"voice_task_id": 123,
"voice_name": "Vocea mea feminină în chineză",
"language": "zh",
"validate_status": "submitted",
"is_available": false,
"status": "validate_submitted",
"stage": "validate_submitted",
"created_at": 1780480000,
"updated_at": 1780480000
}
}
}
2. Interoghează o sarcină de voce
Endpoint: GET /api/voice/clone/tasks/{voice_task_id}
Exemplu de cerere
curl https://www.suno-api.io/api/voice/clone/tasks/123 \
-H "Authorization: Bearer YOUR_API_KEY"
Exemplu de răspuns
{
"success": true,
"message": "",
"data": {
"voice": {
"voice_task_id": 123,
"voice_name": "Vocea mea feminină în chineză",
"validate_info": "Citește cu voce tare textul de verificare returnat aici",
"validate_status": "success",
"is_available": false,
"status": "validate_ready",
"stage": "validate_callback"
}
}
}
3. Regenerează textul de verificare
Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/regenerate
Se apelează când textul de verificare nu este potrivit pentru citire cu voce tare sau când validarea trebuie refăcută.
curl -X POST https://www.suno-api.io/api/voice/clone/tasks/123/regenerate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
4. Trimite audio-ul de verificare și creează vocea
Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/generate
Parametri din body
| Parametru | Tip | Obligatoriu | Implicit | Descriere |
|---|---|---|---|---|
verify_url |
string | Nu | - | URL-ul audio-ului citit din textul de verificare. Acesta sau file_base64 |
file_base64 |
string | Nu | - | Audio de verificare în base64. Acesta sau verify_url |
file_name |
string | Nu | - | Numele fișierului; recomandat când folosești file_base64 |
voice_name |
string | Nu | numele sarcinii | Numele vocii |
description |
string | Nu | descrierea sarcinii | Descrierea vocii |
style |
string | Nu | stilul sarcinii | Stilul vocii |
singer_skill_level |
string | Nu | setarea sarcinii | Nivelul vocal |
Exemplu de cerere
curl -X POST https://www.suno-api.io/api/voice/clone/tasks/123/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"verify_url": "https://example.com/verify-voice.wav",
"voice_name": "Vocea mea feminină în chineză"
}'
5. Verifică dacă vocea este utilizabilă
Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/check
curl -X POST https://www.suno-api.io/api/voice/clone/tasks/123/check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Când sarcina este utilizabilă, is_available din răspuns este true și se returnează un voice_id.
6. Șterge o voce
Endpoint: DELETE /api/voice/clone/voices/{voice_task_id}
Facturare: gratuit.
curl -X DELETE https://www.suno-api.io/api/voice/clone/voices/123 \
-H "Authorization: Bearer YOUR_API_KEY"
Exemplu de răspuns
{
"success": true,
"message": "",
"data": {
"voice_task_id": 123,
"deleted": true
}
}
| Câmp | Tip | Descriere |
|---|---|---|
| voice_task_id | number | ID-ul sarcinii de voce șterse |
| deleted | boolean | Întotdeauna true; cererea de ștergere a fost acceptată |
Ce se întâmplă după ștergere
- Vocea nu mai poate genera piese noi: apelarea
POST /api/music/generate-with-voicecu acestvoice_task_id(sau cuvoice_id-ul lui) este respinsă cu mesajulselected voice is not ready, fără nicio taxă. - Piesele deja generate cu ea nu sunt afectate deloc: redarea, descărcarea, continuarea, înlocuirea și separarea pe piste funcționează ca înainte.
- Această sarcină de voce dispare din interogări:
GET /api/voice/clone/tasks/{voice_task_id}returneazărecord not found. - Audio-ul sursă este păstrat conform politicii de păstrare permanentă a platformei (din 2026-09-23, ștergerea nu mai curăță mostra vocală încărcată), dar asta nu înseamnă că poate fi recuperat: sarcina veche s-a încheiat, iar pentru a continua cu aceeași voce trebuie parcurs din nou fluxul de clonare, care dă un
voice_task_idnou. - Ștergere repetată: ștergerea din nou a aceleiași sarcini returnează
record not found(este deja în starea ștearsă și nu mai poate fi găsită).
7. Generează o piesă cu o voce clonată
Endpoint: POST /api/music/generate-with-voice
Facturare: 1,2 ¥ per apel.
Parametri din body
| Parametru | Tip | Obligatoriu | Implicit | Descriere |
|---|---|---|---|---|
voice_task_id |
number | Da | - | ID-ul unei sarcini de voce deja utilizabile |
voice_id |
string | Nu | - | Câmp opțional de verificare; dacă îl trimiți, trebuie să coincidă cu voice_id-ul sarcinii |
customMode |
boolean | Nu | false |
false este modul inspirație, true modul avansat |
prompt |
string | Da | - | În modul inspirație descrierea piesei, în modul avansat versurile. Niciunul nu poate fi gol |
style |
string | Da în modul avansat | - | Etichete de stil; nu poate fi gol când customMode=true |
title |
string | Da în modul avansat | - | Titlul piesei; nu poate fi gol când customMode=true |
negativeTags |
string | Nu | - | Stil de exclus |
instrumental |
boolean | Nu | false |
Câmp de compatibilitate; generarea cu voce clonată este tratată mereu ca piesă vocală |
waitAudio |
boolean | Nu | false |
Câmp de compatibilitate; acest endpoint returnează mereu sarcinile substituent asincron și nu așteaptă audio-ul |
model |
string | Nu | suno-v6 |
Modelul de generare obișnuită; poți folosi suno-v6, suno-v6-wild sau suno-v6-mini |
vocalGender |
string | Nu | - | Preferința pentru genul vocii |
lyricsMode |
string | Nu | - | Câmp de compatibilitate; lanțul actual de trimitere cu voce clonată nu schimbă singur modul versurilor |
weirdnessConstraint |
number | Nu | - | Forța creativă |
styleWeight |
number | Nu | - | Greutatea stilului |
audioWeight |
number | Nu | valoarea implicită a platformei | Audio Influence (cât de mult contează audio-ul de referință), interval 0.0-1.0. Dacă nu este trimis, se aplică valoarea implicită a platformei (echivalent cu 25% în interfața oficială); 0 este o valoare validă și înseamnă să nu te apropii deloc de referință. Este strâns legat de sourceClipId din rândul următor: cu o sursă indică audio-ul de referință, fără sursă indică vocea clonată; platforma are doar acest singur cursor pentru ambele cazuri, așa că nu îl împărți în doi parametri după scenariu |
sourceClipId |
string | Nu | - | ID-ul real al clipului din spațiul de lucru pentru piesa sursă. Dacă îl trimiți, intri în cover cu voce clonată; dacă nu, este generare obișnuită cu voce clonată |
sourceAudioUrl |
string | Nu | - | Câmp de afișare pentru sursă; nu participă la proprietate sau la decizia de cont, serverul se bazează pe înregistrarea din baza de date |
sourceTitle |
string | Nu | - | Câmp de afișare pentru sursă; nu participă la proprietate sau la decizia de cont |
clientSubmissionId |
string | Nu | - | Câmp de compatibilitate Create UI; pentru deduplicare sigură în API-ul clientului trebuie folosit headerul Idempotency-Key |
suno-v6, suno-v6-wild și suno-v6-mini sunt acceptate; un model gol este tratat ca suno-v6. Modelele vechi V5/V5.5 au fost retrase, dar sarcinile istorice pot afișa în continuare numele vechi.
Structura comună de cerere interpretează și câmpuri de compatibilitate Create UI precum task, soundType, soundLoop, soundBpm, soundKey, voiceTaskId și voiceId, dar acestea nu sunt parametri valizi de client pentru acest endpoint: sarcina de voce trebuie trimisă ca voice_task_id, verificarea opțională a vocii ca voice_id, iar generarea muzicală cu voce nu citește niciodată câmpurile sound.
Cum se completează parametrii de generare
- Cu
customMode=false,promptconține descrierea piesei; cucustomMode=true,promptconține versurile complete, iarstyleșititletrebuie completate și ele. Nu trimite versurile în câmpul de descriere al modului inspirație și nu trata o descriere de piesă ca versuri în modul avansat. weirdnessConstraintșistyleWeightsunt proporții zecimale de la0.0la1.0; nu se pot trimite50sau50%.0.5este o valoare echilibrată; omiterea înseamnă „nespecificat", iar0este o valoare explicită validă.vocalGenderacceptă doarm,male,fsaufemale.instrumentaleste aici doar un câmp de compatibilitate: generarea cu voce clonată este tratată mereu ca piesă vocală.waitAudionu schimbă comportamentul aici; endpointul returnează mereu sarcinile substituent asincron. Unaudio_urlgol în rezultatul inițial este normal: interoghează cuclient_request_idși citește adresa audio doar după ce rezultatul s-a terminat.
Parametri de header
| Header | Obligatoriu | Descriere |
|---|---|---|
Authorization: Bearer ... |
Da | Tokenul API al clientului |
Content-Type: application/json |
Da | Corpul cererii în JSON |
Idempotency-Key |
Nu, recomandat insistent | Până la 128 de caractere. Pentru același utilizator, token, endpoint, cheie și corp, facturarea și crearea sarcinii au loc o singură dată |
Comportamentul Idempotency-Key:
- Prima cerere scrie o înregistrare de idempotență persistentă înainte de facturare;
- Dacă aceeași cheie cu aceeași cerere este deja finalizată, se redă primul răspuns de acceptare, fără a doua taxă și fără a doua sarcină;
- Aceeași cheie cu un corp diferit este respinsă;
- Aceeași cheie încă în procesare returnează o eroare stabilă de procesare și expune un
client_request_idsigur doar când a fost deja generat; - Dacă prima cerere cu o cheie eșuează, starea de eroare se păstrează; reîncercarea necesită o cheie nouă.
Condiții pentru cover cu sourceClipId
Cover-ul dintr-o sursă în API-ul clientului este gestionat integral pe server: accesul la piesa sursă este rezolvat de server, iar clientul nu trimite nicio informație de cont. Dacă este posibil decide răspunsul real al endpointului.
Sursa trebuie să aparțină utilizatorului API curent, să fie o piesă finalizată din spațiul de lucru care nu este pending: și să aibă audio utilizabil. Sunt acceptate generarea obișnuită, sursele din încărcarea obișnuită și piesa finală a unei încărcări consolidate; înregistrările intermediare ale încărcării consolidate sunt respinse înainte de facturare. Serverul acceptă doar ID-ul piesei sursă trimis de client și niciodată un ID de cont; o sursă indisponibilă sau nefinalizată returnează eroare înainte de facturare.
Exemplu de cerere
curl -X POST https://www.suno-api.io/api/music/generate-with-voice \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"voice_task_id": 123,
"customMode": true,
"prompt": "Scrie o piesă pop chinezească despre malul mării într-o noapte de vară",
"style": "Mandopop, warm piano, emotional",
"title": "Briză de mare într-o noapte de vară",
"negativeTags": "noise, low quality",
"instrumental": false,
"model": "suno-v6"
}'
Exemplu de răspuns
{
"success": true,
"message": "",
"data": {
"client_request_id": "cu_1780480000_abcd1234",
"items": [
{
"placeholder_id": "pending:cu_1780480000_abcd1234:0",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 0,
"status": "submitted",
"type": "voice_generate",
"title": "Briză de mare într-o noapte de vară",
"prompt": "Scrie o piesă pop chinezească despre malul mării într-o noapte de vară"
},
{
"placeholder_id": "pending:cu_1780480000_abcd1234:1",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 1,
"status": "submitted",
"type": "voice_generate",
"title": "Briză de mare într-o noapte de vară",
"prompt": "Scrie o piesă pop chinezească despre malul mării într-o noapte de vară"
}
],
"pre_consumed_quota": 600000,
"billing_source": "wallet"
}
}
Despre sarcinile substituent și song_id-ul final
generate-with-voice este un endpoint de generare asincronă. Un răspuns reușit înseamnă doar că sarcina de generare a fost trimisă, nu că piesa este gata.
Semnificația câmpurilor principale din răspuns:
| Câmp | Descriere |
|---|---|
client_request_id |
ID-ul de urmărire al acestei cereri de generare. O cerere generează de obicei 2 piese, iar ambele rezultate folosesc același client_request_id. |
items[].placeholder_id |
ID substituent local al platformei, de obicei în forma pending:{client_request_id}:{index}. Nu este ID-ul final al piesei. |
items[].client_request_index |
Indexul rezultatului în aceeași cerere, de obicei 0 și 1. |
items[].status |
Starea inițială după trimitere, de exemplu submitted. Succesul sau eșecul ulterior urmează înregistrarea finală a sarcinii. |
Atenție: un placeholder_id care începe cu pending: nu poate fi folosit ca song_id final și nu poate fi trimis la /api/music/query sau la endpointurile de descărcare. Apelarea /api/music/query doar cu valori pending:* poate returna o matrice goală [], pentru că piesa reală nu este încă gata sau sarcina substituent nu a fost încă înlocuită cu ID-ul final.
Exemplu greșit:
{
"song_ids": "pending:cu_1780480000_abcd1234:0"
}
Flux corect:
- Apelează
POST /api/music/generate-with-voicepentru a trimite sarcina de generare vocală. - Salvează
client_request_id,items[].placeholder_idșiitems[].client_request_indexdin răspuns. - Interoghează în buclă
GET /api/music/generate-with-voice/results?client_request_id=cu_xxx. - Când
items[].song_idare o valoare care nu începe cupending:, apelează/api/music/query,/api/music/download-filesau/api/music/download-all.
Versiunea actuală adaugă un endpoint public de interogare:
GET /api/music/generate-with-voice/results?client_request_id=cu_xxx
Returnează rezultatele sarcinilor pentru același client_request_id la utilizatorul curent, astfel încât clientul să poată găsi singur song_id-ul final. În lista returnată:
song_ideste ID-ul real al piesei;placeholder_idapare doar cât timp sarcina este în stare substituent;- o valoare care începe cu
pending:nu poate fi folosită cu/api/music/querysau cu endpointurile de descărcare.
Dacă ai salvat doar client_request_id sau un ID substituent pending:*, apelează mai întâi acest endpoint de rezultate; dacă song_id-ul real tot nu apare, trimite client_request_id la suportul tehnic pentru localizare.
Interogarea rezultatelor generării vocale
Endpoint: GET /api/music/generate-with-voice/results
Facturare: gratuit.
Parametri de query
| Parametru | Tip | Obligatoriu | Descriere |
|---|---|---|---|
client_request_id |
string | Da | ID-ul de urmărire returnat de generate-with-voice |
Exemplu de cerere
curl -X GET "https://www.suno-api.io/api/music/generate-with-voice/results?client_request_id=cu_1780480000_abcd1234" \
-H "Authorization: Bearer YOUR_API_KEY"
Exemplu de răspuns în timpul procesării
{
"success": true,
"message": "",
"data": {
"client_request_id": "cu_1780480000_abcd1234",
"status": "processing",
"items": [
{
"song_id": "",
"placeholder_id": "pending:cu_1780480000_abcd1234:0",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 0,
"status": "processing",
"type": "voice_generate",
"title": "Briză de mare într-o noapte de vară"
}
]
}
}
Exemplu de răspuns după finalizare
{
"success": true,
"message": "",
"data": {
"client_request_id": "cu_1780480000_abcd1234",
"status": "completed",
"items": [
{
"song_id": "song_abc123",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 0,
"status": "completed",
"type": "voice_generate",
"title": "Briză de mare într-o noapte de vară",
"audio_url": "https://...",
"image_url": "https://...",
"duration": 180.5
}
]
}
}
Semnificația status-ului de nivel superior
| Stare | Descriere |
|---|---|
not_found |
Pentru utilizatorul curent nu există încă o înregistrare de sarcină cu acel client_request_id |
processing |
Cel puțin un rezultat nu este gata; continuă interogarea |
completed |
Toate rezultatele sunt gata; song_id poate fi interogat sau descărcat |
partial |
Unele gata, altele eșuate; tratează mai întâi song_id-urile finalizate |
failed |
Toate rezultatele au eșuat; verifică items[].error_message |
8. Descarcă un singur fișier
Endpoint: POST /api/music/download-file
Parametri din body
| Parametru | Tip | Obligatoriu | Descriere |
|---|---|---|---|
song_id |
string | Da | ID-ul piesei |
kind |
string | Da | Tipul descărcării: audio, cover, wav, video |
Exemplu de cerere
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_abc123",
"kind": "audio"
}' \
--output song.mp3
Răspunsul este un flux de fișier; Content-Type și numele fișierului urmează ce returnează backendul.
9. Descarcă resursele piesei ca arhivă
Endpoint: POST /api/music/download-all
Parametri din body
| Parametru | Tip | Obligatoriu | Descriere |
|---|---|---|---|
song_id |
string | Da | ID-ul piesei |
Exemplu de cerere
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_id": "song_abc123"
}' \
--output song.zip
Arhiva conține de obicei audio-ul, coperta și metadata.json; dacă un tip de resursă nu a fost încă generat, nu intră în arhivă.
Erori frecvente
| message | Descriere |
|---|---|
voice audio is required |
La trimiterea vocii sursă nu s-a furnizat nici voice_url, nici file_base64 |
invalid voice task id |
ID-ul sarcinii de voce din cale este invalid |
voice validation is not ready |
Textul de verificare nu este încă disponibil, deci audio-ul de verificare nu poate fi trimis |
selected voice is not ready |
Vocea aleasă nu poate genera încă piese (nu este pregătită, a fost ștearsă sau nu aparține contului curent) |
selected voice does not match voice task |
voice_id-ul din cerere nu corespunde sarcinii |
voice task is required |
Lipsește voice_task_id la generarea unei piese vocale |
record not found |
Sarcina / piesa nu există, nu aparține contului cheii API curente sau a fost deja ștearsă (dacă interoghezi această sarcină după ștergerea vocii vei vedea același lucru) |
Erorile acestui grup returnează întotdeauna HTTP 200: judecă rezultatul după câmpul
successdin corp (falseînseamnă eșec, motivul este înmessage) și nu te uita doar la codul de stare HTTP. Semantica completă a ștergerii unei voci (dacă rămâne utilizabilă, dacă poate fi recuperată) este în secțiunea 6.
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