还没有音频。提交表单以生成音频。
探索不同用例和参数配置
透明定价,无隐藏费用。按需支付。
| 规则与模式 | 渠道 | 积分 | 价格(美元) | 官方/参考价格 | 每日节省 |
|---|---|---|---|---|---|
Suno upload-extend musicSuno | Starter | 1per run | $0.005 | - | - |
Suno 使用完整指南
上传任意音频文件,并使用 AI 生成与源素材无缝匹配的后续延展内容。

Upload & Extend API 允许你上传任意音频文件,并让 AI 生成延展音乐的后续内容。不同于标准 extend API(适用于 Suno 生成的音轨),此 API 可处理任何音频来源——你自己的录音、其他工具生成的音乐,或任意音频文件。AI 会分析上传的音频,理解其风格、速度、调性和氛围,然后生成从源音频结尾或任意指定位置自然衔接的新内容。
让 AI 分析你的音频,并自动生成匹配的后续内容。AI 会从源音频中推断风格、速度和情绪,实现无缝延展。
通过指定起始点、风格、标题和提示词来掌控延展方向。在保持与源音频连贯性的同时,引导 AI 按特定方向延展你的音频。
适用于任何音频来源——你自己的录音、DAW 导出文件、采样或第三方生成的音乐。音频无需由 Suno 生成。
AI 会自动分析你的音频,理解速度、调性、风格和配器,从而生成听起来自然的延展内容。
可从音频中的任意位置开始延展。你可以在歌曲中段添加新段落、延长尾奏,或从某个特定时刻继续。
使用提示词和风格参数来引导延展内容的发展。既可以保持原有感觉,也可以演变出全新的方向。
只需几步即可延展你自己的音频文件
上传你想要延展的音频文件。支持 MP3、WAV、OGG、M4A 和 FLAC 格式,最大 50MB。
使用自动模式快速延展,或使用自定义模式精确控制后续内容。
在自定义模式下,指定 continueAt 位置、风格、标题,并可选地提供描述延展内容的提示词。
提交请求。AI 会分析你的音频并生成匹配的后续内容。
获取延展后的音轨,其中包含你的原始音频以及 AI 生成的新后续内容。
遵循这些建议以获得最佳效果
音质更高、声音更清晰的源文件通常能获得更好的延展效果。避免使用严重压缩或噪声较多的录音。
将 continueAt 设置在自然的音乐过渡点——乐句结尾、段落之后,或延音期间,可获得更顺滑的结果。
在提示词中描述音乐应如何发展——增强能量、过渡到桥段、创建尾奏,或添加特定元素。
上传你正在制作中的录音,让 AI 帮助生成听起来自然的后续内容来完成作品。
从任意来源获取音频并进行延展——采样、授权音乐,或其他 AI 工具的输出。
从现有作品出发,向新的方向延展,创建变体和替代版本。
上传简短的循环或片段,并将其延展为完整长度的作品。
不限于 Suno 生成的内容。可使用高质量 AI 后续生成能力延展来自任意来源的任意音频文件。
先进的 AI 能理解源音频的音乐特征,生成自然且连贯的延展内容。
易用的文件上传 API,支持所有主流音频格式。在一个无缝流程中完成上传、延展和下载。
所有 API 都需要通过 Bearer Token 进行身份验证。
Authorization: Bearer
使用 SDK 创建任务,保存返回的 taskId,并获取 Suno 的结果。
运行这些 SDK 示例前,请先安装 @apipass-dev/apipass-sdk。
1npm install @apipass-dev/apipass-sdk
2# or
3pnpm add @apipass-dev/apipass-sdk
4# or
5yarn add @apipass-dev/apipass-sdk请将 API Key 保存在服务端环境变量中。SDK 会自动以 Bearer token 发送,并添加 JSON 请求头。
client.jobs.createTask创建一个新任务,用于扩展已上传的音频文件
通过这个示例快速上手所选语言的 SDK。
1import { Apipass } from "@apipass-dev/apipass-sdk";
2
3const client = new Apipass({
4 apiKey: process.env.APIPASS_API_KEY!,
5});
6
7const task = await client.jobs.createTask({
8 "model": "suno/upload-extend",
9 "callBackUrl": "https://your-domain.com/api/callback",
10 "input": {
11 "audioUrl": "https://your-storage.com/audio/my-song.mp3",
12 "continueAt": 60,
13 "prompt": "Build into an epic chorus with full instrumentation",
14 "style": "Pop Rock, Anthemic",
15 "title": "My Song (Extended)"
16 }
17});
18
19console.log(task.data.taskId);该 API 接受具有以下结构的 JSON payload:
1{
2 "model": "suno/upload-extend",
3 "callBackUrl": "string (optional)",
4 "input": {
5 "model_version": "V5_5 |V5 | V4_5PLUS | V4_5ALL | V4_5 | V4",
6 "audioUrl": "string (required)",
7 "instrumental": "boolean",
8 "continueAt": "integer",
9 "prompt": "string",
10 "style": "string",
11 "title": "string",
12 "vocalGender": "m | f",
13 "personaId": "string",
14 "negativeTags": "string",
15 "styleWeight": "number",
16 "weirdnessConstraint": "number",
17 "audioWeight": "number"
18 },
19 "channel": "auto"
20}model必填stringSuno V5 upload & extend 的模型标识符
"suno/upload-extend"
callBackUrl可选string扩展完成后用于接收 webhook 通知的 URL
"https://your-domain.com/api/callback"
channel可选string你可以通过 channel 参数指定 APIPASS 中对应的提供方;这些提供方负责处理实际的图像和视频生成任务。APIPASS 目前提供三种提供方选项:
channel 参数的默认值为 auto。启用后,APIPASS 会根据实时价格和稳定性指标,在可用提供方之间自动分配任务,以在最低成本和可靠性能之间取得平衡。除非你有自定义路由需求,否则请保留默认值 auto。
可用选项:
auto
上传并扩展的参数:
input.model_version可选string要使用的 Suno 模型版本。默认为 V5。
可用选项:
"V5"
input.audioUrl必填string要扩展的音频文件 URL。必须是可公开访问的 URL。
"https://your-storage.com/audio/my-song.mp3"
input.instrumental可选boolean生成不含人声的纯音乐扩展。
可选。默认为 false。如提供,则必须为 boolean。
false
input.continueAt必填integer开始扩展的时间点,单位为秒。必填,且必须 > 0。
使用自定义参数时必须 > 0
60
input.prompt可选string扩展段落的描述。
instrumental=false 时必填。instrumental=true 时可选。 V4:最多 3000 个字符 V5_5、V5、V4_5PLUS、V4_5ALL、V4_5:最多 5000 个字符
"Build to an epic chorus with harmonies"
input.style必填string扩展所使用的音乐风格。必填。
V4:最多 200 个字符 V5_5、V5、V4_5PLUS、V4_5ALL、V4_5:最多 1000 个字符
"Pop Rock, Uplifting"
input.title必填string扩展后曲目的标题。必填。
最大长度:80 个字符
"My Song (Extended)"
personaId可选inputPersona ID,可选字符串。仅在 customMode=true 时生效。
vocalGender可选radio选择扩展部分的人声性别。
negativeTags可选input要从扩展中排除的风格或特征。
styleWeight可选slider扩展的风格引导权重。
weirdnessConstraint可选slider控制扩展的创意程度。
audioWeight可选slider扩展中音频影响的权重。
1{
2 "code": 200,
3 "message": "success",
4 "data": {
5 "taskId": "task_upload_ext_xyz789"
6 }
7}code状态码,200 表示成功
message响应消息
data.taskId用于查询扩展状态的任务 ID
扩展完成后,系统会向你的 callBackUrl 发送 POST 请求
1{
2 "code": 200,
3 "data": {
4 "taskId": "task_upload_ext_xyz789",
5 "state": "success",
6 "completeTime": 1755599800000,
7 "costTime": 75000,
8 "model": "suno/upload-extend",
9 "resultJson": {
10 "data": [
11 {
12 "id": "ext_001",
13 "audio_url": "https://cdn.apipass.dev/results/task_upload_ext_xyz789_0_audio.mp3",
14 "image_url": "https://cdn.apipass.dev/results/task_upload_ext_xyz789_0_cover.jpeg",
15 "duration": 180.5
16 }
17 ]
18 }
19 },
20 "msg": "Extension completed successfully."
21}1{
2 "code": 501,
3 "data": {
4 "taskId": "task_upload_ext_xyz789",
5 "state": "fail",
6 "failCode": "INVALID_AUDIO_URL",
7 "failMsg": "Unable to download audio from provided URL"
8 },
9 "msg": "Extension failed."
10}client.jobs.recordInfo查询扩展任务状态并获取结果
通过这个示例快速上手所选语言的 SDK。
1import { Apipass } from "@apipass-dev/apipass-sdk";
2
3const client = new Apipass({
4 apiKey: process.env.APIPASS_API_KEY!,
5});
6
7const result = await client.jobs.recordInfo("task_upload_ext_xyz789");
8
9console.log(result.data.state);
10console.log(result.data.resultJson);1{
2 "code": 200,
3 "data": {
4 "taskId": "task_upload_ext_xyz789",
5 "state": "success",
6 "resultJson": {
7 "data": [
8 {
9 "id": "ext_001",
10 "audio_url": "https://cdn.apipass.dev/results/task_upload_ext_xyz789_0_audio.mp3",
11 "image_url": "https://cdn.apipass.dev/results/task_upload_ext_xyz789_0_cover.jpeg",
12 "duration": 180.5
13 }
14 ]
15 }
16 }
17}data.state当前状态:queuing、generating、success 或 fail
data.resultJson.data包含扩展后音频曲目的数组,包括 URL 和元数据
API 页面显示参数架构,但 Suno 还有几个特定于业务的模式组合和回调规则,容易被忽略。
所有 API 都需要通过 Bearer Token 进行身份验证。
Authorization: Bearer
创建一个新任务,用于扩展已上传的音频文件
该 API 接受具有以下结构的 JSON payload:
1{
2 "model": "suno/upload-extend",
3 "callBackUrl": "string (optional)",
4 "input": {
5 "model_version": "V5_5 |V5 | V4_5PLUS | V4_5ALL | V4_5 | V4",
6 "audioUrl": "string (required)",
7 "instrumental": "boolean",
8 "continueAt": "integer",
9 "prompt": "string",
10 "style": "string",
11 "title": "string",
12 "vocalGender": "m | f",
13 "personaId": "string",
14 "negativeTags": "string",
15 "styleWeight": "number",
16 "weirdnessConstraint": "number",
17 "audioWeight": "number"
18 },
19 "channel": "auto"
20}model必填stringSuno V5 upload & extend 的模型标识符
"suno/upload-extend"
callBackUrl可选string扩展完成后用于接收 webhook 通知的 URL
"https://your-domain.com/api/callback"
channel可选string你可以通过 channel 参数指定 APIPASS 中对应的提供方;这些提供方负责处理实际的图像和视频生成任务。APIPASS 目前提供三种提供方选项:
channel 参数的默认值为 auto。启用后,APIPASS 会根据实时价格和稳定性指标,在可用提供方之间自动分配任务,以在最低成本和可靠性能之间取得平衡。除非你有自定义路由需求,否则请保留默认值 auto。
可用选项:
auto
上传并扩展的参数:
input.model_version可选string要使用的 Suno 模型版本。默认为 V5。
可用选项:
"V5"
input.audioUrl必填string要扩展的音频文件 URL。必须是可公开访问的 URL。
"https://your-storage.com/audio/my-song.mp3"
input.instrumental可选boolean生成不含人声的纯音乐扩展。
可选。默认为 false。如提供,则必须为 boolean。
false
input.continueAt必填integer开始扩展的时间点,单位为秒。必填,且必须 > 0。
使用自定义参数时必须 > 0
60
input.prompt可选string扩展段落的描述。
instrumental=false 时必填。instrumental=true 时可选。 V4:最多 3000 个字符 V5_5、V5、V4_5PLUS、V4_5ALL、V4_5:最多 5000 个字符
"Build to an epic chorus with harmonies"
input.style必填string扩展所使用的音乐风格。必填。
V4:最多 200 个字符 V5_5、V5、V4_5PLUS、V4_5ALL、V4_5:最多 1000 个字符
"Pop Rock, Uplifting"
input.title必填string扩展后曲目的标题。必填。
最大长度:80 个字符
"My Song (Extended)"
personaId可选inputPersona ID,可选字符串。仅在 customMode=true 时生效。
vocalGender可选radio选择扩展部分的人声性别。
negativeTags可选input要从扩展中排除的风格或特征。
styleWeight可选slider扩展的风格引导权重。
weirdnessConstraint可选slider控制扩展的创意程度。
audioWeight可选slider扩展中音频影响的权重。
1curl -X POST "https://api.apipass.dev/api/v1/jobs/createTask" \
2 -H "Content-Type: application/json" \
3 -H "Authorization: Bearer YOUR_API_KEY" \
4 -d '{
5 "model": "suno/upload-extend",
6 "callBackUrl": "https://your-domain.com/api/callback",
7 "input": {
8 "audioUrl": "https://your-storage.com/audio/my-song.mp3",
9 "continueAt": 60,
10 "prompt": "Build into an epic chorus with full instrumentation",
11 "style": "Pop Rock, Anthemic",
12 "title": "My Song (Extended)"
13 }
14 }'1{
2 "code": 200,
3 "message": "success",
4 "data": {
5 "taskId": "task_upload_ext_xyz789"
6 }
7}code状态码,200 表示成功
message响应消息
data.taskId用于查询扩展状态的任务 ID