歌曲媒体下载与试听 API

更新于 2026-09-15 · Suno-API 团队

接口说明

这一组接口把「拿媒体地址」和「真正下载文件」分开:

计费:全部免费。下载与试听只读取平台已托管的媒体,不调用 Suno,不扣费。

推荐模型:suno-v6。可用 suno-v6、suno-v6-wild 或 suno-v6-mini。

认证

参数名 类型 必填 说明
Authorization string 是 Bearer YOUR_API_KEY(GET /api/music/download 同时接受登录态)
Content-Type string 是 application/json

支持的媒体类型(kind)

kind 说明
song 音频(mp3 是它的别名,默认值;响应里统一回写为 song)
wav WAV 文件,需要先调用WAV 生成/获取 API 准备好
video 视频(mp4 是别名)
midi 分轨的 MIDI,仅对已完成的分轨轨道有效,见MIDI 获取 API
cover 封面图(image 是别名)
lyrics 歌词文本(.txt),只能用 download-file / GET /api/music/download 取,download-url 不返回歌词地址
timestamped_lyrics 时间轴歌词文件(.lrc,别名 lrc)。目前仅部分歌曲支持;返回 success:false 时请改用时间轴歌词 API 取时间轴后自行生成

1)获取媒体地址

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..."
  }
}
参数名 类型 必填 说明
song_id string 是 自己的歌曲 ID
kind string 否 见上表,默认 song
refresh boolean 否 传 true 会强制重新准备资源(例如 CDN 上文件被回收后重新生成)

url 用于播放或自行转存;nav_url 带 Content-Disposition: attachment, 适合直接赋给浏览器地址栏下载(部分国内手机浏览器不支持 blob 下载时使用)。

⚠️ 地址有效期:7 天,请及时转存

url / nav_url 指向平台的对象存储,默认在 7 天后失效(文件到期回收,旧地址会返回 404)。请在这 7 天内把文件转存到自己的存储。

过期后不必重新生成歌曲:重新调用 POST /api/music/download-url(或把 refresh 传 true)即可拿到该歌曲新的有效地址,本组接口本身免费、不额外计费。

2)直接下载单文件

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

响应体是文件流(不是 JSON),Content-Disposition 已经带好文件名。 歌词与时间轴歌词只能用这个接口取(download-url 只返回媒体地址,不返回歌词)。 其中 .lrc 文件目前仅部分歌曲支持;若返回 success:false,请按下一节用 时间轴歌词 API 自行生成 .lrc,不要重试。

时间轴歌词(.lrc)怎么取

推荐用两步,任何歌曲都适用:

第一步:取逐词时间轴(免费)

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"}'

返回直接就是数组(没有 data 外层包装),每个元素形如 {"word": "…", "start_s": 1.117, "end_s": 8.138, "success": true, "p_align": 0.99}。 word 里已经带换行,可按行拆开;字段含义、器乐段过滤等注意点见 时间轴歌词 API 的「字段说明」「使用注意」。

第二步:用 start_s 自行拼 .lrc(时间格式 [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 也可以直接下载服务端生成的 .lrc, 但目前仅部分歌曲支持:如果返回 success:false,请改用上面这种方式自行生成, 不需要重试、也不影响计费。

3)打包下载

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

song_id(单个)与 song_ids(批量,最多 50 条)二选一。响应体是 ZIP 文件流。

4)稳定下载地址

GET /api/music/download?song_id=<id>&kind=<kind> 是歌曲响应里直接给出的下载入口, 鉴权同时支持 API Key 与登录态,行为等价于 download-file,适合写死进客户端或第三方播放器。

5)生成中试听

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
      }
    ]
  }
}
参数名 类型 必填 说明
song_id string 否 单个歌曲 ID
song_ids string[] 否 批量,最多 24 条(一批自动分轨的轨道数上限)

playable_until_completed 为 true 表示这是生成中的临时试听地址,歌曲完成后请改用正式地址; 单首失败时该项会带 error 字段,其余歌曲照常返回。

注意事项

下一篇Free2 下载 API

相关文章

开始接入

注册后即可在控制台创建 API Key,0.6 元一次固定生成 2 首,下载不限次数。

免费注册 查看完整文档