歌曲查询与历史 API

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

本页包含三类免费查询接口:

能力 方法 接口地址
查询指定歌曲的生成状态和结果 POST /api/music/query
查询当前账号已经生成的歌曲 GET /api/music/songs
查询指定歌曲生成时留存的参数 GET /api/music/songs/:song_id

如果你用的是生成接口的受理回执模式(accept_mode=async),拿到的是受理号而不是歌曲 ID, 进度请用 GET /api/music/requests/{request_id} 查询,拿到真实 song_id 后再回到本页的接口。 详见灵感模式生成 API 的「受理回执模式」。

认证与数据范围

所有接口使用同一套 API Key 认证:

Authorization: Bearer YOUR_API_KEY

歌曲历史按 API Key 所属的 user_id 隔离。同一主账号创建的多个 API Key 可以查询该主账号的歌曲历史,但不能查询其他用户或子站账号的歌曲。

历史歌曲接口只返回真实生成歌曲,不包含:


一、查询歌曲生成状态

用于根据一个或多个歌曲 ID 查询当前生成状态和最终结果。

接口地址:POST /api/music/query

计费:免费。

Headers

参数名 类型 必填 说明
Authorization string 是 Bearer YOUR_API_KEY
Content-Type string 是 application/json

Body 参数

参数名 类型 必填 默认值 说明
model string 否 suno-v6 模型版本
song_ids string 是 - 歌曲 ID,多个使用英文逗号分隔

请求示例

curl -X POST https://www.suno-api.io/api/music/query \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "suno-v6",
    "song_ids": "clip_id_1,clip_id_2"
  }'

响应示例

[
  {
    "song_id": "clip_id_1",
    "song_title": "歌曲标题",
    "status": "completed",
    "audio_url": "https://example.com/audio.mp3",
    "video_url": "https://example.com/video.mp4",
    "cover_url": "https://example.com/cover.jpg",
    "lyrics": "歌词内容",
    "style_tags": "Mandopop, acoustic",
    "duration": 180.5,
    "model_version": "suno-v6",
    "created_at": "2026-05-21T10:00:00Z"
  }
]

兼容说明

旧版文档中 song_ids 可能写为数组。新版推荐使用逗号分隔字符串,与当前接口调用方式保持一致。

song_ids 必须是真实歌曲 ID。pending: 开头的占位 ID 不是最终 song_id,不能用于本接口;只查询占位 ID 时可能返回空数组 []。

查询响应中的 model、model_version 或上游 model_name 可能保留历史值。当前新任务应使用 suno-v6、suno-v6-wild 或 suno-v6-mini;suno-v2 至 suno-v5-5 已下线,历史记录出现这些名称不代表可以继续提交对应模型。

生成任务处于 pending、submitted 或 processing 时,audio_url、video_url 和 cover_url 可能为空,这是任务尚未完成的正常表现。不要仅根据地址为空判断失败;请结合 status 判断,并在状态完成后再次查询。只有状态完成且地址仍为空时,才建议联系技术支持并提供 song_id。

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

本接口返回的 audio_url、video_url(以及 WAV 等其它媒体地址)由平台对象存储提供,默认在 7 天后失效:到期后文件被回收,再用旧地址访问会返回 404。

  • 请在 7 天内把文件转存到你自己的存储,不要把它当作长期可用的链接。
  • 地址过期不需要重新生成歌曲、也不会再次计费:重新调用本接口(POST /api/music/query)即可拿到该歌曲新的有效地址。

二、查询账号歌曲历史

查询当前 API Key 所属主账号已经生成的歌曲,适合构建用户自己的歌曲列表、选择器或历史记录页面。

接口地址:GET /api/music/songs

计费:免费。

Query 参数

参数名 类型 必填 默认值 说明
p integer 否 1 页码,从 1 开始
page_size integer 否 20 每页数量,最大 100
q string 否 - 按标题模糊搜索,或按完整歌曲 ID 精确搜索
status string 否 - 按状态精确过滤,例如 completed、playable

结果按 created_at、内部记录 ID 倒序排列,保证翻页顺序稳定。

提交超时后的找回方式:生成类接口在受理前不会有中间响应。如果客户端在提交时超时或断开了连接,这一单可能已经受理并生成了歌曲。请用本接口按时间倒序看一眼,已受理的歌曲会正常出现在列表里;确认确实没有,再重新提交,避免重复扣费。详见新版 API 总览的「等待时间与超时设置」。

请求示例

curl "https://www.suno-api.io/api/music/songs?p=1&page_size=20&status=completed" \
  -H "Authorization: Bearer YOUR_API_KEY"

