Passer au contenu principal
POST
Référencer la piste source : les opérations basées sur un morceau existant ne nécessitent de mémoriser aucun id en amont, il suffit de passer task_id (le task_id de notre côté correspondant à la tâche qui a produit la piste source) + audio_index (le numéro du morceau dans music[] des résultats, 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, style_weight, weirdness_constraint et audio_weight 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). 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_id
string
requis
Le task_id de notre côté correspondant à la tâche qui a produit la piste source. S’il manque ou si la source ne peut pas être résolue, un 400 est renvoyé dès la soumission.
audio_index
integer
défaut:"1"
Quel morceau du data.music[] du résultat de la tâche source (indexé à partir de 1 ; par défaut 1 ; une génération produit généralement 2 morceaux : index 1 et 2).
version
string
défaut:"v5.5"
Version de génération : v5.5 uniquement ; par défaut v5.5 si non fournie. Toute autre valeur renvoie directement un 400 dès la soumission (v3.5 / v4 renvoient une erreur ; v4.5 / v5 resteraient bloquées à 10 % en amont jusqu’au timeout de la tâche).
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.
style_weight
number
Poids du style, 0.001.00 (les valeurs hors limites 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.
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 est pending et progress passe de queued 10 → ready 50 → done 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