首页 / 博客 / Suno API 返回字段:ID 怎么区分
API

Suno API 返回字段:ID 怎么区分

看懂 Suno API 的请求 ID、受理状态、任务索引和歌曲 ID,分清每个字段该查哪个接口,并附状态判断、字段表和排错清单。

请求回执、任务卡与音频结果组成的处理流程

图:Pexels

直接答案:request_id 是异步受理回执,用来查“订单处理到哪一步”;tasks[].song_id 是真正生成的歌曲 ID,用来查状态、参数和下载媒体。tasks[].index 只是这一单里的第几首,也不是歌曲 ID。

一次生成会经过哪些对象

字段属于什么下一步用途
Idempotency-Key你自定义的请求幂等键网络重试时复用,防止同一业务重复下单
request_id平台生成的异步受理号调用 GET /api/music/requests/{request_id}
tasks[].index一次受理中的任务位置和 request_id 一起保存,便于恢复进度
song_id真实歌曲 ID查询歌曲、下载 MP3/WAV、读取详情
client_request_id平台留存的业务请求标识在详情接口里辅助追踪来源

受理回执长什么样

{
  "success": true,
  "data": {
    "request_id": "ac_2026102709000000000000000001",
    "status": "processing",
    "tasks": [
      {
        "index": 0,
        "status": "processing",
        "song_id": "f3fa09f5-3d55-4953-826c-0d23f043ec57"
      },
      {
        "index": 1,
        "status": "pending"
      }
    ]
  }
}

这时第一首已经有 song_id,第二首还没有。正确做法是按任务项分别记录,不要等两首都出现后才保存已有结果,也不要自己用字符串拼接伪造第二个 ID。

受理状态与歌曲状态不是同一层

层级常见 status含义
受理单queued已扣预授权额度,还没登记歌曲
受理单processing已提交,任务正在生成
受理单partial一次两首中已有部分完成
受理单completed两首都完成,可读真实 song_id
受理单failed受理失败,费用退回,读取 error_message
单首歌曲pending / processing仍在生成,媒体字段可以为空
单首歌曲completed / playable可进入下载流程
单首歌曲failed这一首生成失败,按单首结果处理

查询歌曲时 song_ids 怎么写

当前文档推荐英文逗号分隔字符串,不是 JSON 数组:

curl -X POST "https://www.suno-api.io/api/music/query"   -H "Authorization: Bearer $SUNO_API_KEY"   -H "Content-Type: application/json"   -d '{
    "model": "suno-v6",
    "song_ids": "id_one,id_two"
  }'

接口通常直接返回歌曲数组,而不是再包一层 data。如果你的代码同时支持旧响应,请先按数组解析,再把旧信封作为兼容回退,不要用固定下标猜结构。

关键结果字段

字段用途注意
song_id后续查询、详情、下载的主键必须持久化到数据库
status判断是否继续等待不要只看 URL 是否为空
audio_urlMP3 媒体地址未完成时可为空,默认 7 天有效
wav_url已准备的 WAV 地址可能需要先调用 WAV 接口准备
cover_url封面图用于列表和播放器
lyrics歌曲歌词不是逐词时间轴
duration时长,单位秒前端格式化后展示
parameters详情接口留存的生成参数历史字段可能缺失,不要猜值

排查顺序

  1. 只有 request_id:继续查受理进度,真实 song_id 还没登记。
  2. 有 song_id 但没有音频:查单首 status;pending 或 processing 时地址为空正常。
  3. song_ids 返回空数组:确认 ID 不是 pending: 占位值,且歌曲属于当前 Key 的主账号。
  4. completed 但媒体仍为空:改调下载接口获取地址;仍为空时记录 song_id 联系客服。
  5. 旧地址 404:重新调用查询或 download-url 获取新地址,不重新生成歌曲。

最小落库模型

generation_request:
  client_request_id
  idempotency_key
  request_id
  request_status
  created_at

generated_song:
  request_id
  task_index
  song_id
  song_status
  title
  duration
  media_url
  fetched_at

常见问题

request_id 能拿来下载歌曲吗?

不能。request_id 只定位受理单;下载使用受理结果的 tasks[].song_id 或歌曲查询结果里的 song_id。

song_ids 传数组还是逗号字符串?

当前推荐逗号分隔字符串。旧版数组写法可能在兼容层存在,但新接入不应依赖它。

查询返回空数组怎么办?

先排除 pending: 占位 ID,再确认账号数据范围。空数组表示没查到可用歌曲,不等于上游任务已经失败。

相关接口:生成 API、查询 API、媒体下载、轮询与超时。

0.6 元一次,固定出 2 首,下载不限次

官方原版 Suno 引擎,支持最新 V6,MP3 与 WAV 均可下载。注册不需要手机号。