接口与鉴权
GET https://top.qingyuntop.ai/suno/fetch/{task_id}
使用 Authorization: Bearer YOUR_API_KEY,不发送请求体。将 TASK_ID 替换为提交响应的 data 字符串,不能使用歌曲 id 或 Responses 的 resp ID。
查询示例
cURL 展示一次查询;Python 和 Node.js 展示带 30 分钟等待上限的轮询。超时只停止本地等待,不取消服务端生成。
curl --fail-with-body "https://top.qingyuntop.ai/suno/fetch/TASK_ID" \
-H "Authorization: Bearer YOUR_API_KEY"返回结构
外层 code: "success" 表示查询成功,生成是否成功看 data.status。以下为结构示意,不是实际生成记录:
{
"code": "success",
"message": "",
"data": {
"created_at": 1789776000,
"updated_at": 1789776090,
"task_id": "TASK_ID",
"platform": "sunoapi",
"status": "SUCCESS",
"fail_reason": "",
"submit_time": 1789776000,
"finish_time": 1789776090,
"progress": "100%",
"data": [{"id":"SONG_ID","title":"清晨海岸","audio_url":"https://example.com/song.mp3","image_url":"https://example.com/cover.jpg","metadata":{"prompt":"歌词正文"}}]
}
}| 字段 | 含义 |
|---|---|
| data.task_id | 中转站公共任务 ID,后续查询与下载使用它 |
| data.status | NOT_START、SUBMITTED、QUEUED、IN_PROGRESS 等为等待状态;SUCCESS 为成功,FAILURE 为失败 |
| data.progress | 进度字符串,可能为空;不要仅凭 100% 判定成功 |
| data.fail_reason | 失败时的原因 |
| created_at、updated_at、submit_time、finish_time | rc.38 返回 Unix 秒,不是毫秒;未发生的时间可为 0 |
| data.data | 初次查询可能只有提交回执;成功后通常为歌曲数组或歌词对象,不能过早当数组遍历 |
歌曲的音频通常在 audio_url,封面在 image_url,歌词可能在歌曲的 metadata.prompt;歌词任务主要读取 text。数据由上游返回,不保证每项字段都存在。成功结果也可能包在 data.data 的上游任务对象中;解析时先检查类型,再取其内部 data。
建议通过统一任务产物接口下载音频和封面。歌词任务没有音频产物是正常情况。
错误处理
401/403 检查 Key 与权限;404 检查任务 ID 及账号归属;429 降低查询频率;5xx 可延迟重试查询。网络中断后继续 GET 原 ID,不要重新 POST 生成请求。