API 参考
Suno 音乐生成
Suno 异步音乐接口:POST /suno/submit/music 生成歌曲、POST /suno/submit/lyrics 生成歌词,GET /suno/fetch/{task_id} 轮询结果。兼容 SunoAPI 格式,含灵感模式、自定义模式、续写的请求示例与按次计费说明。
Suno 是异步任务接口:先提交任务拿到任务 ID,再轮询查询,直到生成完成。路径和字段兼容 SunoAPI 格式,已有代码把地址换成 https://www.tutujin.com、Key 换成本站的即可。
POST
https://www.tutujin.com/suno/submit/music请求头
| 请求头 | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer sk-...,控制台创建的 API Key |
Content-Type | 是 | application/json |
请求体里不需要 model 字段,按接口计费:
| 接口 | 用途 | 计费模型 |
|---|---|---|
POST /suno/submit/music | 生成歌曲,一次生成两首 | suno_music |
POST /suno/submit/lyrics | 生成歌词 | suno_lyrics |
GET /suno/fetch/{task_id} | 查询单个任务 | 免费 |
POST /suno/fetch | 按 {"ids": [...]} 批量查询 | 免费 |
请求参数
/suno/submit/music 有两种写法:灵感模式只写一句描述;自定义模式自己给歌词、歌名和曲风。
| 参数 | 类型 | 说明 |
|---|---|---|
gpt_description_prompt | string | 灵感模式:一句话描述想要的歌曲,歌词和风格自动生成 |
prompt | string | 自定义模式:完整歌词。调用 /suno/submit/lyrics 时是歌词主题 |
mv | string | Suno 模型版本,例如 chirp-v4。不传会使用较旧的默认版本,建议总是填写 |
title | string | 歌名(自定义模式) |
tags | string | 曲风标签,例如 pop, piano(自定义模式) |
make_instrumental | boolean | true 生成纯音乐,不含人声 |
task | string | 续写时填 extend |
continue_clip_id | string | 续写时要接着写的歌曲 clip ID |
continue_at | number | 续写起点,单位秒 |
请求示例
curl https://www.tutujin.com/suno/submit/music \
-H "Authorization: Bearer $TUTUJIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"gpt_description_prompt": "一首轻快的夏日海边流行歌,女声",
"mv": "chirp-v4",
"make_instrumental": false
}'
# 用上一步返回的 data(任务 ID)查询
curl https://www.tutujin.com/suno/fetch/$TASK_ID \
-H "Authorization: Bearer $TUTUJIN_API_KEY"import os
import time
import requests
BASE = "https://www.tutujin.com"
HEADERS = {"Authorization": "Bearer " + os.environ["TUTUJIN_API_KEY"]}
resp = requests.post(
f"{BASE}/suno/submit/music",
headers=HEADERS,
json={"gpt_description_prompt": "一首轻快的夏日海边流行歌,女声", "mv": "chirp-v4", "make_instrumental": False},
timeout=60,
)
resp.raise_for_status()
task_id = resp.json()["data"]
while True:
time.sleep(10)
task = requests.get(f"{BASE}/suno/fetch/{task_id}", headers=HEADERS, timeout=30).json()["data"]
if task["status"] in ("SUCCESS", "FAILURE"):
break
print(task["status"], task.get("fail_reason"))
for clip in task["data"] or []:
print(clip.get("title"), clip.get("audio_url"))const BASE = 'https://www.tutujin.com'
const headers = { Authorization: `Bearer ${process.env.TUTUJIN_API_KEY}`, 'Content-Type': 'application/json' }
const submit = await fetch(`${BASE}/suno/submit/music`, {
method: 'POST',
headers,
body: JSON.stringify({ gpt_description_prompt: '一首轻快的夏日海边流行歌,女声', mv: 'chirp-v4', make_instrumental: false }),
}).then((r) => r.json())
let task
do {
await new Promise((r) => setTimeout(r, 10000))
task = (await fetch(`${BASE}/suno/fetch/${submit.data}`, { headers }).then((r) => r.json())).data
} while (!['SUCCESS', 'FAILURE'].includes(task.status))
console.log(task.status, task.fail_reason)
for (const clip of task.data ?? []) console.log(clip.title, clip.audio_url)生成一首歌通常需要一到几分钟,轮询间隔 10 秒左右即可。只要歌词时,把地址换成 /suno/submit/lyrics,请求体写 {"prompt": "歌词主题"},结果在 data.data.text 里。
响应示例
提交成功:
JSON
{ "code": "success", "data": "task_xxxxxxxxxxxxxxxx", "message": "" }查询结果(歌曲):
JSON
{
"code": "success",
"data": {
"task_id": "task_xxxxxxxxxxxxxxxx",
"status": "SUCCESS",
"fail_reason": "",
"data": [
{ "id": "…", "title": "夏日海风", "audio_url": "https://…/song.mp3", "image_url": "https://…/cover.jpeg" },
{ "id": "…", "title": "夏日海风", "audio_url": "https://…/song.mp3", "image_url": "https://…/cover.jpeg" }
]
}
}| 字段 | 说明 |
|---|---|
data(提交) | 任务 ID |
data.status | NOT_START、SUBMITTED、QUEUED、IN_PROGRESS、SUCCESS、FAILURE |
data.fail_reason | 失败原因 |
data.data | 歌曲任务是两首歌的数组(audio_url 音频、image_url 封面);歌词任务是含 title、text 的对象 |
计费
- 按次计费:
/suno/submit/music每次按suno_music计费(一次生成两首),/suno/submit/lyrics按suno_lyrics计费,价格见下方列表。 - 提交被拒绝不扣费,任务最终失败会退回;查询免费。
注意事项
- 这个接口是异步的:提交后保存任务 ID,轮询或稍后再查,不要在一个请求里等结果。
- 目前只支持生成歌曲和生成歌词两个接口;拼接、分轨、上传音频等其他 Suno 功能暂不提供。
- 音频和封面地址只适合短期使用,下载后转存到自己的存储。
- 歌词或描述触发内容审核时任务会失败,修改后再提交。
支持此接口的模型
| 模型 | 厂商 | 最低价分组 | 输入 ¥/百万 | 输出 ¥/百万 | 按次 ¥/次 |
|---|---|---|---|---|---|
| Suno Lyrics | Suno | 标准 | — | — | ¥0.02 |
| Suno Music | Suno | 标准 | — | — | ¥1 |
价格为人民币,取各模型最低价分组;价格更新于 2026年11月13日 17:58。
没找到答案?加客服微信 JsnonoChat,发送报错信息里的 request id,我们帮你排查。