Suno API 怎么取歌曲信息、歌词和下载地址?
生成完成后,歌曲信息、逐词歌词、封面和音频地址分别用哪个接口取?本文按用途列一张清单,附请求示例,并说明哪些接口免费、地址过期了怎么办。
生成请求提交完之后,很多人卡在同一个问题上:我要的那个数据,到底用哪个接口取?这篇按用途列一张清单——歌曲信息、逐词歌词、封面、音频地址、MIDI,各自归哪个接口,哪些不要钱,地址失效了怎么办。
先说结论:要什么,用哪个接口
| 你要的东西 | 接口 | 是否收费 |
|---|---|---|
| 某首歌生成好了没、结果是什么 | POST /api/music/query | 免费 |
| 当前账号下的所有歌 | GET /api/music/songs | 免费 |
| 这首歌生成时用的参数 | GET /api/music/songs/:song_id | 免费 |
| 一个能播放或转存的地址 | POST /api/music/download-url | 免费 |
| 直接落盘成文件(MP3 / WAV / 视频 / 封面 / 歌词 / MIDI) | POST /api/music/download-file | 免费 |
| 逐词级时间轴歌词 | POST /api/lyrics/timeline | 免费 |
| 账号余额 | GET /api/user/balance | 免费 |
规律很简单:只有生成与编辑类接口收费(灵感模式、专业模式、翻唱、续写、替换段落、分轨等),上面这些读取类接口全部免费——它们只读平台已经托管的数据,不调用上游,也不扣额度。
第一步:先确认状态,再取数据
提交生成后拿到的是歌曲 ID,不是音频。先查状态,确认到 complete 再去取文件:
POST /api/music/query
{
"song_id": "你的歌曲 ID"
}
状态没完成时不要去读音频地址,会拿到空值——这是最常见的坑。歌曲列表和单曲参数查询分别在 GET /api/music/songs 与 GET /api/music/songs/:song_id,完整字段见歌曲查询 API。
第二步:取音频、封面和视频地址
要一个可以直接放进播放器、或者转存到对象存储的地址,用 download-url,用 kind 指定类型:
POST /api/music/download-url
{
"song_id": "你的歌曲 ID",
"kind": "song"
}
| kind | 拿到什么 |
|---|---|
song(默认,mp3 是别名) | MP3 音频 |
wav | WAV,需要先准备 WAV 资源 |
video | 视频文件 |
cover | 封面图 |
midi | 某一轨分轨的 MIDI,需要该轨已完成分离 |
想让浏览器直接保存文件、或者一次打包下载,改用 POST /api/music/download-file 与 POST /api/music/download-all。细节见歌曲媒体下载 API。
第三步:歌词与时间轴歌词
纯歌词文本用 download-file 的 kind: "lyrics";要做逐词高亮的卡拉 OK 效果,用时间轴接口拿每个词的时间戳:
POST /api/lyrics/timeline
{
"song_id": "你的歌曲 ID"
}
kind: "timestamped_lyrics" 也能直接取 .lrc 文件,但目前只有部分歌曲支持;返回 success:false 时就用上面的时间轴接口自己拼。见时间轴歌词 API。
常见问题
地址过一段时间打不开了,要重新生成歌曲吗?
不用,也不会再扣费。音频地址是临时取件凭证,重新调一次 query 或 download-url 就能拿到新地址。
为什么取 WAV 报错?
WAV 需要先准备好(生成 WAV 资源和取地址是两步),没准备过就取会失败。见WAV 生成与获取 API。
为什么 MIDI 拿不到?
MIDI 只对已完成的分轨轨道有效:先做分轨,再对某一轨取 MIDI。见MIDI 获取 API。
查余额要钱吗?
不要。GET /api/user/balance 免费,接入顺序见Suno API Key 怎么申请。
小结
记住一句话:生成付费,读取免费;先用 query 确认完成,再按需要取地址或文件。要接进自己的产品,从快速开始拿到 API Key 就能跑通整条链路。