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 :

  1. Appel de POST /v1/audios/tasks pour soumettre la tâche
  2. Enregistrez l’identifiant de tâche public renvoyé dans la réponse
  3. 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.5
  • suno-v4
  • suno-v4.5
  • suno-v4.5-all
  • suno-v4.5-plus
  • suno-v5
  • suno-v5.5
  • flowmusic-lyria-3-pro
  • flowmusic-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_status devient expired après quoi, l’ancienne assets[].url devient 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 / expired
  • assets : une tâche peut contenir plusieurs clips, et chaque clip peut inclure audio, cover, video, lyrics
  • result_url : l’URL publique du premier audio archivé ; avant l’achèvement de l’archivage, il peut s’agir d’une URL temporaire en amont
  • assets[].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ètreTypeDescription
modelstringID de modèle Suno, obligatoire
actionstringgenerate ou extend
modestringMode de génération :easy ou advanced
promptstringDescription de la chanson en langage naturel
lyricsstringParoles personnalisées
stylestringDescription du style, de l’émotion, des instruments, etc.
instrumentalbooleanGénérer de la musique instrumentale
titlestringTitre de la chanson
vocal_genderstringPréférence vocale optionnelle
continue_clip_idstringID du clip source à prolonger
continue_atnumberProlonger à partir de la seconde spécifiée du clip source, ne peut pas être négatif
timeout_msintegerDé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 incorrects
  • 403 : le groupe de clés n’a pas d’autorisation de modèle ou le solde est insuffisant
  • 404 : l’ID de tâche n’existe pas, ou le modèle n’est pas activé dans les canaux disponibles
  • 502 : réponse invalue en amont ou service de tâche temporairement indisponible