Aller au contenu

Suno API

RouteAPI fournit une API REST unifiée pour la génération de musique IA Suno. Générez de la musique à partir de texte, prolongez des chansons, clonez des voix, séparez des pistes et plus encore.

La génération musicale Suno est asynchrone. Flux typique :

  1. Soumettre une tâche à /suno/audios → recevoir un task_id
  2. Attendre 2-3 secondes avant de commencer l’interrogation
  3. Interroger toutes les 3-5 secondes via /suno/tasks avec action: "retrieve"
  4. Quand status devient success → récupérer l’audio_url
StatutSignificationProchaine étape
submittedSoumis, en attenteContinuer l’interrogation
queuedEn file d’attenteContinuer l’interrogation
in_progressEn cours de générationContinuer l’interrogation
success✅ TerminéRécupérer audio_url dans le premier élément du tableau data
failure❌ ÉchecVérifier le champ error
Fenêtre de terminal
curl -X POST "https://api.routeapi.ai/suno/audios" \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "chirp-v5-5",
"prompt": "A cheerful summer pop song with piano and guitar",
"async": true
}'
Fenêtre de terminal
curl -X POST "https://api.routeapi.ai/suno/tasks" \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{ "action": "retrieve", "id": "task_xxxxx" }'
{
"id": "task_xxxxx",
"task_id": "task_xxxxx",
"status": "success",
"data": [
{
"id": "audio_1",
"audio_url": "https://cdn.suno.ai/xxx.mp3",
"duration": 183.5
}
]
}
ID de modèleDurée maxLimite lyricLimite style
chirp-v5-58 minutes5000 caractères1000 caractères
chirp-v58 minutes5000 caractères1000 caractères
chirp-v4150 secondes3000 caractères200 caractères

Le point d’accès principal des opérations audio : le champ action sélectionne l’opération et le corps de la requête porte les champs dont elle a besoin.

ChampTypeDéfautDescription
modelstringchirp-v4Modèle de génération, chirp-v5-5 recommandé
actionstringgenerateType d’opération
asyncboolean—true fortement recommandé. Seul un false explicite sélectionne la branche synchrone ; lorsque le champ est omis, il n’est pas transmis et la valeur par défaut de l’amont s’applique
ActionDescriptionChamps requis
generateGénérer une nouvelle musique à partir d’un promptprompt
extendProlonger un audio existantaudio_id + continue_at
coverRéinterpréter une chanson existanteaudio_id
stemsSéparer en voix + instrumentalaudio_id
remasterRemaster l’audio pour améliorer la qualitéaudio_id

Pour les types d’action complets, consultez la documentation en anglais ou chinois.

Interroger le statut et les résultats de la tâche.

Fenêtre de terminal
curl -X POST "https://api.routeapi.ai/suno/tasks" \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{ "action": "retrieve", "id": "task_xxxxx" }'
Point d’accèsMéthodeDescription
/suno/lyricsPOSTGénérer des paroles
/suno/uploadPOSTTélécharger un fichier audio externe
/suno/personaGET/POSTGérer les personas vocales
/suno/wavPOSTExporter au format WAV

Pour la référence API complète, consultez la documentation en anglais ou chinois.

Les erreurs survenant après l’arrivée de la requête dans le gestionnaire de tâche utilisent le corps de tâche :

{ "code": "invalid_request", "message": "prompt_empty (request id: ...)", "data": null }

Les échecs d’authentification et de routage se produisent avant ce gestionnaire et conservent le corps de style OpenAI {"error": {"message": "...", "type": "...", "code": "..."}}. Voir Erreurs courantes.

StatutCodeCause
400invalid_requestUn champ obligatoire manque pour l’endpoint ou l’action ; message l’indique (par exemple prompt_empty pour /suno/lyrics, ou audio_id_vocal_start_vocal_end_required pour /suno/vox)
400task_not_existaction: "retrieve" avec un id qui n’est pas l’une de vos tâches
401—La clé API est absente, invalide ou expirée (corps de style OpenAI)
403insufficient_user_quotaLe solde du compte ou le quota de la clé ne couvre pas la pré-réservation
429—Le canal amont a signalé une limite de débit ou une saturation ; RouteAPI remplace le message brut du fournisseur
502acedata_suno_request_failedL’amont a accepté l’appel mais l’a rejeté : modération de contenu, audio_id inconnu, action non prise en charge. message contient l’explication de l’amont
502upstream_task_id_missingL’amont a renvoyé un 2xx sans ID de tâche, la tâche ne peut donc pas être interrogée ; le montant pré-réservé est remboursé
503get_channel_failedLe canal derrière la tâche a subi une défaillance grave (compte amont inutilisable, par exemple) ; RouteAPI remplace le message brut du fournisseur. (Un modèle sans aucun canal est rejeté avant le gestionnaire de tâche avec 503 model_not_found et le corps de style OpenAI)
4xx / 5xxfail_to_fetch_taskL’amont a renvoyé un statut non 2xx ; le statut et le corps sont transmis, et la pré-réservation est remboursée

Une tâche en échec (l’interrogation renvoie failure) rembourse également le montant pré-réservé ; la raison figure dans les champs error et message de l’enregistrement.

Q : Quel modèle utiliser ?
Utilisez chirp-v5-5 (le plus récent et le plus performant).

Q : Combien de temps prend la génération ?
generate prend généralement 15-40 secondes.

Q : Puis-je utiliser audio_url directement ?
Oui, le lien CDN est prêt pour la lecture ou le téléchargement.