响应示例

{
  "success": true,
  "message": "",
  "data": {
    "page": 1,
    "page_size": 20,
    "total": 42,
    "items": [
      {
        "song_id": "8e31b3c0-example-song-id",
        "title": "夜色中的城市",
        "status": "completed",
        "generation_type": "custom_generate",
        "model": "suno-v6",
        "duration": 187.42,
        "audio_url": "https://example.com/audio.mp3",
        "image_url": "https://example.com/cover.jpg",
        "created_at": 1784000000,
        "completed_at": 1784000120
      }
    ]
  }
}

返回字段

字段 类型 说明
song_id string 可用于详情查询的真实歌曲 ID
title string 当前歌曲标题,可能被用户重命名
status string 当前状态
generation_type string 生成类型
model string 生成模型
duration number 音频时长,单位秒
audio_url string 音频地址,未完成时可能为空
image_url string 封面地址,可能为空
created_at integer 创建时间,Unix 秒级时间戳
completed_at integer 完成时间,Unix 秒级时间戳;未完成时可能不返回

列表接口不会返回提示词、计费字段、上游账号或原始上游响应。需要提示词和生成参数时,请调用歌曲详情接口。


三、查询歌曲生成参数

根据歌曲 ID 查询该歌曲生成时由平台留存的提示词、风格、模型和来源歌曲等参数。

接口地址:GET /api/music/songs/:song_id

计费:免费。

只能查询当前 API Key 所属主账号的歌曲。其他用户或子站账号的歌曲统一按“歌曲不存在”处理。

路径参数

参数名 类型 必填 说明
song_id string 是 真实歌曲 ID

请求示例

curl "https://www.suno-api.io/api/music/songs/8e31b3c0-example-song-id" \
  -H "Authorization: Bearer YOUR_API_KEY"

响应示例

{
  "success": true,
  "message": "",
  "data": {
    "song_id": "8e31b3c0-example-song-id",
    "title": "夜色中的城市",
    "status": "completed",
    "generation_type": "custom_generate",
    "model": "suno-v6",
    "duration": 187.42,
    "audio_url": "https://example.com/audio.mp3",
    "image_url": "https://example.com/cover.jpg",
    "video_url": "",
    "wav_url": "",
    "created_at": 1784000000,
    "completed_at": 1784000120,
    "client_request_id": "example-request-id",
    "client_request_index": 0,
    "parameters": {
      "prompt": "雨后的城市街道,关于重逢的歌词",
      "style_tags": "Mandopop, acoustic, warm vocal",
      "title": "夜色中的城市",
      "model": "suno-v6",
      "generation_type": "custom_generate",
      "source_song_id": "",
      "source_audio_url": "",
      "custom_mode": null,
      "instrumental": null,
      "negative_tags": null,
      "vocal_gender": null,
      "lyrics_mode": null,
      "wait_audio": null,
      "style_weight": null,
      "weirdness_constraint": null
    },
    "parameter_retention": {
      "core_parameters_available": true,
      "extended_parameters_available": false,
      "sources": [
        "suno_tasks"
      ],
      "unavailable_fields": [
        "custom_mode",
        "instrumental",
        "negative_tags",
        "vocal_gender",
        "lyrics_mode",
        "wait_audio",
        "style_weight",
        "weirdness_constraint"
      ]
    }
  }
}

parameters 字段

字段 类型 说明
prompt string 生成提示词或歌词
style_tags string 风格标签
title string 留存的生成标题;普通历史任务可能只保留当前标题
model string 生成模型
generation_type string 生成类型
source_song_id string 翻唱、续写等任务的来源歌曲 ID
source_audio_url string 来源音频地址
custom_mode boolean/null 是否为自定义模式;未留存时为 null
instrumental boolean/null 是否纯音乐;现有历史数据通常未独立留存
negative_tags string/null 排除风格
vocal_gender string/null 人声性别设置
lyrics_mode string/null 歌词模式;现有历史数据通常未留存
wait_audio boolean/null 是否等待完整音频;现有历史数据通常未留存
style_weight number/null 风格权重
weirdness_constraint number/null 创意/怪异度参数

prompt_view 字段(查看提示词,2026-09-28 新增)

prompt_view 是"查看提示词"专用的归一化结构:按生成类型把数据组织成固定分区, 客户端不用再自己判断哪个字段该展示。它是纯新增字段——老字段(parameters、 parameter_retention)名称与含义不变,不解析新字段的客户端完全不受影响。

