Passer au contenu principal
POST
Référencer les pistes source : mashup nécessite exactement 2 pistes source — spécifiez-les via task_ids (un tableau de exactement 2 de vos task_id), avec audio_indexes optionnel (un tableau parallèle indiquant quel élément du music[] de chaque tâche, indexé à partir de 1, 1 par défaut).
custom détermine quels champs prennent effet : les champs renseignés dans le mauvais mode sont silencieusement ignorés par l’amont (sans erreur). Avec custom=true, prompt (paroles), title, tags, negative_tags, auto_lyrics, style_weight, weirdness_constraint, audio_weight et persona_id prennent effet et gpt_description est ignoré ; avec custom=false, seul gpt_description est lu (obligatoire dans ce cas — s’il manque, un 400 est renvoyé dès la soumission). vocal_gender fonctionne dans les deux modes. Si custom est omis, le backend le déduit dans cet ordre : prompt présent → true ; pas de prompt mais gpt_description présent → false ; sinon tags/title présent → true.

Authorizations

Authorization
string
requis
Toutes les interfaces nécessitent une authentification via Bearer TokenObtenir la clé API :Rendez-vous sur la page de gestion des clés API pour obtenir votre clé APILors de l’utilisation, ajoutez dans l’en-tête de la requête :

Body

model
string
défaut:"suno"
Modèle audio. Actuellement, passez suno (par défaut suno si non fourni).
task_ids
string[]
requis
Tableau de vos task_id pour les 2 pistes source (doit être exactement 2 ; tout autre nombre renvoie directement un 400 dès la soumission).
audio_indexes
integer[]
Tableau parallèle à task_ids, indiquant quel élément du music[] résultant de chaque tâche (indexé à partir de 1, 1 par défaut).
instrumental
boolean
défaut:"false"
Purement instrumental ou non (true=sans voix) ; si non fourni, par défaut false (avec voix).
version
string
défaut:"v5.5"
Version de génération : v3.5 / v4 / v4.5 / v4.5+ / v4.5-all / v5 / v5.5, influe sur la qualité audio et la facturation ; par défaut v5.5 si omis, et une valeur invalide renvoie directement un 400 dès la soumission.
custom
boolean
true=mode personnalisé (prompt utilisé comme paroles) ; false=mode inspiration (utilise gpt_description) ; si omis, déduit du contenu (voir l’avertissement ci-dessus).
prompt
string
Paroles. Prend effet lorsque custom=true (ignoré en mode inspiration).
gpt_description
string
Prompt d’inspiration. Obligatoire lorsque custom=false — s’il manque, la requête échoue avec 400 dès la soumission (l’amont n’est pas appelé, rien n’est facturé).
title
string
Titre. Ne prend effet que lorsque custom=true.
tags
string
Tags de style. Ne prend effet que lorsque custom=true.
negative_tags
string
Tags de style à exclure. Ne prend effet que lorsque custom=true.
auto_lyrics
boolean
true=réécrit les paroles fournies de façon créative. Ne prend effet que lorsque custom=true.
style_weight
number
Poids du style, 0.001.00 (les valeurs hors plage renvoient directement un 400 dès la soumission). Ne prend effet que lorsque custom=true.
weirdness_constraint
number
Poids de créativité, 0.001.00 (alias weirdness). Ne prend effet que lorsque custom=true.
audio_weight
number
Poids audio, 0.001.00. Ne prend effet que lorsque custom=true.
vocal_gender
string
Genre de voix : Male / Female. Fonctionne dans les deux modes.
persona_id
string
Id de style Persona. Ne prend effet que lorsque custom=true.
Récupérer le résultat : cette interface est une tâche asynchrone. Après soumission, vous obtenez un task_id ; interrogez GET /v1/music/tasks/{task_id} à intervalles de 3 à 5 s jusqu’à ce que status soit completed ou failed (la génération musicale prend généralement 30 à 120 s ; pendant la génération, status vaut pending et progress évolue de file d’attente 10 → prêt 50 → terminé 100). Une fois terminé, récupérez audio_url dans data.result.music[]. En cas d’échec, data.error.message en donne la raison et le quota pré-déduit est automatiquement remboursé.

Response

code
integer
Code de statut de la réponse
data
array
Tableau de données renvoyées