API de téléchargement et d'écoute des médias de morceaux

Mis à jour le 2026-09-18 · équipe Suno-API

Description du point d'accès

Ce groupe de points d'accès sépare « obtenir une adresse de média » de « télécharger réellement le fichier » :

Facturation : Tout est gratuit. Le téléchargement et l'écoute ne font que lire des médias déjà hébergés par la plateforme ; ils n'appellent pas Suno et ne sont pas facturés.

Modèle recommandé : suno-v6. Vous pouvez utiliser suno-v6, suno-v6-wild ou suno-v6-mini.

Authentification

Paramètre Type Obligatoire Remarques
Authorization string oui Bearer YOUR_API_KEY (GET /api/music/download accepte aussi une session de navigateur)
Content-Type string oui application/json

Types de médias pris en charge (kind)

kind Remarques
song Audio (mp3 en est l'alias et la valeur par défaut ; les réponses renvoient toujours song)
wav Fichier WAV ; à préparer d'abord avec l'API de génération/récupération WAV
video Vidéo (mp4 est un alias)
midi MIDI par stem ; valable uniquement pour les stems dont la séparation est terminée — voir l'API de récupération MIDI
cover Image de pochette (image est un alias)
lyrics Texte des paroles (.txt) ; uniquement accessible via download-file / GET /api/music/download — download-url ne renvoie pas d'adresse de paroles
timestamped_lyrics Fichier de paroles horodatées (.lrc, alias lrc). Actuellement seuls certains morceaux sont pris en charge ; quand la réponse est success:false, utilisez l'API de paroles horodatées pour récupérer la timeline et générer le fichier vous-même

1) Obtenir une adresse de média

curl -X POST https://www.suno-api.io/api/music/download-url \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_id": "song_id", "kind": "song"}'
{
  "code": 200,
  "message": "success",
  "data": {
    "song_id": "song_id",
    "kind": "song",
    "url": "https://media.suno-api.io/assets/song_id-mp3.mp3",
    "nav_url": "https://media.suno-api.io/assets/song_id-mp3.mp3?...&response-content-disposition=attachment..."
  }
}
Paramètre Type Obligatoire Remarques
song_id string oui L'ID de votre propre morceau
kind string non Voir le tableau ci-dessus ; par défaut song
refresh boolean non Passer true force une nouvelle préparation de la ressource (par exemple après que le fichier sur le CDN a été récupéré)

url sert à la lecture ou à la copie de votre côté ; nav_url porte Content-Disposition: attachment, ce qui permet de la coller directement dans la barre d'adresse du navigateur pour télécharger (utile quand certains navigateurs mobiles ne gèrent pas le téléchargement par blob).

⚠️ Validité de l'adresse : 7 jours — copiez le fichier à temps

url / nav_url pointent vers le stockage objet de la plateforme et expirent par défaut au bout de 7 jours (les fichiers sont récupérés et l'ancienne adresse renvoie 404). Copiez-les dans votre propre stockage pendant ces 7 jours.

Après expiration, inutile de régénérer le morceau : rappelez POST /api/music/download-url (ou passez refresh: true) pour obtenir de nouvelles adresses valides pour ce morceau. Ce groupe de points d'accès est gratuit et n'entraîne aucun frais supplémentaire.

2) Télécharger directement un fichier unique

curl -X POST https://www.suno-api.io/api/music/download-file \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_id": "song_id", "kind": "song"}' \
  -o song.mp3

Le corps de la réponse est un flux de fichier (pas du JSON) et Content-Disposition contient déjà le nom du fichier. Les paroles et les paroles horodatées ne s'obtiennent qu'avec ce point d'accès (download-url ne renvoie que des adresses de médias, pas les paroles). Le fichier .lrc n'est actuellement pris en charge que pour certains morceaux ; s'il renvoie success:false, générez le .lrc vous-même avec l'API de paroles horodatées comme dans la section suivante, sans réessayer.

Comment obtenir des paroles horodatées (.lrc)

Deux étapes sont recommandées, et elles fonctionnent pour n'importe quel morceau :

Étape 1 : récupérer la timeline mot par mot (gratuit)

curl -X POST https://www.suno-api.io/api/lyrics/timeline \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "suno-v6", "song_id": "song_id"}'

La réponse est un tableau brut (sans enveloppe data) ; chaque élément a la forme {"word": "…", "start_s": 1.117, "end_s": 8.138, "success": true, "p_align": 0.99}. word contient déjà des sauts de ligne, vous pouvez donc le découper par ligne ; pour le sens des champs, le filtrage des passages instrumentaux et d'autres mises en garde, voir les « Champs » et les « Notes d'utilisation » de l'API de paroles horodatées.

Étape 2 : construire vous-même le .lrc à partir de start_s (format de temps [mm:ss.cc])

def to_lrc(segments):
    lines = []
    for seg in segments:
        text = seg["word"].strip()
        if not text:
            continue
        start = max(0.0, float(seg["start_s"]))
        cs = int(start * 100 + 0.5)
        lines.append(f"[{cs // 6000:02d}:{(cs % 6000) // 100:02d}.{cs % 100:02d}]{text}")
    return "\n".join(lines)

GET /api/music/download?song_id=<id>&kind=lrc permet aussi de télécharger directement le .lrc généré par le serveur, mais actuellement seuls certains morceaux sont pris en charge : si la réponse est success:false, générez-le vous-même comme ci-dessus — inutile de réessayer, et la facturation n'est pas affectée.

3) Téléchargement groupé

curl -X POST https://www.suno-api.io/api/music/download-all \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_ids": ["song_id_1", "song_id_2"]}' \
  -o songs.zip

Utilisez soit song_id (un seul), soit song_ids (lot, jusqu'à 50 entrées). Le corps de la réponse est un flux ZIP.

4) Adresse de téléchargement stable

GET /api/music/download?song_id=<id>&kind=<kind> est le point d'entrée de téléchargement fourni directement dans les réponses de morceau. Il accepte à la fois une clé d'API et une session de navigateur, se comporte comme download-file et convient pour être figé dans un client ou un lecteur tiers.

5) Écoute pendant la génération

curl -X POST https://www.suno-api.io/api/music/generation-stream-url \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"song_ids": ["song_id_1", "song_id_2"]}'
{
  "code": 200,
  "message": "success",
  "data": {
    "items": [
      {
        "song_id": "song_id_1",
        "url": "https://media.suno-api.io/assets/song_id_1-mp3.mp3",
        "expires_at": 0,
        "content_type": "audio/mpeg",
        "playable_until_completed": false,
        "mode": "mp3",
        "ranges": true
      }
    ]
  }
}
Paramètre Type Obligatoire Remarques
song_id string non Un seul ID de morceau
song_ids string[] non Lot, jusqu'à 24 entrées (le maximum de stems d'un lot de séparation automatique)

Un playable_until_completed à true signifie qu'il s'agit d'une adresse d'écoute temporaire pour un morceau en cours de génération ; passez à l'adresse définitive une fois le morceau terminé. Si un morceau échoue, cet élément porte un champ error et les autres sont renvoyés normalement.

Remarques

SuivantAPI de téléchargement Free2

Obtenir une clé d'API

Créez une clé d'API dans la console après votre inscription. Chaque génération coûte 0,6 ¥ et renvoie 2 pistes, les téléchargements sont illimités et aucun numéro de téléphone n'est requis.

Obtenir une clé d'API Retour à la présentation