API de cover à partir d'un clip source
Description du point d'accès
Le cover à partir d'un clip source réutilise un clip source que vous avez déjà envoyé, ou qui existe déjà, et génère à partir de lui une nouvelle version de cover.
Point d'accès : POST /api/music/generate-from-source
Facturation : Payant, actuellement 0,6 ¥ par appel par défaut. L'envoi de l'audio source lui-même est gratuit ; la facturation intervient lorsque vous générez un cover à partir du clip source. Le montant réellement facturé suit la configuration tarifaire actuelle du back-office.
Max Mode / Variety : ce point d'accès accepte les paramètres optionnels max_mode et variety (0-4). Avec
max_mode activé, cet appel est facturé au double (0,6 → 1,2 ¥ par appel) ; variety ne coûte rien
de plus. Leur signification et leur envoi sont décrits dans la section « Paramètres avancés » de la
Présentation de la nouvelle API.
Temps d'attente et timeouts (important) : c'est un point d'accès synchrone — la commande n'est acceptée et transmise à la génération qu'à l'arrivée de la réponse. D'après les mesures, la plupart des requêtes répondent en 1 à 3 secondes, environ 10 % prennent plus de 30 secondes et la plus longue avoisine 230 secondes. Réglez le timeout du client à 300 secondes ou plus ; l'absence de réponse ne signifie pas qu'aucune génération n'a eu lieu, et ne réessayez pas juste après un timeout (cela duplique la commande et refacture). Si la connexion a été coupée, vérifiez plus tard avec
GET /api/music/songs. Voir « Temps d'attente et réglage du timeout » dans la Présentation de la nouvelle API.
Utilisation recommandée : c'est l'étape 2 du « cover en deux étapes ». À l'étape 1, envoyez le fichier avec l'API d'envoi d'audio source (gratuit) et conservez le
clip_id; à l'étape 2, appelez ce point d'accès pour lancer le cover. Ainsi l'audio n'apparaît que dans l'étape gratuite : si l'envoi échoue, il suffit de réessayer et rien n'est facturé, tandis que le corps de la requête de l'étape facturée ne fait que quelques centaines d'octets, il ne peut donc guère échouer à cause d'un transfert coupé. L'API d'envoi puis reprise en une étape place tout l'audio dans le corps de la requête, donc dès que l'audio dépasse environ 8 Mo il est facilement tronqué en transit et renvoieunexpected end of JSON input(voir « Fichiers volumineux et requêtes tronquées » sur cette page).Par ailleurs, le même
clip_idpeut être réutilisé pour Extend, Replace Section, la séparation et d'autres actions suivantes : inutile d'envoyer l'audio de nouveau.
Paramètres de la requête
Headers
| Paramètre | Type | Obligatoire | Remarques |
|---|---|---|---|
| Authorization | string | oui | Bearer YOUR_API_KEY |
| Content-Type | string | oui | application/json |
Paramètres du body
| Paramètre | Type | Obligatoire | Par défaut | Remarques |
|---|---|---|---|---|
| model | string | non | suno-v6 | Nom de modèle côté client : suno-v6, suno-v6-wild ou suno-v6-mini |
| sourceClipId | string | oui | - | ID du clip source ; vous pouvez utiliser le clip_id renvoyé par l'envoi d'audio source, le song_id réel d'un morceau que vous possédez déjà, ou le song_id réel renvoyé à la fin d'un envoi renforcé |
| sourceAudioUrl | string | non | - | URL de l'audio source |
| sourceTitle | string | non | - | Titre de l'audio source |
| prompt | string | non | - | Nouvelles paroles ou direction créative |
| customMode | boolean | non | true | Utiliser ou non le mode personnalisé |
| style | string | non | - | Tags de style |
| title | string | non | - | Titre |
| negativeTags | string | non | - | Style négatif |
| instrumental | boolean | non | false | Morceau instrumental ou non |
| waitAudio | boolean | non | false | Attendre ou non la fin de l'audio |
| vocalGender | string | non | - | Genre de la voix |
| lyricsMode | string | non | - | Mode de paroles |
| weirdnessConstraint | number | non | - | Aléatoire |
| styleWeight | number | non | - | Influence du style |
| audio_weight | number | non | - | Dépendance à l'audio de référence, plage 0.0-1.0 ; ne peut être envoyé que si un clip source ou un audio de référence est fourni |
weirdnessConstraint, styleWeight et audio_weight prennent tous un décimal de proportion entre 0.0 et 1.0, et non un entier de pourcentage ; 50 %, par exemple, s'écrit 0.5. 0 est une valeur valide ; seule l'omission du champ signifie « non spécifié ». audio_weight correspond au metadata.control_sliders.audio_weight de Suno et contrôle à quel point le résultat s'appuie sur l'audio de référence ; il ne peut être inclus que lorsque la requête contient un sourceClipId valide ou un audio de référence, donc ne l'envoyez pas pour une génération ordinaire uniquement textuelle. Avec customMode=true, mettez les nouvelles paroles dans prompt et fournissez à la fois style et title ; avec customMode=false, mettez la description créative dans prompt. instrumental et waitAudio doivent utiliser les booléens JSON true/false.
Ce point d'accès renvoie par défaut de façon asynchrone. Tant que le status renvoyé vaut pending, un audio_url vide est normal ; attendez la fin avant d'utiliser l'adresse de l'audio. sourceClipId doit être un ID réel de morceau/clip source : n'utilisez ni task_id, ni client_request_id, ni un ID de remplacement pending:.
Quel type d'ID est sourceClipId
sourceClipId est l'identifiant réel de clip Suno utilisé comme source de ce cover. L'objet morceau côté client de la plateforme nomme généralement cet identifiant song_id, tandis que les paramètres de requête du cover conservent le nom sourceClipId ; ici, les deux désignent le même ID réel de morceau.
Si la source est un envoi renforcé, interrogez d'abord la tâche d'envoi renforcé et attendez que status passe à completed, puis mettez le song_id réel renvoyé dans sourceClipId. Il est recommandé de mettre aussi l'audio_url et le title de ce résultat dans sourceAudioUrl et sourceTitle.
Ne mettez pas le task_id, le client_request_id ni un ID de remplacement pending:enhanced-upload:* de l'envoi renforcé dans sourceClipId.
Exemple de requête
curl -X POST https://www.suno-api.io/api/music/generate-from-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"sourceClipId": "uploaded_or_existing_clip_id",
"sourceAudioUrl": "https://example.com/source.mp3",
"sourceTitle": "Titre de l'audio d'origine",
"prompt": "Paroles nouvelles ou direction créative",
"customMode": true,
"style": "Mandopop, warm vocal",
"title": "Titre du cover",
"negativeTags": "noise",
"audio_weight": 0.5,
"instrumental": false,
"waitAudio": false
}'
Réponse
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "new_clip_id",
"song_title": "Titre du cover",
"status": "pending"
}
],
"source_update": {}
}
}
Remarques
Ce point d'accès s'efforce de régler la question du compte auquel appartient le clip source. Si le clip source ne peut pas être utilisé directement, le serveur peut le renvoyer à partir des informations de l'audio source, puis générer.
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