Skip to main content
随着 AI 的应用变广,各类 AI 程序已逐渐普及。AI 已逐渐深入到人们的工作生活方方面面。而 AI 涉及的行业也越来越多,从最初的写作,到医疗教育,再到现在的音乐。 Suno 是一个专业高质量的 AI 歌曲和音乐创作平台,用户只需输入简单的文本提示词,即可根据流派风格和歌词生成带有人声的歌曲。该 AI 音乐生成器由来自 Meta、TikTok、Kensho 等知名科技公司的团队成员开发,目标是不需要任何乐器工具,让所有人都可以创造美妙的音乐。 以下是模型更新的进度:
上表的 lyricstyle 限制为自定义模式(customtrue)下的上限。非自定义的灵感模式(customfalse)只填 prompt,其长度上限为 500 字符(各模型一致)。
Suno 现已支持最新的 chirp-v5-5 模型。调用最新版本时,将 model 参数设置为 chirp-v5-5 即可;chirp-v5 及更早版本仍可继续使用。 然而 Suno 官方是并没有提供 API 的,AceDataCloud 提供了一套 Suno 的 API,模拟对接了 Suno 官方,可以方便快捷地生成想要的音乐。

申请和使用

要使用 Suno Audios Generation API,首先到 Ace Data Cloud 控制台 获取您的 API Token,留作备用。 如果你尚未登录或注册,会自动跳转到登录页面邀请你注册和登录,完成后会自动返回当前页面。 一个 API Token 即可调用平台所有服务,无需为每个服务单独申请。 首次申请会赠送免费额度,可免费体验;额度不足时可在 控制台 充值通用余额。
📘 完整文档:Suno Audios Generation API →

基本使用

想些什么歌曲,可以任意输入一段文字,比如我想生成一个关于圣诞的歌曲,就可以输入 a song for Christmas,如图所示:

可以看到这里我们设置了 Request Headers,包括:
  • accept:想要接收怎样格式的响应结果,这里填写为 application/json,即 JSON 格式。
  • authorization:调用 API 的密钥,申请之后可以直接下拉选择。
另外设置了 Request Body,包括:
  • action:此次音乐生成任务的行为,默认是 generate,主要包含:extendupload_extendcoverupload_coverreplace_sectionreplace_sectionconcatstemsall_stemsremaster
  • prompt:Suno 官方的灵感模式提示词(customfalse 时生效),最大 500 字符。
  • model:此次音乐生成任务的模型,默认是 chirp-v4,主要包含:chirp-v3chirp-v4chirp-v3-5chirp-v4-5chirp-v4-5-pluschirp-v5chirp-v5-5
  • lyric:Suno 官方的自定义模式的歌词内容。chirp-v3-5chirp-v4 最大 3000 字符;chirp-v4-5 及以上(含 chirp-v5chirp-v5-5)最大 5000 字符。
  • custom:是否采用自定义模式,默认是: false
  • instrumental:Suno 官方的灵感模式的纯音乐选项。
  • title:Suno 官方的自定义模式的音乐标题。chirp-v3-5chirp-v4 最大 80 字符;chirp-v4-5 及以上最大 100 字符。
  • style:Suno 官方的自定义模式音乐风格。chirp-v3-5chirp-v4 最大 200 字符;chirp-v4-5 及以上(含 chirp-v5chirp-v5-5)最大 1000 字符。
  • style_negative:Suno 官方的自定义模式的排除风格。
  • audio_weight:上传的参考音频占比,范围 0-1,越大越依赖参考音频。
  • audio_id:参考音乐的 ID。
  • overpainting_start/overpainting_end:为已有纯音乐补充人声的起止时间,单位秒。
  • underpainting_start/underpainting_end:为清唱加伴奏的起止时间,单位秒。
  • persona_id:艺术家的歌曲 ID。
  • continue_at:以秒为单位继续现有音频的时间。例如,213.5 表示继续到 3 分 33.5 秒。
  • style_influence:自定义模式下的「Style Influence」高级参数,范围 0-1,越大越贴合所选风格。
  • replace_section_end:替换片段的最终时间。
  • replace_section_start:替换片段的起始时间。
  • vocal_gender:控制男女声偏好,女声 f,男声 m,4.5 及以上模型有效;为偏好项,不保证严格遵循。
  • weirdness:自定义模式下的「Weirdness」高级参数,范围 0-1,越大越有创意和实验性。
  • duration:期望的歌曲时长,单位秒,需为整数,取值范围 10 到 360。该参数用于自定义模式(customtrue)的歌曲生成。它是一个倾向性提示而非硬性约束:模型会参考它,但不保证达到,实际成品时长以响应中的 duration 字段为准,通常短于期望值。
  • lyric_prompt:生成歌词的 prompt,当且仅当 customtrue 并且 lyric 没有传的时候生效。
  • callback_url:需要回调结果的 URL。
  • async:可选,设为 true 时接口立即返回 task_id,无需提供 callback_url,随后通过对应的任务查询接口轮询获取结果。
