上传并扩展音乐
POSThttps://kieai.erweima.ai/api/v1/generate/upload-extend
此 API 在保留音频轨道原始样式的同时扩展了音轨。它包括 Suno 的上传功能,允许用户上传音频文件进行处理。预期的结果是更长的音轨,无缝地延续输入的风格。
参数使用指南
-
当 defaultParamFlag 为 true(自定义参数)时:
- 如果 instrumental 为 true:需要提供 style 、 title和uploadUrl
- 如果 instrumental 为 false:需要提供 style、prompt 、 title和uploadUrl
- prompt 长度限制:3000字符
- style 长度限制:200字符
- title 长度限制:80字符
- continueAt 音频开始扩展的秒数(该参数需大于0,且小于所上传视频的时长)
- uploadUrl 用于指定音频文件的上传位置;确保上传的音频长度不超过 2 分钟。
-
当 defaultParamFlag 为 false(使用默认参数)时:
- 无论 instrumental 设置如何,仅需提供 uploadUrl和prompt
- 其他参数将使用原音频的参数
开发者注意事项
- 生成的文件将保留14天
- 模型版本必须与源音乐保持一致
- 此功能非常适合通过延长现有音乐创作更长的作品
- uploadUrl 参数用于指定音频文件的上传位置;请提供有效的 URL。
Request
- application/json
Bodyrequired
- 设为
true
使用自定义参数模式(需要提供style
、title
和uploadUrl
;如果instrumental
为false
,则需要提供uploadUrl
和prompt
)。如果instrumental
为false
,提示词将严格用作歌词。 - 设为
false
使用非自定义模式(只需要提供uploadUrl
)。歌词将根据提示词自动生成。 - 在自定义参数模式下(
defaultParamFlag: true
):- 如果为
true
:只需提供style
、title
和uploadUrl
。 - 如果为
false
:需要提供style
、title
、prompt
(prompt
将作为精确歌词使用)和uploadUrl
。
- 如果为
- 在非自定义参数模式下(
defaultParamFlag: false
):不影响必填字段(只需uploadUrl
)。如果为false
,将自动生成歌词。 - 当
defaultParamFlag
为true
时必填。 - 取值范围:大于0且小于上传音频的总时长。
- 指定从原始音频的哪个时间点开始进行扩展。
uploadUrlurirequired
用于上传音频文件的 URL,无论 defaultParamFlag 是 true 还是 false,都是必需的。确保上传的音频长度不超过 2 分钟。
Example:
https://api.example.com/upload
defaultParamFlagbooleanrequired
启用自定义模式进行高级音频生成设置。
Example:
true
instrumentalboolean
决定音频是否为纯音乐(无歌词)。
Example:
true
promptstring
描述音乐应如何延长。当 defaultParamFlag 为 true 时必填。
Example:
用更多舒缓的音符延长音乐
stylestring
音乐风格,例如爵士、古典、电子等
Example:
古典
titlestring
音乐标题
Example:
宁静钢琴延长版
continueAtnumber
音频开始扩展的时间点(以秒为单位)。
Example:
60
modelstringrequired
使用的模型版本,必须与源音频保持一致
Possible values: [V3_5
, V4
, V4_5
]
Example:
V3_5
negativeTagsstring
需要在生成中排除的音乐风格
Example:
舒缓钢琴
callBackUrlurirequired
在音乐延长完成时接收任务完成通知的URL。
Example:
https://api.example.com/callback
Responses
- 200
- 500
请求成功
- application/json
- Schema
- Example (auto)
Schema
codeStatusCode (integer)
响应状态码
Enum Value | Description |
---|---|
200 | 成功 - 请求已成功处理 |
401 | 未授权 - 缺少身份验证凭据或凭据无效 |
402 | 积分不足 - 账户没有足够的积分执行此操作 |
404 | 未找到 - 请求的资源或端点不存在 |
409 | 冲突 - WAV记录已存在 |
422 | 参数错误 - 请求参数未通过验证检查 |
429 | 超出限制 - 已超过对此资源的请求限制 |
455 | 服务不可用 - 系统当前正在进行维护 |
500 | 服务器错误 - 在处理请求时发生意外错误 |
505 | 功能已禁用 - 请求的功能当前已禁用 |
Possible values: [200
, 401
, 402
, 404
, 409
, 422
, 429
, 455
, 500
, 505
]
msgstring
当 code != 200 时的错误信息
Example:
success
data object
{
"code": 200,
"msg": "success",
"data": {
"taskId": "5c79****be8e"
}
}
服务器错误
Callbacks
- POST audioExtend
POST{$request.body#/callBackUrl}
当音频生成完成时,系统会调用此回调通知结果。
回调示例
{
"code": 200,
"msg": "All generated successfully.",
"data": {
"callbackType": "complete",
"task_id": "2fac****9f72",
"data": [
{
"id": "8551****662c",
"audio_url": "https://example.cn/****.mp3",
"source_audio_url": "https://example.cn/****.mp3",
"stream_audio_url": "https://example.cn/****",
"source_stream_audio_url": "https://example.cn/****",
"image_url": "https://example.cn/****.jpeg",
"source_image_url": "https://example.cn/****.jpeg",
"prompt": "[Verse] 夜晚城市 灯火辉煌",
"model_name": "chirp-v3-5",
"title": "钢铁侠",
"tags": "electrifying, rock",
"createTime": "2025-01-01 00:00:00",
"duration": 198.44
}
]
}
}
- application/json
Body
codeinteger
状态码
Example:
200
msgstring
返回消息
Example:
All generated successfully
data object
Callbacks Responses
- 200
回调接收成功
Authorization: http
name: BearerAuthtype: httpscheme: bearerbearerFormat: API Keydescription: 所有接口都需要通过 Bearer Token 方式进行认证。 获取 API Key: 1. 访问 [API Key 管理页面](https://kie.ai/api-key) 获取您的 API Key 使用方式: 在请求头中添加: Authorization: Bearer YOUR_API_KEY 注意事项: - 请妥善保管您的 API Key,不要泄露给他人 - 如果怀疑 API Key 泄露,请立即在管理页面重置
- csharp
- curl
- dart
- go
- http
- java
- javascript
- kotlin
- c
- nodejs
- objective-c
- ocaml
- php
- powershell
- python
- r
- ruby
- rust
- shell
- swift
- HTTPCLIENT
- RESTSHARP
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Post, "https://kieai.erweima.ai/api/v1/generate/upload-extend");
request.Headers.Add("Accept", "application/json");
request.Headers.Add("Authorization", "Bearer <token>");
var content = new StringContent("{\n \"uploadUrl\": \"https://api.example.com/upload\",\n \"defaultParamFlag\": true,\n \"instrumental\": true,\n \"prompt\": \"用更多舒缓的音符延长音乐\",\n \"style\": \"古典\",\n \"title\": \"宁静钢琴延长版\",\n \"continueAt\": 60,\n \"model\": \"V3_5\",\n \"negativeTags\": \"舒缓钢琴\",\n \"callBackUrl\": \"https://api.example.com/callback\"\n}", null, "application/json");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
ResponseClear