API voor stemklonen en genereren met een opgegeven stem (niet aanbevolen)
⛔ Oudere keten, niet aanbevolen voor nieuwe integraties. Deze pagina beschrijft de vroege
persona-keten (voice_task_id/generate-with-voice). Die werkt nog steeds, maar wordt niet meer aan klanten aanbevolen; de navigatie links markeert hem als "niet aanbevolen".Gebruik voor nieuwe integraties de 【Aanbevolen】 stemprofiel-API: maak een stemprofiel van één stemmonster (
POST /api/music/voice-profile/create) en gebruik het om een gekozen nummer te coveren of een nieuw nummer te zingen. Een stemprofiel is een eersteklas resource: het kan worden opgesomd, opgehaald en verwijderd, en de bronaudio blijft permanent bewaard.Als je product de volledige lus "stem aanmaken → langdurig hergebruiken → nummers coveren" nodig heeft, kies dan de nieuwe keten.
Belangrijk: een gekloonde stem kan verlopen.
De
voice_id/voice_task_iddie het stemklonen oplevert is geen eeuwig bruikbare resource: hij kan ophouden te werken door de geldigheidsduur, de accountstatus of een wijziging in de stemstatus. Integratoren mogen niet één keer klonen en daarna voor altijd een lokaal gecachte stem-ID hergebruiken.Aanbevolen werkwijze:
- Bewaar
voice_task_id,voice_id,is_available,updated_aten het tijdstip van de laatste geslaagde generatie.- Roep vóór elke generatie met een gekloonde stem
GET /api/voice/clone/tasks/{voice_task_id}ofPOST /api/voice/clone/tasks/{voice_task_id}/checkaan en bevestigis_available=true.- Geeft het endpoint terug dat de stem niet beschikbaar is, dat de taak niet bestaat of
selected voice is not ready, vraag de gebruiker dan opnieuw te klonen of een andere beschikbare stem te kiezen.- Beloof eindgebruikers niet dat een gekloonde stem een "permanent bezit" is; toon in de productinterface dat "een stem kan verlopen en opnieuw gevalideerd of gekloond moet worden".
Beschrijving van het endpoint
Deze groep endpoints maakt een herbruikbare stem en genereert daarmee nummers. De aanroeper heeft alleen de door het platform uitgegeven API-key nodig; de server regelt het indienen van taken, het synchroniseren van statussen, de facturering en de downloads.
Authenticatie: Authorization: Bearer YOUR_API_KEY
Facturering:
- Stemvalidatie, stemklonen, statusopvraging, verwijderen en downloads: gratis.
- De instap voor klonen in één stap in de werkruimte: vast 5 ¥ per aanroep; die rondt de validatie van de bronstem en de tweede verificatie-audio automatisch af en betaalt terug bij een fout.
- Automatisch doorgaan naar de verificatie-audio na een gewoon kloon: vast 5 ¥ per aanroep; bij een fout wordt volgens de bestaande flow terugbetaald.
- Een nummer genereren met een gekloonde stem: betaald, vast 1,2 ¥ per aanroep; elke aanroep levert meestal 2 plaatsaanduidingstaken op.
- Met Max Mode aan (
max_mode: truebijPOST /api/music/generate-with-voice) worden de 1,2 ¥ per aanroep tegen 2× gefactureerd, dus 2,4 ¥ per aanroep; stemgeneratie ondersteunt ookvariety(0-4, zonder extra kosten); de regels staan in het onderdeel "Geavanceerde parameters" van het overzicht van de nieuwe API.
Volgorde van aanroepen
- Roep
POST /api/voice/clone/validateaan om de bronstem te uploaden en eenvoice_task_idte krijgen. - Wacht op of poll
GET /api/voice/clone/tasks/{voice_task_id}tot jevalidate_infokrijgt. - De gebruiker leest die tekst voor en neemt de verificatie-audio op.
- Roep
POST /api/voice/clone/tasks/{voice_task_id}/generateaan om de verificatie-audio in te dienen. - Roep
POST /api/voice/clone/tasks/{voice_task_id}/checkaan of blijf de taak opvragen totis_available=true. - Roep
POST /api/music/generate-with-voiceaan om met die stem een nummer te genereren. - Het generatie-endpoint levert eerst plaatsaanduidingstaken; zodra de generatie klaar is en je de echte
song_idhebt, kun je met de download-endpoints één bestand of een pakket ophalen. - (Optioneel) Als de stem niet meer nodig is, roep dan
DELETE /api/voice/clone/voices/{voice_task_id}aan om hem te verwijderen; de semantiek staat in sectie 6.
Er is ook klonen in één stap: op de eerste opname-/uploadpagina van de werkruimte kun je in één keer afronden kiezen; het systeem doet dan validatie en stemaanmaak in één keer, zodat je geen tweede verificatie-audio hoeft op te nemen; het kost 5 ¥ per aanroep en wordt bij een fout terugbetaald.
Velden van de stemtaak
| Veld | Type | Opmerkingen |
|---|---|---|
voice_task_id |
number | Taak-ID van de stem binnen het platform; alle volgende endpoints gebruiken deze ID |
voice_id |
string | Stem-ID die gebruikt kan worden om nummers te genereren; wordt teruggegeven zodra de taak bruikbaar is |
voice_name |
string | Naam van de stem |
description |
string | Beschrijving van de stem |
style |
string | Stijl van de stem |
singer_skill_level |
string | Zangniveau; gangbare waarden: beginner, intermediate, professional |
language |
string | Taal van de bronstem, bijvoorbeeld zh, en |
validate_info |
string | De verificatietekst die voorgelezen moet worden |
validate_status |
string | Status van de validatietaak |
voice_status |
string | Status van de stemaanmaak |
is_available |
boolean | Of de stem al gebruikt kan worden om nummers te genereren |
status |
string | Taakstatus op het platform |
stage |
string | Huidige fase |
error_code |
string | Foutcode bij een mislukking |
error_message |
string | Reden van de mislukking |
source_duration_seconds |
number | Duur van de bronaudio in seconden |
created_at |
number | Tijdstempel van aanmaak |
updated_at |
number | Tijdstempel van bijwerking |
completed_at |
number | Tijdstempel van afronding |
1. Bronstem ter validatie indienen
Endpoint: POST /api/voice/clone/validate
Body-parameters
| Parameter | Type | Verplicht | Standaard | Opmerkingen |
|---|---|---|---|---|
voice_url |
string | Nee | - | URL van de audio van de bronstem. Dit of file_base64 |
file_base64 |
string | Nee | - | Audio als base64. Dit of voice_url |
file_name |
string | Nee | - | Bestandsnaam; aanbevolen bij file_base64 |
voice_name |
string | Nee | automatisch gegenereerd | Naam van de stem |
description |
string | Nee | - | Beschrijving van de stem |
style |
string | Nee | - | Stijl van de stem |
singer_skill_level |
string | Nee | beginner |
Zangniveau |
language |
string | Nee | zh |
Taal van de bronstem |
vocal_start_s |
number | Ja | - | Startseconde van de bruikbare zang |
vocal_end_s |
number | Ja | - | Eindseconde van de bruikbare zang |
source_duration_seconds |
number | Nee | - | Totale duur van de bronaudio in seconden |
vocal_end_s - vocal_start_smoet aan de minimumlengte voor een zangfragment voldoen. Upload een heldere zangopname zonder duidelijke begeleiding of ruis.
Voorbeeldverzoek
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": "Mijn Chinese vrouwenstem",
"description": "Heldere, natuurlijke Chinese vrouwenstem",
"style": "Mandopop",
"singer_skill_level": "intermediate",
"language": "zh",
"vocal_start_s": 1.2,
"vocal_end_s": 18.5,
"source_duration_seconds": 20
}'
Voorbeeldantwoord
{
"success": true,
"message": "",
"data": {
"voice": {
"voice_task_id": 123,
"voice_name": "Mijn Chinese vrouwenstem",
"language": "zh",
"validate_status": "submitted",
"is_available": false,
"status": "validate_submitted",
"stage": "validate_submitted",
"created_at": 1780480000,
"updated_at": 1780480000
}
}
}
2. Een stemtaak opvragen
Endpoint: GET /api/voice/clone/tasks/{voice_task_id}
Voorbeeldverzoek
curl https://www.suno-api.io/api/voice/clone/tasks/123 \
-H "Authorization: Bearer YOUR_API_KEY"
Voorbeeldantwoord
{
"success": true,
"message": "",
"data": {
"voice": {
"voice_task_id": 123,
"voice_name": "Mijn Chinese vrouwenstem",
"validate_info": "Lees de verificatietekst die hier wordt teruggegeven voor",
"validate_status": "success",
"is_available": false,
"status": "validate_ready",
"stage": "validate_callback"
}
}
}
3. De verificatietekst opnieuw genereren
Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/regenerate
Aanroepen wanneer de verificatietekst niet geschikt is om voor te lezen of wanneer de validatie opnieuw moet.
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. De verificatie-audio indienen en de stem aanmaken
Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/generate
Body-parameters
| Parameter | Type | Verplicht | Standaard | Opmerkingen |
|---|---|---|---|---|
verify_url |
string | Nee | - | URL van de audio die uit de verificatietekst is voorgelezen. Dit of file_base64 |
file_base64 |
string | Nee | - | Verificatie-audio als base64. Dit of verify_url |
file_name |
string | Nee | - | Bestandsnaam; aanbevolen bij file_base64 |
voice_name |
string | Nee | naam van de taak | Naam van de stem |
description |
string | Nee | beschrijving van de taak | Beschrijving van de stem |
style |
string | Nee | stijl van de taak | Stijl van de stem |
singer_skill_level |
string | Nee | instelling van de taak | Zangniveau |
Voorbeeldverzoek
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": "Mijn Chinese vrouwenstem"
}'
5. Controleren of de stem bruikbaar is
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 '{}'
Als de taak bruikbaar is, staat is_available in het antwoord op true en wordt een voice_id teruggegeven.
6. Een stem verwijderen
Endpoint: DELETE /api/voice/clone/voices/{voice_task_id}
Facturering: gratis.
curl -X DELETE https://www.suno-api.io/api/voice/clone/voices/123 \
-H "Authorization: Bearer YOUR_API_KEY"
Voorbeeldantwoord
{
"success": true,
"message": "",
"data": {
"voice_task_id": 123,
"deleted": true
}
}
| Veld | Type | Opmerkingen |
|---|---|---|
| voice_task_id | number | ID van de verwijderde stemtaak |
| deleted | boolean | Altijd true: het verwijderverzoek is aanvaard |
Wat er na het verwijderen gebeurt
- De stem kan geen nieuwe nummers meer genereren:
POST /api/music/generate-with-voicemet dezevoice_task_id(of zijnvoice_id) wordt geweigerd met de meldingselected voice is not ready, zonder kosten. - Nummers die er al mee zijn gemaakt blijven volledig onaangetast: afspelen, downloaden, verlengen, vervangen en stems splitsen werken zoals voorheen.
- Deze stemtaak verdwijnt uit opvragingen:
GET /api/voice/clone/tasks/{voice_task_id}geeftrecord not found. - De bronaudio blijft bewaard volgens het permanente bewaarbeleid van het platform (sinds 2026-09-23 wist verwijderen het geüploade stemmonster niet meer), maar dat betekent niet dat het herstelbaar is: die oude taak is afgelopen en om dezelfde stem te blijven gebruiken moet de kloonflow opnieuw worden doorlopen, wat een nieuwe
voice_task_idoplevert. - Dubbel verwijderen: dezelfde taak nogmaals verwijderen geeft
record not found(hij staat al op verwijderd en is niet meer te vinden).
7. Een nummer genereren met een gekloonde stem
Endpoint: POST /api/music/generate-with-voice
Facturering: 1,2 ¥ per aanroep.
Body-parameters
| Parameter | Type | Verplicht | Standaard | Opmerkingen |
|---|---|---|---|---|
voice_task_id |
number | Ja | - | ID van een al bruikbare stemtaak |
voice_id |
string | Nee | - | Optioneel verificatieveld; als je het stuurt moet het overeenkomen met de voice_id van de taak |
customMode |
boolean | Nee | false |
false is de inspiratiemodus, true de geavanceerde modus |
prompt |
string | Ja | - | In de inspiratiemodus de nummerbeschrijving, in de geavanceerde modus de songtekst. Geen van beide mag leeg zijn |
style |
string | Ja in geavanceerde modus | - | Stijltags; mag niet leeg zijn wanneer customMode=true |
title |
string | Ja in geavanceerde modus | - | Titel van het nummer; mag niet leeg zijn wanneer customMode=true |
negativeTags |
string | Nee | - | Uit te sluiten stijl |
instrumental |
boolean | Nee | false |
Compatibiliteitsveld; genereren met een gekloonde stem wordt altijd als gezongen nummer behandeld |
waitAudio |
boolean | Nee | false |
Compatibiliteitsveld; dit endpoint levert altijd asynchroon plaatsaanduidingstaken en wacht niet op de audio |
model |
string | Nee | suno-v6 |
Model voor gewone nummergeneratie; suno-v6, suno-v6-wild of suno-v6-mini |
vocalGender |
string | Nee | - | Voorkeur voor het geslacht van de zang |
lyricsMode |
string | Nee | - | Compatibiliteitsveld; de huidige indieningsketen met gekloonde stem verandert de songtekstmodus niet op zichzelf |
weirdnessConstraint |
number | Nee | - | Creatieve sterkte |
styleWeight |
number | Nee | - | Gewicht van de stijl |
audioWeight |
number | Nee | standaardwaarde van het platform | Audio Influence (hoe zwaar de referentieaudio weegt), bereik 0.0-1.0. Wordt dit niet meegestuurd, dan geldt de platformstandaard (gelijk aan 25% in de officiële interface); 0 is een geldige waarde en betekent je helemaal niet naar de referentie voegen. Het hangt sterk samen met sourceClipId in de volgende rij: met een bron wijst het naar de referentieaudio, zonder bron naar de gekloonde stem; het platform heeft voor beide gevallen maar deze ene schuifregelaar, dus splits hem niet per gebruikssituatie in twee parameters |
sourceClipId |
string | Nee | - | De echte clip-ID in de werkruimte van het bronnummer. Stuur je die mee, dan wordt het coveren met een gekloonde stem; anders is het gewone generatie met een gekloonde stem |
sourceAudioUrl |
string | Nee | - | Weergaveveld voor de bron; het speelt geen rol bij eigendom of accountbepaling, de server volgt zijn databaserecord |
sourceTitle |
string | Nee | - | Weergaveveld voor de bron; het speelt geen rol bij eigendom of accountbepaling |
clientSubmissionId |
string | Nee | - | Compatibiliteitsveld van Create UI; voor betrouwbare deduplicatie in de klant-API moet de header Idempotency-Key worden gebruikt |
suno-v6, suno-v6-wild en suno-v6-mini worden ondersteund; een leeg model wordt als suno-v6 behandeld. De oude modellen V5/V5.5 zijn uitgefaseerd, maar historische taken kunnen nog de oude modelnamen tonen.
De gedeelde verzoekstructuur verwerkt ook Create UI-compatibiliteitsvelden zoals task, soundType, soundLoop, soundBpm, soundKey, voiceTaskId en voiceId, maar dat zijn geen geldige klantparameters voor dit endpoint: een stemtaak moet als voice_task_id worden gestuurd, een optionele stemverificatie als voice_id, en muziekgeneratie met een stem leest de sound-velden nooit.
Hoe je de generatieparameters invult
- Bij
customMode=falsebevatpromptde nummerbeschrijving; bijcustomMode=truebevatpromptde volledige songtekst, en moeten ookstyleentitleworden ingevuld. Stuur de songtekst niet naar het beschrijvingsveld van de inspiratiemodus en behandel een nummerbeschrijving niet als songtekst van de geavanceerde modus. weirdnessConstraintenstyleWeightzijn decimale verhoudingen van0.0tot1.0;50of50%is niet toegestaan.0.5is een evenwichtige waarde; weglaten betekent "niet opgegeven" en0is een geldige expliciete waarde.vocalGenderaccepteert alleenm,male,foffemale.instrumentalis hier alleen een compatibiliteitsveld: genereren met een gekloonde stem wordt altijd als gezongen nummer behandeld.waitAudioverandert hier niets; het endpoint levert altijd asynchroon plaatsaanduidingstaken. Een legeaudio_urlin het eerste resultaat is normaal: vraag op metclient_request_iden lees het audioadres pas als het resultaat klaar is.
Header-parameters
| Header | Verplicht | Opmerkingen |
|---|---|---|
Authorization: Bearer ... |
Ja | Klant-API-token |
Content-Type: application/json |
Ja | JSON-verzoekbody |
Idempotency-Key |
Nee, sterk aanbevolen | Maximaal 128 tekens. Bij dezelfde gebruiker, token, endpoint, sleutel en body wordt maar één keer gefactureerd en één taak aangemaakt |
Gedrag van Idempotency-Key:
- Het eerste verzoek schrijft vóór de facturering een blijvend idempotentierecord;
- Is dezelfde sleutel met hetzelfde verzoek al afgerond, dan wordt het eerste acceptatieantwoord herhaald, zonder tweede afschrijving of tweede taak;
- Dezelfde sleutel met een andere body wordt geweigerd;
- Dezelfde sleutel die nog in behandeling is geeft een stabiele "in behandeling"-fout en geeft alleen een veilige
client_request_idterug zodra die is gegenereerd; - Mislukt het eerste verzoek onder een sleutel, dan blijft de foutstatus staan; opnieuw proberen vereist een nieuwe sleutel.
Voorwaarden voor coveren met sourceClipId
Coveren vanaf een bron in de klant-API wordt volledig server-side afgehandeld: de toegang tot het bronnummer wordt op de server bepaald en de klant stuurt geen accountgegevens mee. Of het kan, blijkt uit het werkelijke antwoord van het endpoint.
De bron moet toebehoren aan de huidige API-gebruiker, een afgerond nummer in de werkruimte zijn dat niet pending: is, en bruikbare audio hebben. Ondersteund worden gewone generatie, bronnen uit een gewone upload en het eindnummer van een versterkte upload; tussenrecords van een versterkte upload worden vóór de facturering geweigerd. De server accepteert alleen de door de klant gestuurde bronnummer-ID en nooit een account-ID; een onbeschikbare of niet-afgeronde bron geeft een fout vóór de facturering.
Voorbeeldverzoek
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": "Schrijf een Chinees popnummer over de kust op een zomernacht",
"style": "Mandopop, warm piano, emotional",
"title": "Zeewind op een zomernacht",
"negativeTags": "noise, low quality",
"instrumental": false,
"model": "suno-v6"
}'
Voorbeeldantwoord
{
"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": "Zeewind op een zomernacht",
"prompt": "Schrijf een Chinees popnummer over de kust op een zomernacht"
},
{
"placeholder_id": "pending:cu_1780480000_abcd1234:1",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 1,
"status": "submitted",
"type": "voice_generate",
"title": "Zeewind op een zomernacht",
"prompt": "Schrijf een Chinees popnummer over de kust op een zomernacht"
}
],
"pre_consumed_quota": 600000,
"billing_source": "wallet"
}
}
Over plaatsaanduidingstaken en de definitieve song_id
generate-with-voice is een asynchroon generatie-endpoint. Een geslaagd antwoord betekent alleen dat de generatietaak is ingediend, niet dat het nummer klaar is.
Betekenis van de belangrijkste velden in het antwoord:
| Veld | Opmerkingen |
|---|---|
client_request_id |
Tracking-ID van dit generatieverzoek. Eén verzoek genereert meestal 2 nummers en beide resultaten delen deze client_request_id. |
items[].placeholder_id |
Lokale plaatsaanduidings-ID van het platform, meestal in de vorm pending:{client_request_id}:{index}. Dit is niet de definitieve nummer-ID. |
items[].client_request_index |
Resultaatindex binnen hetzelfde verzoek, meestal 0 en 1. |
items[].status |
Beginstatus na het indienen, bijvoorbeeld submitted. Later succes of falen volgt het definitieve taakrecord. |
Let op: een placeholder_id die met pending: begint kan niet als definitieve song_id dienen en ook niet aan /api/music/query of de download-endpoints worden doorgegeven. Alleen met pending:* /api/music/query aanroepen kan een lege array [] opleveren, omdat het echte nummer nog niet klaar is of de plaatsaanduidingstaak nog niet door de definitieve nummer-ID is vervangen.
Onjuist voorbeeld:
{
"song_ids": "pending:cu_1780480000_abcd1234:0"
}
Juiste volgorde:
- Roep
POST /api/music/generate-with-voiceaan om de stemgeneratietaak in te dienen. - Bewaar
client_request_id,items[].placeholder_idenitems[].client_request_indexuit het antwoord. - Poll
GET /api/music/generate-with-voice/results?client_request_id=cu_xxx. - Zodra
items[].song_ideen waarde heeft die niet metpending:begint, roep je/api/music/query,/api/music/download-fileof/api/music/download-allaan.
De huidige versie voegt een openbaar opvraag-endpoint toe:
GET /api/music/generate-with-voice/results?client_request_id=cu_xxx
Het geeft de taakresultaten voor dezelfde client_request_id onder de huidige gebruiker terug, zodat klanten de definitieve song_id zelf kunnen opzoeken. In de teruggegeven lijst:
song_idis de echte nummer-ID;placeholder_idverschijnt alleen zolang de taak nog in de plaatsaanduidingsstatus staat;- een waarde die met
pending:begint kan niet met/api/music/queryof de download-endpoints worden gebruikt.
Heb je alleen de client_request_id of een pending:*-plaatsaanduidings-ID bewaard, roep dan eerst dit resultaten-endpoint aan; is de echte song_id nog steeds niet te vinden, stuur de client_request_id dan naar de technische support om hem te lokaliseren.
De resultaten van stemgeneratie opvragen
Endpoint: GET /api/music/generate-with-voice/results
Facturering: gratis.
Query-parameters
| Parameter | Type | Verplicht | Opmerkingen |
|---|---|---|---|
client_request_id |
string | Ja | De door generate-with-voice teruggegeven tracking-ID |
Voorbeeldverzoek
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"
Voorbeeldantwoord tijdens verwerking
{
"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": "Zeewind op een zomernacht"
}
]
}
}
Voorbeeldantwoord na afronding
{
"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": "Zeewind op een zomernacht",
"audio_url": "https://...",
"image_url": "https://...",
"duration": 180.5
}
]
}
}
Betekenis van de bovenste status
| Status | Opmerkingen |
|---|---|
not_found |
Voor de huidige gebruiker bestaat nog geen taakrecord met die client_request_id |
processing |
Minstens één resultaat is nog niet klaar; blijf pollen |
completed |
Alle resultaten zijn klaar; je kunt met de song_id opvragen of downloaden |
partial |
Deels klaar, deels mislukt; behandel eerst de afgeronde song_id-waarden |
failed |
Alle resultaten zijn mislukt; bekijk items[].error_message |
8. Eén bestand downloaden
Endpoint: POST /api/music/download-file
Body-parameters
| Parameter | Type | Verplicht | Opmerkingen |
|---|---|---|---|
song_id |
string | Ja | Nummer-ID |
kind |
string | Ja | Downloadtype: audio, cover, wav, video |
Voorbeeldverzoek
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
Het antwoord is een bestandsstream; Content-Type en bestandsnaam volgen wat de backend teruggeeft.
9. De bronnen van een nummer als pakket downloaden
Endpoint: POST /api/music/download-all
Body-parameters
| Parameter | Type | Verplicht | Opmerkingen |
|---|---|---|---|
song_id |
string | Ja | Nummer-ID |
Voorbeeldverzoek
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
Het pakket bevat meestal de audio, de hoes en metadata.json; is een soort bron nog niet gegenereerd, dan komt die niet in het archief.
Veelvoorkomende fouten
| message | Opmerkingen |
|---|---|
voice audio is required |
Bij het indienen van de bronstem is noch voice_url noch file_base64 opgegeven |
invalid voice task id |
De stemtaak-ID in het pad is ongeldig |
voice validation is not ready |
De verificatietekst is er nog niet, dus de verificatie-audio kan niet worden ingediend |
selected voice is not ready |
De gekozen stem kan nog geen nummers genereren (niet gereed, verwijderd of niet van het huidige account) |
selected voice does not match voice task |
De voice_id in het verzoek komt niet overeen met de taak |
voice task is required |
voice_task_id ontbreekt bij het genereren van een stemnummer |
record not found |
De taak / het nummer bestaat niet, hoort niet bij het account van de huidige API-key, of is al verwijderd (vraag je deze taak op na het verwijderen van de stem, dan zie je hetzelfde) |
Fouten van deze groep geven altijd HTTP 200 terug: beoordeel het resultaat aan het veld
successin de body (falsebetekent mislukking, met de reden inmessage) en kijk niet alleen naar de HTTP-statuscode. De volledige semantiek van het verwijderen van een stem (of die bruikbaar blijft, of die hersteld kan worden) staat in sectie 6.
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