生成的代码如下:

可以点击「Try」按钮直接测试 API,稍等 1-2 分钟,结果如下:
可以看到这时候我们就得到了两首歌的内容,包括标题、预览图、歌词、音频、视频等内容。 字段说明如下:
  • success:生成是否成功,如果成功则为 true,否则为 false
  • data:是一个列表,包含了生成的歌曲的详细信息。
    • state: 歌曲生成状态,主要包含四种,具体的如下:
      • succeeded:生成成功
      • pending:队列中
      • running:执行中
      • error:失败
    • id:歌曲 ID
    • title:歌曲的标题
    • image_url:歌曲的封面图片
    • lyric:歌曲的歌词
    • audio_url:歌曲的音频文件,打开就是一个 mp3 音频。
    • video_url:歌曲的视频文件,打开就是一个 mp4 视频。
    • created_at:创建的时间
    • model:使用的模型,一般是最新的 v3 模型
    • style:风格

自定义生成

如果想自定义生成歌词,可以输入歌词: 这时候 lyric 字段可以传入类似如下内容:
注意,这里的歌词中 \n 是换行符,如果你不知道如何生成歌词,可以使用 AceDataCloud 提供的歌词生成 API 来通过 prompt 生成歌词,API 是 Suno Lyrics Generation API
接下来我们要根据歌词、标题、风格自定义生成歌曲,就可以指定如下内容:
  • lyric:歌词文本
  • custom:填写为 true,代表自定义生成,该参数默认为 false,代表使用 prompt 生成。
  • title:歌曲的标题。
  • style:歌曲的风格,选填。
填写样例如下:

填写完毕之后自动生成了代码如下:

对应的代码:
测试允许,生成的效果是类似的。

自定义歌手风格生成功能

如果想使用歌手风格来生成歌曲的话,首先通过上文的基本使用生成一首歌曲, 最后得到了需要设置这个歌曲为歌手风格,然后需要进入Suno Persona API根据官方生成的音乐 ID audio_id 来生成一个歌手风格的 id 参数 persona_id,具体的参数如下图所示:

填写完毕之后自动生成了代码如下:

对应的 Python 代码:
点击运行,可以发现会得到一个结果,如下:
我们以上面的 audio_idpersona_id 分别为 97efc9f4-0e8d-4b3e-88df-14568fa1b11fe0d7319e-aa2a-44cb-b00a-916218d7cb0b 为此次的示例数据。 然后可以将参数 action 设置为 artist_consistency (如果是新版的歌手风格Persona-v2-vox,action 必须设置为 artist_consistency_vox),并且输入需要继续生成歌曲的 ID 、 歌手风格 ID,填写样例如下:

填写完毕之后自动生成了代码如下:

对应的 Python 代码:
点击运行,可以发现会得到一个结果,如下:
可以看出,结果内容与上文的是一致的,这也就实现使用歌手风格来生成歌曲的功能。

继续生成功能

如果想对已经生成的 Suno 歌曲进行继续生成的话,可以将参数 action 设置为 extend ,并且输入需要继续生成歌曲的 ID,歌曲 ID 的获取是根据基本使用来获取,通过上文可知,这时候可以看到歌曲的 ID 为:
注意,这里的歌词中 id 是生成后歌曲的 ID,如果你不知道如何生成歌曲,可以参考上文的基本使用来生成歌曲。
如果想对自己上传的歌曲进行继续生成的话,可以将参数 action 设置为 upload_extend ,并且输入需要继续生成自定义上传的歌曲 ID,歌曲 ID 的获取是使用 Suno Upload Generation API来获取,如下图所示:

接下来我们要必须填歌词、风格自定义生成歌曲,就可以指定如下内容:
  • lyric:歌词文本
  • custom:填写为 true,代表自定义生成,该参数默认为 false,代表使用 prompt 生成。
  • style:歌曲的风格,选填。
  • continue_at:以秒为单位继续现有音频的时间。例如,213.5 表示继续到 3 分 33.5 秒。
填写样例如下:

填写完毕之后自动生成了代码如下:

对应的 Python 代码:
点击运行,可以发现会得到一个结果,如下:
可以看出,结果内容与上文的是一致的,这也就实现歌曲的继续生成功能。

