• Suno 的主生成接口,异步任务
  • 两种模式:灵感模式(给描述)与自定义模式(给歌词)
  • 通常 30 到 120 秒出结果
POST/v1/music/generations

认证

string必填

所有接口均使用 Bearer Token 进行认证。

获取 API Key:访问控制台 创建。

请求时在请求头中添加:

Authorization: Bearer YOUR_OAIRoute_KEY

两种模式

模式customprompt 的含义生效的字段
灵感模式false(默认)创意描述,不超过 3000 字符只有 prompt 与版本
自定义模式true歌词正文,不超过 5000 字符title、style、negative_tags、auto_lyrics、persona_id 等

灵感模式下,title、style、negative_tags、auto_lyrics、persona_id 全部被忽略。

number

两种模式都生效。

number

两种模式都生效。

number

两种模式都生效。

string

两种模式都生效。

请求参数

string可选

音频模型,目前只传 suno,不传也按 suno 处理。

boolean可选

默认 false。false 时按灵感模式理解 prompt 为创意描述;true 时按自定义模式把 prompt 当歌词。

boolean可选

默认 false。为 true 时输出纯音乐,不含人声。

string可选

公共版本号,取值 v6、v6-wild、v6-mini。

与 custom_model_id 至少提供一个,若改用自定义模型则不要填本字段。

string可选

填创建自定义模型任务时返回的完整 UUID。与 version、persona_id 三者互斥,填了按自定义模型价格档计费。

string视情况

灵感模式下是描述性提示词,必填且上限 3000 字符。

自定义模式且非纯音乐时必填,上限 5000 字符。自定义纯音乐可以不填。

string可选

歌曲标题,上限 80 字符。只在自定义模式有用,灵感模式下会被丢弃。

string可选

风格标签,上限 1000 字符。只在自定义模式有用。

注意本端点叫 style,其他操作端点叫 tags。

string可选

列出不想出现的风格。自定义模式才校验。

boolean可选

为 true 会对你给的歌词再做一次加工改写。自定义模式才生效。

string可选

绑定某个 Persona 风格。自定义模式才生效,且不能与 custom_model_id 同用。

string可选

人声性别。取值 Male、Female,简写 m、f、male、female 由后端归一化。

number可选

风格权重,取值 0.00 到 1.00。两种模式都校验并生效。

number可选

创意/怪异度,取值 0.00 到 1.00。两种模式都生效。

number可选

音频权重,取值 0.00 到 1.00。两种模式都生效。

string可选

风格变化幅度,取值 off、normal、high、extra、max。可不传,官方未给固定默认值。

boolean可选

开启 Max 模式,默认 false。前提是 custom: true,按常规价格两倍收费。

string可选

输出音频格式,取值 mp3、m4a、wav。不填由服务端自行决定。

integer可选

期望时长,取值 10 到 360 秒。仅自定义模式可用,最终时长以任务实际结果为准。

响应

integer

状态码,200 表示已受理。

data[] 的元素字段 · 2 项
string

提交后为 submitted。

string

任务 ID,用于轮询。

取结果

用 GET /v1/music/tasks/{task_id} 轮询。任务查询的字段说明见「Suno 通用约定与任务查询」。

完成后结果在 data.result.music[],每一项含:

字段说明
audio_url音频地址
image_url封面图
video_url视频地址(部分任务返回)
title曲目标题
duration实际时长

失败时 data.error.message 给出原因,预扣额度会自动退回。

几个容易踩的点

灵感模式下 title 和 style 会被丢掉。 想要指定标题与风格标签,必须 custom: true。

Max 模式需要两个条件。 max_mode: true 之外还要 custom: true,否则不生效。

version 和 custom_model_id 不能同时给。 同时发送会报错。

歌词用段落标记。 以 [Verse]、[Chorus] 这类标记开头,换行在 JSON 里写成 \n。

错误码

HTTPtype说明
400invalid_request_error请求参数无效
401authentication_error身份验证失败,请检查您的API密钥
402payment_required账户余额不足,请充值后再试
429rate_limit_error请求过于频繁,请稍后再试

更多状态码与重试建议见错误码与限流,常见报错的排查步骤见常见问题。

使用示例

提交一个任务并拿到 task_id:

提交成功只表示任务已受理。真正的产物要拿返回的 task_id 去任务查询接口轮询,status 变成 completed 之后才有结果。