Documentation
Tâches de génération audio
Mis à jour le 2026-08-30
Aperçu de l’API
La génération de musique Suno et FlowMusic est asynchrone :
- Appel de
POST /v1/audios/taskspour soumettre la tâche - Enregistrez l’identifiant de tâche public renvoyé dans la réponse
- Appel de
GET /v1/tasks/{task_id}pour interroger l’état et les résultats
Le Base URL est https://api.rokoapi.com/v1, et toutes les requêtes doivent inclure Authorization: Bearer $API_KEY.
Modèles disponibles
suno-v3.5suno-v4suno-v4.5suno-v4.5-allsuno-v4.5-plussuno-v5suno-v5.5flowmusic-lyria-3-proflowmusic-lyria-3.5
La disponibilité réelle dépend de /v1/models et du groupe auquel appartient la clé API.
Générer avec FlowMusic Lyria
FlowMusic utilise les champs déclarés dans le catalogue de modèles. Renseignez au moins prompt ou metadata.lyrics et n’envoyez pas de paramètre absent des métadonnées du modèle.
{
"model": "flowmusic-lyria-3.5",
"prompt": "musique ambiante cinématographique, cordes chaleureuses et piano doux",
"duration": 30,
"metadata": {
"lyrics": "[Verse]\nNeon rain falls softly tonight",
"title": "Neon Rain",
"bpm": 120,
"seed": "42"
}
}
Générer une chanson
curl https://api.rokoapi.com/v1/audios/tasks \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v5.5",
"action": "generate",
"mode": "easy",
"prompt": "Une chanson pop estivale entraînante, avec voix féminine et guitares lumineuses"
}'
action Si omis, la valeur par défaut est generate, mode Si omis, la valeur par défaut est easy.
Mode avancé
{
"model": "suno-v5.5",
"action": "generate",
"mode": "advanced",
"lyrics": "[Verse]\nWalking through the neon rain...",
"style": "synth-pop, female vocal, 120 bpm",
"title": "Neon Rain",
"instrumental": false
}
advanced En modeprompt, lyrics, style , au moins un paramètre doit être fourni. Si lyrics_model est défini, il faut également fournir prompt.
Prolonger un extrait
{
"model": "suno-v5.5",
"action": "extend",
"continue_clip_id": "clip_123",
"continue_at": 90,
"prompt": "Évoluer vers un refrain plus puissant"
}
extend Pour continue_clip_id , il faut fournir continue_at.
Réponse à la soumission
Une soumission réussie renvoie HTTP 202: ```json
{
“id”: “task_public_id”,
“object”: “audio.generation.task”,
“status”: “queued”,
“upstream”: “Suno Task API”
}
Pour les requêtes ultérieures, utilisez toujours l' `id`public fourni ici, et non l'identifiant de tâche interne en amont.
## Interroger une tâche
```bash
curl https://api.rokoapi.com/v1/tasks/task_public_id \
-H "Authorization: Bearer $API_KEY"
Les états courants incluent queued, in_progress, completed et failed. Une fois la tâche terminée, l’URL de l’audio généré est fournie dans les résultats. Il est recommandé d’augmenter progressivement l’intervalle de polling pour éviter les requêtes trop fréquentes.
Archivage des résultats et adresses des médias
Lorsque l’archivage des médias est activé côté serveur, le succès de la tâche ne garantit pas que l’adresse du fichier est stable. Les clients doivent continuer à interroger l’état jusqu’à ce que archive_status devienne ready(ou partialen cas de succès partiel), puis persister assets[].url.
Les audio, pochettes, vidéos et paroles archivés sont transférés vers le CDN de la plateforme (https://cdn.rokoapi.com), qui renvoie des adresses HTTPS publiques non devinables, accessibles sans jeton API.
Durée de conservation
- Les médias archivés sont conservés par défaut pendant 24 heures. À l’expiration, les objets sont supprimés et l’état de l’actif correspondant passe à
expired. - La date d’expiration de chaque actif est indiquée dans
assets[].expires_at(horodatage Unix en secondes). - Pour un usage à long terme, les clients doivent télécharger et transférer les fichiers vers leur propre stockage dans les 24 heures ; ne considérez pas les adresses du CDN de la plateforme comme des liens permanents.
archive_statusdevientexpiredaprès quoi, l’ancienneassets[].urldevient indisponible.
Exemple de réponse de requête :
{
"code": "success",
"data": {
"task_id": "task_public_id",
"status": "SUCCESS",
"progress": "100%",
"result_url": "https://cdn.rokoapi.com/media/2026/07/abcdef.mp3",
"archive_status": "ready",
"assets": [
{
"output_id": "clip-1",
"kind": "audio",
"title": "Neon Rain",
"url": "https://cdn.rokoapi.com/media/2026/07/abcdef.mp3",
"content_type": "audio/mpeg",
"size": 3456789,
"expires_at": 1753862400,
"status": "ready"
},
{
"output_id": "clip-1",
"kind": "cover",
"title": "Neon Rain",
"url": "https://cdn.rokoapi.com/media/2026/07/coverxyz.jpg",
"content_type": "image/jpeg",
"expires_at": 1753862400,
"status": "ready"
},
{
"output_id": "clip-1",
"kind": "lyrics",
"title": "Neon Rain",
"url": "https://cdn.rokoapi.com/media/2026/07/lyricsxyz.txt",
"content_type": "text/plain; charset=utf-8",
"expires_at": 1753862400,
"status": "ready"
}
]
}
}
Remarque :
archive_status:pending/processing/ready/partial/failed/expiredassets: une tâche peut contenir plusieurs clips, et chaque clip peut inclureaudio,cover,video,lyricsresult_url: l’URL publique du premier audio archivé ; avant l’achèvement de l’archivage, il peut s’agir d’une URL temporaire en amontassets[].expires_at: heure de suppression prévue du fichier ; par défaut, environ 24 heures après l’archivage- Les URL de médias publics ne sont pas devinables et n’exigent pas de jeton de plateforme ; elles sont conservées par défaut pendant 24 heures avant suppression**
- Les sites en aval doivent uniquement conserver les URL publiques archivées (et les réexporter avant expiration), sans dépendre des adresses CDN temporaires en amont
Recommandations de polling :
# Continuer l'interrogation après le succès jusqu'à archive_status=ready
curl https://api.rokoapi.com/v1/tasks/task_public_id \
-H "Authorization: Bearer $API_KEY"
Paramètres
| Paramètre | Type | Description |
|---|---|---|
model | string | ID de modèle Suno, obligatoire |
action | string | generate ou extend |
mode | string | Mode de génération :easy ou advanced |
prompt | string | Description de la chanson en langage naturel |
lyrics | string | Paroles personnalisées |
style | string | Description du style, de l’émotion, des instruments, etc. |
instrumental | boolean | Générer de la musique instrumentale |
title | string | Titre de la chanson |
vocal_gender | string | Préférence vocale optionnelle |
continue_clip_id | string | ID du clip source à prolonger |
continue_at | number | Prolonger à partir de la seconde spécifiée du clip source, ne peut pas être négatif |
timeout_ms | integer | Délai d’expiration de la tâche en amont, plage de 10 000 à 7 200 000 millisecondes |
Tarification
Les différentes versions de Suno sont facturées par défaut à l’unité, le prix par défaut dans le code étant de $0.06 par appel. $0.06. Les prix des modèles et les multiplicateurs de groupe dans la console peuvent remplacer les valeurs par défaut, conformément à l’affichage sur la page de tarification.
Différences avec l’ancienne API Suno
/v1/audios/tasks utilise suno-v* les ID de modèle et l’interface de requête de tâche unifiée. L’ancienne version /suno/submit utilise suno_music, suno_lyrics et d’autres noms de modèles ; les deux ensembles d’interfaces et de noms de modèles ne peuvent pas être mélangés.
Erreurs courantes
400: chemin, action, mode ou paramètres obligatoires incorrects403: le groupe de clés n’a pas d’autorisation de modèle ou le solde est insuffisant404: l’ID de tâche n’existe pas, ou le modèle n’est pas activé dans les canaux disponibles502: réponse invalue en amont ou service de tâche temporairement indisponible