API de clonage vocal et de génération avec voix (non recommandé)
⛔ Ancienne chaîne, non recommandée pour les nouvelles intégrations. Cette page décrit la chaîne
personad'origine (voice_task_id/generate-with-voice). Elle fonctionne toujours, mais n'est plus recommandée aux clients ; le menu de gauche la signale comme « non recommandé ».Pour une nouvelle intégration, utilisez l'【Recommandé】 API de profil vocal : créez un profil vocal à partir d'un échantillon de voix (
POST /api/music/voice-profile/create), puis servez-vous-en pour reprendre une chanson choisie ou pour en chanter une nouvelle. Le profil vocal est une ressource de premier ordre : il peut être listé, consulté et supprimé, et son audio source est conservé de façon permanente.Si votre produit a besoin de la boucle complète « créer une voix → la réutiliser durablement → reprendre des chansons », privilégiez la nouvelle chaîne.
Avertissement important : une voix clonée peut expirer.
Le
voice_id/voice_task_idproduit par le clonage vocal n'est pas une ressource utilisable indéfiniment : il peut cesser de fonctionner à cause de sa durée de validité, de l'état du compte ou de l'état de la voix. Les intégrateurs ne doivent pas cloner une fois puis réutiliser pour toujours un identifiant de voix mis en cache localement.Bonne pratique :
- Conservez
voice_task_id,voice_id,is_available,updated_atet l'heure de la dernière génération réussie.- Avant chaque génération avec une voix clonée, appelez
GET /api/voice/clone/tasks/{voice_task_id}ouPOST /api/voice/clone/tasks/{voice_task_id}/checket confirmez queis_available=true.- Si l'endpoint renvoie que la voix est indisponible, que la tâche n'existe pas ou
selected voice is not ready, invitez l'utilisateur à cloner à nouveau ou à choisir une autre voix disponible.- Ne promettez pas à l'utilisateur final qu'une voix clonée est un « actif permanent » ; indiquez dans l'interface du produit que « la voix peut expirer et nécessiter une nouvelle validation ou un nouveau clonage ».
Description du point d'accès
Ce groupe d'endpoints crée une voix réutilisable et génère des chansons avec elle. L'appelant n'a besoin que de la clé API émise par la plateforme ; le serveur se charge de la soumission des tâches, de la synchronisation d'état, de la facturation et des téléchargements.
Authentification : Authorization: Bearer YOUR_API_KEY
Facturation :
- Validation de voix, clonage vocal, consultation d'état, suppression et téléchargements : gratuits.
- L'entrée de clonage en une étape de l'espace de travail : 5 ¥ fixes par appel ; elle réalise automatiquement la validation de la voix source et le second audio de vérification, et rembourse en cas d'échec.
- Enchaîner automatiquement sur l'audio de vérification après un clonage ordinaire : 5 ¥ fixes par appel ; remboursé en cas d'échec selon le flux existant.
- Générer une chanson avec une voix clonée : payant, 1,2 ¥ fixes par appel ; chaque appel renvoie généralement 2 tâches de substitution.
- Avec le Max Mode activé (
max_mode: truesurPOST /api/music/generate-with-voice), les 1,2 ¥ par appel sont facturés au double, soit 2,4 ¥ par appel ; la génération de voix prend aussi en chargevariety(0-4, sans surcoût) ; les règles de valeur se trouvent dans la section « Paramètres avancés » de la présentation de la nouvelle API.
Déroulé des appels
- Appelez
POST /api/voice/clone/validatepour envoyer la voix source et obtenir unvoice_task_id. - Attendez ou interrogez
GET /api/voice/clone/tasks/{voice_task_id}jusqu'à obtenirvalidate_info. - L'utilisateur lit ce texte à voix haute et enregistre l'audio de vérification.
- Appelez
POST /api/voice/clone/tasks/{voice_task_id}/generatepour soumettre l'audio de vérification. - Appelez
POST /api/voice/clone/tasks/{voice_task_id}/checkou continuez à interroger la tâche jusqu'àis_available=true. - Appelez
POST /api/music/generate-with-voicepour générer une chanson avec cette voix. - L'endpoint de génération renvoie d'abord des tâches de substitution ; une fois la génération terminée et le
song_idréel obtenu, les endpoints de téléchargement permettent de récupérer un fichier unique ou une archive. - (Facultatif) Quand la voix n'est plus nécessaire, appelez
DELETE /api/voice/clone/voices/{voice_task_id}pour la supprimer ; la sémantique est en section 6.
Il existe aussi le clonage en une étape : sur la première page d'enregistrement/d'envoi de voix de l'espace de travail, vous pouvez choisir de tout terminer d'un coup ; le système réalise alors la validation et la création de la voix ensemble, sans que vous ayez à enregistrer un second audio de vérification ; facturé 5 ¥ par appel, remboursé en cas d'échec.
Champs de la tâche de voix
| Champ | Type | Remarques |
|---|---|---|
voice_task_id |
number | Identifiant de la tâche de voix dans la plateforme ; tous les endpoints suivants utilisent cet identifiant |
voice_id |
string | Identifiant de voix utilisable pour générer des chansons ; renvoyé quand la tâche est disponible |
voice_name |
string | Nom de la voix |
description |
string | Description de la voix |
style |
string | Style de la voix |
singer_skill_level |
string | Niveau de chant ; valeurs courantes : beginner, intermediate, professional |
language |
string | Langue de la voix source, par exemple zh, en |
validate_info |
string | Texte de vérification à lire à voix haute |
validate_status |
string | État de la tâche de validation |
voice_status |
string | État de création de la voix |
is_available |
boolean | Indique si la voix peut déjà servir à générer des chansons |
status |
string | État de la tâche sur la plateforme |
stage |
string | Étape en cours |
error_code |
string | Code d'erreur en cas d'échec |
error_message |
string | Cause de l'échec |
source_duration_seconds |
number | Durée de l'audio source en secondes |
created_at |
number | Horodatage de création |
updated_at |
number | Horodatage de mise à jour |
completed_at |
number | Horodatage de fin |
1. Soumettre la voix source à validation
Point d'accès : POST /api/voice/clone/validate
Paramètres du corps
| Paramètre | Type | Obligatoire | Valeur par défaut | Remarques |
|---|---|---|---|---|
voice_url |
string | Non | - | URL de l'audio de la voix source. Soit ce champ, soit file_base64 |
file_base64 |
string | Non | - | Audio en base64. Soit ce champ, soit voice_url |
file_name |
string | Non | - | Nom du fichier ; recommandé avec file_base64 |
voice_name |
string | Non | généré automatiquement | Nom de la voix |
description |
string | Non | - | Description de la voix |
style |
string | Non | - | Style de la voix |
singer_skill_level |
string | Non | beginner |
Niveau de chant |
language |
string | Non | zh |
Langue de la voix source |
vocal_start_s |
number | Oui | - | Seconde de début de la voix utile |
vocal_end_s |
number | Oui | - | Seconde de fin de la voix utile |
source_duration_seconds |
number | Non | - | Durée totale de l'audio source en secondes |
vocal_end_s - vocal_start_sdoit respecter le minimum de segment vocal. Envoyez un enregistrement vocal clair, sans accompagnement ni bruit manifestes.
Exemple de requête
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": "Ma voix féminine en chinois",
"description": "Voix féminine en chinois, claire et naturelle",
"style": "Mandopop",
"singer_skill_level": "intermediate",
"language": "zh",
"vocal_start_s": 1.2,
"vocal_end_s": 18.5,
"source_duration_seconds": 20
}'
Exemple de réponse
{
"success": true,
"message": "",
"data": {
"voice": {
"voice_task_id": 123,
"voice_name": "Ma voix féminine en chinois",
"language": "zh",
"validate_status": "submitted",
"is_available": false,
"status": "validate_submitted",
"stage": "validate_submitted",
"created_at": 1780480000,
"updated_at": 1780480000
}
}
}
2. Interroger une tâche de voix
Point d'accès : GET /api/voice/clone/tasks/{voice_task_id}
Exemple de requête
curl https://www.suno-api.io/api/voice/clone/tasks/123 \
-H "Authorization: Bearer YOUR_API_KEY"
Exemple de réponse
{
"success": true,
"message": "",
"data": {
"voice": {
"voice_task_id": 123,
"voice_name": "Ma voix féminine en chinois",
"validate_info": "Lisez à voix haute le texte de vérification renvoyé ici",
"validate_status": "success",
"is_available": false,
"status": "validate_ready",
"stage": "validate_callback"
}
}
}
3. Régénérer le texte de vérification
Point d'accès : POST /api/voice/clone/tasks/{voice_task_id}/regenerate
À appeler lorsque le texte de vérification ne se prête pas à une lecture à voix haute ou qu'une nouvelle validation est nécessaire.
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. Soumettre l'audio de vérification et créer la voix
Point d'accès : POST /api/voice/clone/tasks/{voice_task_id}/generate
Paramètres du corps
| Paramètre | Type | Obligatoire | Valeur par défaut | Remarques |
|---|---|---|---|---|
verify_url |
string | Non | - | URL de l'audio lu à partir du texte de vérification. Soit ce champ, soit file_base64 |
file_base64 |
string | Non | - | Audio de vérification en base64. Soit ce champ, soit verify_url |
file_name |
string | Non | - | Nom du fichier ; recommandé avec file_base64 |
voice_name |
string | Non | nom de la tâche | Nom de la voix |
description |
string | Non | description de la tâche | Description de la voix |
style |
string | Non | style de la tâche | Style de la voix |
singer_skill_level |
string | Non | réglage de la tâche | Niveau de chant |
Exemple de requête
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": "Ma voix féminine en chinois"
}'
5. Vérifier si la voix est utilisable
Point d'accès : 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 '{}'
Quand la tâche est utilisable, is_available vaut true dans la réponse et un voice_id est renvoyé.
6. Supprimer une voix
Point d'accès : DELETE /api/voice/clone/voices/{voice_task_id}
Facturation : gratuite.
curl -X DELETE https://www.suno-api.io/api/voice/clone/voices/123 \
-H "Authorization: Bearer YOUR_API_KEY"
Exemple de réponse
{
"success": true,
"message": "",
"data": {
"voice_task_id": 123,
"deleted": true
}
}
| Champ | Type | Remarques |
|---|---|---|
| voice_task_id | number | Identifiant de la tâche de voix supprimée |
| deleted | boolean | Toujours true, indique que la demande de suppression a été acceptée |
Ce qui se passe après la suppression
- La voix ne peut plus générer de nouvelles chansons : appeler
POST /api/music/generate-with-voiceavec cevoice_task_id(ou sonvoice_id) est refusé avec le messageselected voice is not ready, sans aucun débit. - Les chansons déjà générées avec elle ne sont pas affectées du tout : lecture, téléchargement, prolongation, remplacement et séparation fonctionnent comme avant.
- Cette tâche de voix disparaît des requêtes :
GET /api/voice/clone/tasks/{voice_task_id}renvoierecord not found. - L'audio source est conservé selon la politique de conservation permanente de la plateforme (depuis le 2026-09-23, la suppression n'efface plus l'échantillon vocal que vous avez envoyé), mais cela ne signifie pas qu'il est récupérable : cette ancienne tâche est terminée et, pour continuer avec la même voix, il faut refaire tout le parcours de clonage, ce qui donne un nouveau
voice_task_id. - Suppression en double : supprimer à nouveau la même tâche renvoie
record not found(elle est déjà à l'état supprimé et n'est plus consultable).
7. Générer une chanson avec une voix clonée
Point d'accès : POST /api/music/generate-with-voice
Facturation : 1,2 ¥ par appel.
Paramètres du corps
| Paramètre | Type | Obligatoire | Valeur par défaut | Remarques |
|---|---|---|---|---|
voice_task_id |
number | Oui | - | Identifiant d'une tâche de voix déjà disponible |
voice_id |
string | Non | - | Champ de vérification facultatif ; s'il est envoyé, il doit correspondre au voice_id de la tâche |
customMode |
boolean | Non | false |
false correspond au mode inspiration, true au mode avancé |
prompt |
string | Oui | - | En mode inspiration, la description de la chanson ; en mode avancé, les paroles. Ni l'un ni l'autre ne peut être vide |
style |
string | Oui en mode avancé | - | Étiquettes de style ; ne peut pas être vide quand customMode=true |
title |
string | Oui en mode avancé | - | Titre de la chanson ; ne peut pas être vide quand customMode=true |
negativeTags |
string | Non | - | Style à exclure |
instrumental |
boolean | Non | false |
Champ de compatibilité ; la génération avec voix clonée est toujours traitée comme une chanson chantée |
waitAudio |
boolean | Non | false |
Champ de compatibilité ; cet endpoint renvoie toujours les tâches de substitution de façon asynchrone et n'attend pas l'audio |
model |
string | Non | suno-v6 |
Modèle de génération ordinaire ; suno-v6, suno-v6-wild ou suno-v6-mini |
vocalGender |
string | Non | - | Préférence de genre vocal |
lyricsMode |
string | Non | - | Champ de compatibilité ; la chaîne de soumission actuelle avec voix clonée ne change pas à elle seule le mode de paroles |
weirdnessConstraint |
number | Non | - | Force créative |
styleWeight |
number | Non | - | Poids du style |
audioWeight |
number | Non | valeur par défaut de la plateforme | Audio Influence (importance de l'audio de référence), plage 0.0-1.0. Si le champ n'est pas envoyé, la valeur par défaut de la plateforme s'applique (équivalent à 25 % dans l'interface officielle) ; 0 est une valeur valide qui signifie ne pas se rapprocher du tout de la référence. Ce champ est étroitement lié au sourceClipId de la ligne suivante : avec une source il vise l'audio de référence, sans source il vise la voix clonée ; la plateforme n'a que ce seul curseur pour les deux cas, ne le scindez donc pas en deux paramètres par usage |
sourceClipId |
string | Non | - | Identifiant réel du clip dans l'espace de travail de la chanson source. S'il est envoyé, on entre dans la reprise avec voix clonée ; sinon, c'est une génération ordinaire avec voix clonée |
sourceAudioUrl |
string | Non | - | Champ d'affichage de la source ; il n'intervient ni dans la propriété ni dans la décision de compte, le serveur se fonde sur son enregistrement en base |
sourceTitle |
string | Non | - | Champ d'affichage de la source ; il n'intervient ni dans la propriété ni dans la décision de compte |
clientSubmissionId |
string | Non | - | Champ de compatibilité Create UI ; une déduplication fiable côté API client doit passer par l'en-tête Idempotency-Key |
suno-v6, suno-v6-wild et suno-v6-mini sont pris en charge ; un modèle vide est traité comme suno-v6. Les anciens modèles V5/V5.5 sont retirés, mais d'anciennes tâches peuvent encore afficher leurs noms.
La structure de requête partagée interprète aussi des champs de compatibilité Create UI comme task, soundType, soundLoop, soundBpm, soundKey, voiceTaskId et voiceId, mais ce ne sont pas des paramètres client valides pour cet endpoint : la tâche de voix doit être envoyée via voice_task_id, la vérification facultative de voix via voice_id, et la génération musicale avec voix ne lit jamais les champs sound.
Comment remplir les paramètres de génération
- Avec
customMode=false,promptcontient la description de la chanson ; aveccustomMode=true,promptcontient les paroles complètes, etstyleettitledoivent aussi être renseignés. N'envoyez pas les paroles dans le champ de description du mode inspiration et ne traitez pas une description de chanson comme des paroles de mode avancé. weirdnessConstraintetstyleWeightsont des proportions décimales de0.0à1.0; on ne peut pas envoyer50ni50%.0.5est une valeur équilibrée ; les omettre signifie « non spécifié », et0est une valeur explicite valide.vocalGendern'accepte quem,male,foufemale.instrumentaln'est qu'un champ de compatibilité sur cet endpoint : la génération avec voix clonée est toujours traitée comme une chanson chantée.waitAudione change pas le comportement ici ; l'endpoint renvoie toujours les tâches de substitution de façon asynchrone. Unaudio_urlvide dans le résultat initial est normal : interrogez avecclient_request_idet ne lisez l'adresse audio qu'une fois le résultat terminé.
En-têtes
| En-tête | Obligatoire | Remarques |
|---|---|---|
Authorization: Bearer ... |
Oui | Jeton de l'API client |
Content-Type: application/json |
Oui | Corps JSON |
Idempotency-Key |
Non, fortement recommandé | Jusqu'à 128 caractères. À utilisateur, jeton, endpoint, clé et corps identiques, la facturation et la création de tâche n'ont lieu qu'une fois |
Comportement de Idempotency-Key :
- La première requête écrit un enregistrement d'idempotence persistant avant la facturation ;
- Si la même clé avec la même requête est déjà terminée, la première réponse d'acceptation est rejouée, sans second débit ni seconde tâche ;
- La même clé avec un corps différent est refusée ;
- La même clé encore en cours renvoie une erreur « en cours » stable, et n'expose un
client_request_idsûr que lorsqu'il a été généré ; - Après l'échec de la première requête sous une clé, l'état d'échec est conservé ; une nouvelle tentative exige une nouvelle clé.
Conditions de reprise avec sourceClipId
La reprise à partir d'une source côté API client est gérée entièrement côté serveur : l'accès à la chanson source est résolu par le serveur et le client ne transmet aucune information de compte. La faisabilité est déterminée par la réponse réelle de l'endpoint.
La source doit appartenir à l'utilisateur d'API courant, être une chanson de l'espace de travail terminée qui n'est pas pending: et disposer d'un audio utilisable. Sont prises en charge la génération ordinaire, les sources d'envoi ordinaire et la chanson finale issue d'un envoi renforcé ; les enregistrements intermédiaires d'envoi renforcé sont refusés avant facturation. Le serveur n'accepte que l'identifiant de chanson source transmis par le client, jamais un identifiant de compte ; une source indisponible ou inachevée renvoie une erreur avant facturation.
Exemple de requête
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": "Écris une chanson pop chinoise sur un bord de mer par nuit d'été",
"style": "Mandopop, warm piano, emotional",
"title": "Brise de mer par nuit d'été",
"negativeTags": "noise, low quality",
"instrumental": false,
"model": "suno-v6"
}'
Exemple de réponse
{
"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": "Brise de mer par nuit d'été",
"prompt": "Écris une chanson pop chinoise sur un bord de mer par nuit d'été"
},
{
"placeholder_id": "pending:cu_1780480000_abcd1234:1",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 1,
"status": "submitted",
"type": "voice_generate",
"title": "Brise de mer par nuit d'été",
"prompt": "Écris une chanson pop chinoise sur un bord de mer par nuit d'été"
}
],
"pre_consumed_quota": 600000,
"billing_source": "wallet"
}
}
À propos des tâches de substitution et du song_id final
generate-with-voice est un endpoint de génération asynchrone. Une réponse réussie signifie seulement que la tâche de génération a été soumise, pas que la chanson est terminée.
Signification des champs clés de la réponse :
| Champ | Remarques |
|---|---|
client_request_id |
Identifiant de suivi de cette requête de génération. Une requête génère généralement 2 chansons et les deux résultats partagent ce client_request_id. |
items[].placeholder_id |
Identifiant de substitution local à la plateforme, généralement de la forme pending:{client_request_id}:{index}. Ce n'est pas l'identifiant final de la chanson. |
items[].client_request_index |
Index du résultat dans la même requête, généralement 0 et 1. |
items[].status |
État initial après soumission, par exemple submitted. La réussite ou l'échec ultérieur suit l'enregistrement final de la tâche. |
Attention : un placeholder_id commençant par pending: ne peut pas servir de song_id final, ni être transmis à /api/music/query ou aux endpoints de téléchargement. Appeler /api/music/query avec seulement des valeurs pending:* peut renvoyer un tableau vide [], car la chanson réelle n'est pas encore terminée ou la tâche de substitution n'a pas encore été remplacée par l'identifiant final.
Exemple incorrect :
{
"song_ids": "pending:cu_1780480000_abcd1234:0"
}
Parcours correct :
- Appelez
POST /api/music/generate-with-voicepour soumettre la tâche de génération avec voix. - Conservez
client_request_id,items[].placeholder_idetitems[].client_request_indexde la réponse. - Interrogez
GET /api/music/generate-with-voice/results?client_request_id=cu_xxxen boucle. - Quand
items[].song_ida une valeur qui ne commence pas parpending:, appelez/api/music/query,/api/music/download-fileou/api/music/download-all.
La version actuelle ajoute un endpoint public de consultation :
GET /api/music/generate-with-voice/results?client_request_id=cu_xxx
Il renvoie les résultats des tâches du même client_request_id pour l'utilisateur courant, ce qui permet au client de retrouver lui-même le song_id final. Dans la liste renvoyée :
song_idest l'identifiant réel de la chanson ;placeholder_idn'apparaît que tant que la tâche est encore à l'état de substitution ;- une valeur commençant par
pending:ne peut pas être utilisée avec/api/music/queryni avec les endpoints de téléchargement.
Si vous n'avez conservé que le client_request_id ou un identifiant de substitution pending:*, appelez d'abord cet endpoint de résultats ; si le song_id réel reste introuvable, transmettez le client_request_id au support technique pour qu'il le localise.
Consulter les résultats de la génération avec voix
Point d'accès : GET /api/music/generate-with-voice/results
Facturation : gratuite.
Paramètres de requête
| Paramètre | Type | Obligatoire | Remarques |
|---|---|---|---|
client_request_id |
string | Oui | Identifiant de suivi renvoyé par generate-with-voice |
Exemple de requête
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"
Exemple de réponse en cours
{
"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": "Brise de mer par nuit d'été"
}
]
}
}
Exemple de réponse terminée
{
"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": "Brise de mer par nuit d'été",
"audio_url": "https://...",
"image_url": "https://...",
"duration": 180.5
}
]
}
}
Valeurs du status de premier niveau
| Valeur | Remarques |
|---|---|
not_found |
Aucune tâche avec ce client_request_id n'existe encore pour l'utilisateur courant |
processing |
Au moins un résultat n'est pas terminé ; continuez à interroger |
completed |
Tous les résultats sont terminés ; le song_id peut être consulté ou téléchargé |
partial |
Certains résultats sont terminés, d'autres en échec ; traitez d'abord les song_id terminés |
failed |
Tous les résultats ont échoué ; consultez items[].error_message |
8. Télécharger un fichier unique
Point d'accès : POST /api/music/download-file
Paramètres du corps
| Paramètre | Type | Obligatoire | Remarques |
|---|---|---|---|
song_id |
string | Oui | Identifiant de la chanson |
kind |
string | Oui | Type de téléchargement : audio, cover, wav, video |
Exemple de requête
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
La réponse est un flux de fichier ; le Content-Type et le nom du fichier suivent ce que renvoie le backend.
9. Télécharger les ressources de la chanson dans une archive
Point d'accès : POST /api/music/download-all
Paramètres du corps
| Paramètre | Type | Obligatoire | Remarques |
|---|---|---|---|
song_id |
string | Oui | Identifiant de la chanson |
Exemple de requête
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
L'archive contient généralement l'audio, la pochette et metadata.json ; si un type de ressource n'a pas encore été généré, il n'est pas inclus dans l'archive.
Erreurs courantes
| message | Remarques |
|---|---|
voice audio is required |
Ni voice_url ni file_base64 n'a été fourni lors de l'envoi de la voix source |
invalid voice task id |
L'identifiant de tâche de voix dans le chemin est invalide |
voice validation is not ready |
Le texte de vérification n'est pas encore disponible, l'audio de vérification ne peut donc pas être soumis |
selected voice is not ready |
La voix choisie ne peut pas encore générer de chansons (non prête, supprimée ou n'appartenant pas au compte courant) |
selected voice does not match voice task |
Le voice_id de la requête ne correspond pas à la tâche |
voice task is required |
voice_task_id est manquant lors de la génération d'une chanson avec voix |
record not found |
La tâche / chanson n'existe pas, n'appartient pas au compte de la clé API courante, ou a déjà été supprimée (interroger cette tâche après avoir supprimé la voix donne le même résultat) |
Les erreurs de ce groupe renvoient toujours HTTP 200 : jugez le résultat avec le champ
successdu corps (falsesignifie échec, avec la raison dansmessage) et ne vous fiez pas uniquement au code de statut HTTP. La sémantique complète de la suppression d'une voix (reste-t-elle utilisable, peut-elle être restaurée) se trouve en section 6.
Obtenir une clé d'API
Créez une clé d'API dans la console après votre inscription. Chaque génération coûte 0,6 ¥ et renvoie 2 pistes, les téléchargements sont illimités et aucun numéro de téléphone n'est requis.
Obtenir une clé d'API Retour à la présentation