获取完整歌曲

当基于原有的歌曲继续生成歌曲之后,返回的歌曲并不包含原来的歌曲内容。如果要获得完整的歌曲内容,需要使用拼接功能,就可以指定如下内容:
  • action:内容为 concat
  • audio_id:最后一个片段的 ID。
比如扩展后的歌曲 ID 是:0a1e1b10-c36a-41c9-9bfb-b26d9d25db98,那么可以设置参数如下:
其他参数不变,返回的就是一首完整的歌曲,就是所有歌曲片段的拼接结果,但结果只有一首歌,样例如下:

音乐翻版

当基于原有的歌曲继续生成歌曲之后,返回的歌曲的风格可能不太合适。如果要对原先生成的歌曲(若是自定义上传的音乐也支持)进行翻版,需要使用音乐翻版方法,就可以指定如下内容:
  • action:内容为 cover,当是对自定义上传的音乐进行翻版操作的时候必须指定内容为:upload_cover
  • audio_id:之前生成歌曲的 ID。
比如原先生成后的歌曲 ID 是:0a1e1b10-c36a-41c9-9bfb-b26d9d25db98,那么可以设置参数如下:
其他参数不变,返回的就是一首翻版后的歌曲,就是对原先生成的歌曲进行翻版后的结果,样例如下:
生成的结果与上文类似,这就完成了对原先生成的歌曲进行翻版生成的过程。

替换片段

当生成歌曲之后需要进行替换歌曲片段单独操作的二次创作时,可以对歌曲的某个片段进行替换操作。
⚠️ 注意replace_section 单独使用时只会返回新生成的”替换片段”本身(即被替换那一段的新音频,时长大约等于 replace_section_end - replace_section_start,并附带少量上下文),并不会返回拼接好的整首歌曲。要得到与原曲拼接后的完整成品,需要在 replace_section 成功后,针对返回的片段 ID 再发起一次 音乐拼接 任务。完整流程见下文。
参数说明如下:
  • action:内容为 replace_section
  • audio_id:原始歌曲(被替换的源歌曲)的 ID。
  • model: 歌曲生成模型。
  • lyric: 替换后的完整歌词(包含被替换段及其上下文,与 prompt 中的内容保持一致)。
  • prompt:需要替换的那一段新歌词。
  • style:歌曲的风格,选填。
  • replace_section_start:被替换片段在原曲中的起始时间(秒)。
  • replace_section_end:被替换片段在原曲中的终止时间(秒)。

步骤一:发起替换片段任务

比如原先生成后的歌曲 ID 是:18db7ed0-2b8a-41db-91c1-b0781dcca0d4(时长 94.12 秒),希望把第 30 秒到第 60 秒处的副歌替换为新的歌词,那么可以设置参数如下:
返回的是新生成的替换片段(共 2 个候选),样例如下:
可以看到返回的两条音频时长(45.16 秒、33.8 秒)远短于原曲(94.12 秒),它们就是替换片段本身(包含一点点前后上下文用于过渡),并不是整首拼接后的歌曲。从两条候选中挑选一条满意的即可,下一步就基于这条片段做拼接。

步骤二:将替换片段拼接回原曲

针对上面挑选的片段(例如 364f9d8b-ca25-463b-9a5e-d0b7139e2d6a),按 音乐拼接 一节的方法发起 concat 任务:
返回的是拼接好的整首完整歌曲,样例如下:
此时 duration 已恢复成完整歌曲长度(105.28 秒,约等于原曲长度),audio_url 指向的就是替换完成后的整首歌。这就完成了”生成 → 替换片段 → 拼接整曲”的二次创作流程。

声曲分离

当生成歌曲之后需要进行伴奏和人声单独操作的二次创作时,可以分离纯音乐伴奏和清唱人声。就可以指定如下内容:
  • action:内容为 stems
  • audio_id:之前生成歌曲的 ID。
比如原先生成后的歌曲 ID 是:ec13e502-d043-4eb2-92ee-e900c6da69d1,那么可以设置参数如下:
通过以上参数即可得到声曲分离的结果,结果如下:
生成的结果与上文类似,这就完成了对原先生成的歌曲进行声曲分离的过程。

全轨道声曲分离

当生成歌曲之后需要进行全轨道声曲分离操作时,就可以指定如下内容:
  • action:内容为 all_stems
  • audio_id:之前生成歌曲的 ID。
比如原先生成后的歌曲 ID 是:bdf23a5a-59f5-4103-b452-054a824a7f9f,那么可以设置参数如下:
通过以上参数即可得到全轨道声曲分离的结果,结果如下:
生成的结果与上文类似,这就完成了对原先生成的歌曲进行声曲分离的过程。