"prompt_view": {
  "type": "custom_generate",
  "type_label": "高级模式",
  "generation": {
    "model": "suno-v6", "max_mode": false, "duration": 182.4,
    "title": "凌晨四点#701f37", "title_base": "凌晨四点", "title_suffix": "701f37",
    "created_at": 1790421721
  },
  "inputs": {
    "user_text": "……", "user_text_kind": "lyrics",
    "user_style": "国潮电子, 重低音贝斯, 复古合成器",
    "style_tags": "国潮电子, 重低音贝斯, 复古合成器",
    "style_source": "user", "lyrics": "……",
    "negative_tags": "", "is_instrumental": false
  },
  "extended": {
    "vocal_gender": "m", "style_weight": 0.5, "audio_weight": 0.85,
    "weirdness_constraint": 0.5, "variety": 2, "lyrics_mode": "manual",
    "custom_mode": true
  },
  "reference": { "voice_name": "sv_40_34", "source_song_id": "", "source_title": "" },
  "retention": {
    "recorded_since": "2026-09-28", "missing_reason": "",
    "not_applicable_fields": ["audio_weight"]
  }
}
字段 类型 说明
type / type_label string 生成类型原值 / 中文标签(简易生成、高级模式、音效模式、音色克隆生成…)
generation.model string 使用的模型
generation.max_mode bool 是否开启 Max Mode
generation.duration number 音频时长(秒)
generation.title string 原样标题(可能包含后缀)
generation.title_base string 去掉尾部 #xxxxxx 后缀的展示标题
generation.title_suffix string 后缀本身(不含 #);没有后缀时为空
inputs.user_text string 用户输入(描述或歌词,视类型而定)
inputs.user_text_kind string lyrics / description / cover_requirements
inputs.user_style string 用户自己填的风格(高级模式、音色、音效)
inputs.style_tags string 最终生效的风格
inputs.style_source string user = 用户填的;suno_derived = Suno 根据描述归纳出来的
inputs.lyrics string 歌词正文;没有歌词时为空,纯音乐为 [Instrumental]
inputs.negative_tags string 排除风格
inputs.is_instrumental bool 是否纯音乐
extended.* — 扩展参数,见下;没有留存的字段不会出现
reference.voice_name string 音色名(音色类才有;不返回内部 persona id)
reference.source_song_id / source_title string 翻唱、续写等任务的来源歌曲
retention.recorded_since string 扩展参数开始留存的日期(2026-09-28)
retention.missing_reason string 为什么没有扩展参数;历史数据为 not_recorded_before_20260928
retention.not_applicable_fields string[] 该生成类型本来就不需要的参数(不要显示成"参数缺失")

extended 可能出现的字段:vocal_gender、style_weight、audio_weight、 weirdness_constraint、variety、lyrics_mode、custom_mode,以及音效类的 sound_type / sound_bpm / sound_key / sound_loop。空值一律不返回。

三条展示口径(客户端按这个做,不要自己推断):

  1. 风格来源要区分:style_source=suno_derived 时请展示成 "风格(Suno 根据你的描述归纳)",不要写成"你填的风格";
  2. 内部提示词不会出现:音色翻唱类只返回用户自己填的【风格要求】/【翻唱要求】, 我们拼给模型的固定结构段不会出现在任何字段里(历史数据同样已脱敏);
  3. 没留存的参数不猜:extended 里没有就是当时没记录,用 retention 向用户解释原因。

参数留存说明

parameter_retention 用于区分“明确传入了空值”和“历史上没有保存该字段”:

普通历史歌曲通常保存了提示词、风格、当前标题、模型、生成类型和来源歌曲,但没有独立保存全部高级参数。平台不会根据 generation_type 猜测缺失值。

部分扩展音乐任务还保存了原始提示词、风格、标题、模型,以及 custom_mode、negative_tags、vocal_gender、style_weight、weirdness_constraint。即使存在扩展记录,instrumental、lyrics_mode 和 wait_audio 仍可能无法恢复。

歌曲标题可以被用户后续重命名。普通历史任务没有单独保存原始标题时,parameters.title 可能是当前标题;存在扩展任务记录时,会优先返回扩展记录保存的原始生成标题。

不存在或无权限

业务错误使用统一响应信封。歌曲不存在或不属于当前账号时返回:

{
  "success": false,
  "message": "song not found"
}

该业务错误当前使用 HTTP 200 返回,请以 success 字段判断结果。API Key 缺失、无效、过期或被禁用时返回 HTTP 401。

安全说明

歌曲历史和详情接口不会返回:

相关文章

开始接入

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

免费注册 查看完整文档