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, auto_lyrics, 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). 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_id
string
requis
Le task_id de notre côté correspondant à la tâche qui a produit la piste source (généralement un échantillon téléversé). En cas d’absence ou si la source ne peut pas être résolue, un 400 est renvoyé au moment de 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 : 1 = premier morceau ; par défaut 1 ; une génération produit généralement 2 morceaux : index 1 et 2).
start_s
number
requis
Point de départ de l’échantillonnage (secondes ; correspond à chop_sample_start_s en amont). S’il manque, renvoie immédiatement un 400 sans appeler l’amont.
end_s
number
requis
Point de fin de l’échantillonnage (secondes ; correspond à chop_sample_end_s en amont). S’il manque, renvoie immédiatement un 400 sans appeler l’amont.
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.
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