自定义生成的高级参数

官方允许在自定义模式下使用高级参数 weirdness==>Weirdnessstyle_influence==>Style Influenceaudio_weight==>Audio Influence来进行生成,对应如下如的官方示例:

其中高级参数的范围都在 0-1 之间,具体的参数如下图所示:

填写完毕之后自动生成了代码如下:

对应的 Python 代码:
点击运行,可以发现会得到一个结果,如下:
这样就使用了高级参数进行生成自定义歌曲,结果与上文类似。

控制歌曲时长

默认情况下生成的歌曲时长由模型自行决定,通常在 30 秒到 4 分钟之间。如果需要更长或更短的成品,可以通过 duration 参数指定期望时长,单位是秒,取值为 10 到 360 之间的整数。 该参数用于自定义模式(customtrue)的歌曲生成。需要特别说明的是,duration 是一个倾向性提示,而不是硬性约束:模型在创作时会参考这个值,但不保证达到,实测中实际时长通常明显短于期望值,同一次请求返回的两首歌曲时长也可能相差数倍。即使是完全相同的请求,多次提交得到的时长也可能有较大差异。因此不要把它当作精确的时长控制来使用,如果业务上需要固定时长,请在拿到成品后自行裁剪或重试。 对应的 Python 代码:
需要注意的是,请求中的 duration期望时长,而响应 data 中每首歌曲的 duration 字段是该首歌曲的实际时长。两者名称相同但含义不同,实际时长不保证等于期望值。歌词长度是影响成品时长的主要因素之一,若需要较长的成品,建议同时提供更完整的歌词。 接口不会对 duration 做额外校验,参数会原样传递给模型。如果传入了当前模式或模型不支持的取值,可能表现为该值被忽略,建议先用一次请求确认效果再批量使用。

Add Insterumental 功能

2025 年 8 月份 suno 新出 Add Insterumental 功能,首先需要上传一首清唱无配音的歌曲, 让 suno 帮你配乐,首先可以先到 Suno Upload API上传一首清唱无配乐的歌曲,对应如下如的操作如下图所示:

然后需要记录上传后的audio_id,具体的结果如下图所示:

最后得到了一个audio_id:92254cab-3372-4d9e-bce9-cdcfdbc39070,然后我们还需要填写如下参数:
  • action:内容为 underpainting
  • underpainting_start:对上传的歌曲进行添加伴奏的起始时间,默认值是 0。
  • underpainting_end:对上传的歌曲进行添加伴奏的终点时间,必须小于歌曲的总时长。
  • audio_id:上传的清唱无配音的歌曲 ID。
  • style:伴奏的风格,最好是不用歌词 毕竟是配音。
填写完毕之后自动生成了代码如下:

对应的 Python 代码:
点击运行,可以发现会得到一个结果,如下:
这样就完成了对上传的清唱无配音歌曲进行配乐的操作,结果与上文类似。

Add Vocals 功能

2025 年 8 月份 suno 新出 Add Vocals 功能,首先需要上传一首纯音乐,让 suno 填词、出人声歌唱,首先可以先到 Suno Upload API上传一首清唱无配乐的歌曲,对应如下如的操作如下图所示:

然后需要记录上传后的audio_id,具体的结果如下图所示:

最后得到了一个audio_id:92254cab-3372-4d9e-bce9-cdcfdbc39070,然后我们还需要填写如下参数:
  • action:内容为 overpainting
  • overpainting_start:对上传的歌曲进行添加人声的起始时间,默认值是 0。
  • overpainting_end:对上传的歌曲进行添加人声的终点时间,必须小于歌曲的总时长。
  • audio_id:上传的清唱无配音的歌曲 ID。
  • custom:该模式下必须使用自定义模式填入歌词。
  • lyric:自定义模式下填写的歌词。
  • style:伴奏的风格。
填写完毕之后自动生成了代码如下:

对应的 Python 代码:
点击运行,可以发现会得到一个结果,如下:
这样就完成了对上传的清唱无配音歌曲进行配人声的操作,结果与上文类似。

Remaster 功能

2025 年 12 月份 suno 新出 Remaster 功能,该功能可以重新生成歌曲,不可跨账号,然后我们还需要填写如下参数:
  • action:内容为 remaster
  • audio_id:需要重新生成的歌曲 ID。
  • model:仅支持 v4.5+、v5。
  • variation_category:仅在 v5 以上版本支持,而且只有 3 个值 high normal subtle。
填写完毕之后自动生成了代码如下:

