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.
Aperçu du workflow
Section intitulée « Aperçu du workflow »La génération musicale Suno est asynchrone. Flux typique :
- Soumettre une tâche à
/suno/audios→ recevoir untask_id - Attendre 2-3 secondes avant de commencer l’interrogation
- Interroger toutes les 3-5 secondes via
/suno/tasksavecaction: "retrieve" - Quand status devient
success→ récupérer l’audio_url
Statuts de tâche
Section intitulée « Statuts de tâche »| Statut | Signification | Prochaine étape |
|---|---|---|
submitted | Soumis, en attente | Continuer l’interrogation |
queued | En file d’attente | Continuer l’interrogation |
in_progress | En cours de génération | Continuer l’interrogation |
success | ✅ Terminé | Récupérer audio_url dans le premier élément du tableau data |
failure | ❌ Échec | Vérifier le champ error |
Démarrage rapide
Section intitulée « Démarrage rapide »Étape 1 : Soumettre une tâche
Section intitulée « Étape 1 : Soumettre une tâche »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 }'Étape 2 : Interroger le résultat
Section intitulée « Étape 2 : Interroger le résultat »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" }'Étape 3 : Obtenir l’audio
Section intitulée « Étape 3 : Obtenir l’audio »{ "id": "task_xxxxx", "task_id": "task_xxxxx", "status": "success", "data": [ { "id": "audio_1", "audio_url": "https://cdn.suno.ai/xxx.mp3", "duration": 183.5 } ]}Modèles supportés
Section intitulée « Modèles supportés »| ID de modèle | Durée max | Limite lyric | Limite style |
|---|---|---|---|
chirp-v5-5 | 8 minutes | 5000 caractères | 1000 caractères |
chirp-v5 | 8 minutes | 5000 caractères | 1000 caractères |
chirp-v4 | 150 secondes | 3000 caractères | 200 caractères |
POST /suno/audios
Section intitulée « POST /suno/audios »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.
Paramètres principaux
Section intitulée « Paramètres principaux »| Champ | Type | Défaut | Description |
|---|---|---|---|
model | string | chirp-v4 | Modèle de génération, chirp-v5-5 recommandé |
action | string | generate | Type d’opération |
async | boolean | — | 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 |
Types d’action
Section intitulée « Types d’action »| Action | Description | Champs requis |
|---|---|---|
generate | Générer une nouvelle musique à partir d’un prompt | prompt |
extend | Prolonger un audio existant | audio_id + continue_at |
cover | Réinterpréter une chanson existante | audio_id |
stems | Séparer en voix + instrumental | audio_id |
remaster | Remaster l’audio pour améliorer la qualité | audio_id |
Pour les types d’action complets, consultez la documentation en anglais ou chinois.
POST /suno/tasks
Section intitulée « POST /suno/tasks »Interroger le statut et les résultats de la tâche.
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" }'Autres points d’accès
Section intitulée « Autres points d’accès »| Point d’accès | Méthode | Description |
|---|---|---|
/suno/lyrics | POST | Générer des paroles |
/suno/upload | POST | Télécharger un fichier audio externe |
/suno/persona | GET/POST | Gérer les personas vocales |
/suno/wav | POST | Exporter 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.
| Statut | Code | Cause |
|---|---|---|
| 400 | invalid_request | Un 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) |
| 400 | task_not_exist | action: "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) |
| 403 | insufficient_user_quota | Le 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 |
| 502 | acedata_suno_request_failed | L’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 |
| 502 | upstream_task_id_missing | L’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é |
| 503 | get_channel_failed | Le 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 / 5xx | fail_to_fetch_task | L’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.