对应的 Python 代码:
点击运行,可以发现会得到一个结果,如下:
这样就完成了对已生成歌曲重新生成的操作,结果与上文类似。

Mashup 混曲生成功能

2025 年 12 月份 suno 新出 Mashup 功能,该功能可以根据俩首参考歌曲生成歌曲,然后我们还需要填写如下参数:
  • action:内容为 mashup
  • mashup_audio_ids:俩首参考歌曲的 ID。
填写完毕之后自动生成了代码如下:

对应的 Python 代码:
点击运行,可以发现会得到一个结果,如下:
这样就完成了对参考歌曲混曲生成的操作,结果与上文类似。

Samples 取样生成歌曲

2025 年 12 月份 suno 新出 Samples 功能,该功能可以根据俩首参考歌曲生成歌曲,然后我们还需要填写如下参数:
  • action:内容为 samples
  • samples_start:取样开始时间。
  • samples_end:取样结束时间。
  • audio_id:需要取样的参考歌曲的 ID。
填写完毕之后自动生成了代码如下:

对应的 Python 代码:
点击运行,可以发现会得到一个结果,如下:
这样就完成了取样生成歌曲的操作,结果与上文类似。

Inspo 灵感创作功能

Suno 新出的 Inspo 灵感创作功能,可以根据 1 到 4 段参考音频作为灵感来源,生成全新的音乐。与翻版(cover)不同,Inspo 并不会复刻原曲,而是从参考音频中提取风格灵感,再结合提示词、风格标签等生成新作品。使用时需要填写如下参数:
  • action:内容为 inspo
  • audio_urls:参考音频的 URL 列表,需提供 1 到 4 个公开可访问的音频地址。
  • model:使用的模型,例如 chirp-v5
  • prompt:歌词或创作提示词(可选)。
  • tags:音乐风格标签,例如 acoustic, folk, warm(可选)。
  • title:歌曲标题(可选)。
  • audio_weight:参考音频对生成结果的影响权重,取值范围 0 到 1(可选)。
说明:参考音频需为公开可访问的音频文件。若参考音频与平台曲库中的已知录音完全匹配,Suno 可能会因版权校验而拒绝生成,建议使用自有或由 Suno 生成的音频作为灵感来源。
对应的 Python 代码:
点击运行,可以发现会得到一个结果,如下:
这样就完成了灵感创作的操作,返回结果与普通生成歌曲一致。

异步回调

由于 Suno 生成音乐的时间相对较长,大约需要 1-2 分钟,如果 API 长时间无响应,HTTP 请求会一直保持连接,导致额外的系统资源消耗,所以本 API 也提供了异步回调的支持。 整体流程是:客户端发起请求的时候,额外指定一个 callback_url 字段,客户端发起 API 请求之后,API 会立马返回一个结果,包含一个 task_id 的字段信息,代表当前的任务 ID。当任务完成之后,生成音乐的结果会通过 POST JSON 的形式发送到客户端指定的 callback_url,其中也包括了 task_id 字段,这样任务结果就可以通过 ID 关联起来了。 下面我们通过示例来了解下具体怎样操作。 首先,Webhook 回调是一个可以接收 HTTP 请求的服务,开发者应该替换为自己搭建的 HTTP 服务器的 URL。此处为了方便演示,使用一个公开的 Webhook 样例网站 https://webhook.site/,打开该网站即可得到一个 Webhook URL,如图所示: 将此 URL 复制下来,就可以作为 Webhook 来使用,此处的样例为 https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2。 接下来,我们可以设置字段 callback_url 为上述 Webhook URL,同时填入 prompt,如图所示: 点击运行,可以发现会立即得到一个结果,如下:
稍等片刻,我们可以在 https://webhook.site/03e60575-3d96-4132-b681-b713d78116e2 上观察到生成歌曲的结果,如图所示: 内容如下:
可以看到结果中有一个 task_id 字段,其他的字段都和上文类似,通过该字段即可实现任务的关联。 当然我们也可以通过流式调用来获取结果,我们只需要将请求头里面的accept的值设置为application/x-ndjson即可,下面用一个示例输入作为示范:

等待过程中我们可以得到以下输出:
得到的结果跟基本调用类似,上面多个结果就实现了流式调用。

错误处理

如果发生错误,您将得到类似如下的错误信息:
下面是 HTTP Status Code, error.code, error.message 的列表:
说明:不同上游账号的限额和报错文案可能存在差异。通常 chirp-v3-5/chirp-v4style 限制更低(200),chirp-v4-5 及以上通常支持到 1000;当命中旧上游时,可能出现 Tags too long.style must be less than or equal 120 等兼容文案。