请求上传授权
在 Header 添加参数 Authorization,其值为 Bearer 之后拼接 Token
Authorization: Bearer ********************
┌─────────────────────────────────────────────────────────────────┐ │ 第1步: 请求上传授权 │ │ POST /suno/uploads/audio │ │ ↓ 返回: upload_id, upload_url │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 第2步: 上传文件到S3 (客户端直连,不经过API) │ │ PUT {upload_url} │ │ ↓ 上传音频文件 │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 第3步: 上报上传完成 │ │ POST /suno/uploads/audio │ │ ↓ 返回: task_id │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 第4步: 轮询音乐生成状态 │ │ GET /suno/info? ids=$task_id │ │ ↓ 返回: status │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 第5步: 初始化音乐创作 │ │ POST /suno/next │ │ ↓ 返回: IDs │ └─────────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────────┐ │ 第6步: 获取音乐创建结果 │ │ GET /suno/info?ids=$ids │ └─────────────────────────────────────────────────────────────────┘
请求参数
{
"extension": "mp3"
}
请求示例代码
curl --location --request POST 'https://api.quickrouter.ai/suno/uploads/audio' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"extension": "mp3"
}'
var myHeaders = new Headers();
myHeaders.append("Accept", "application/json");
myHeaders.append("Authorization", "Bearer YOUR_API_KEY");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"extension": "mp3"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://api.quickrouter.ai/suno/uploads/audio", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
import http.client
import json
conn = http.client.HTTPSConnection("api.quickrouter.ai")
payload = json.dumps({
"extension": "mp3"
})
headers = {
'Accept': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
conn.request("POST", "/suno/uploads/audio", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
返回响应
{
"id": "f208ab1f-e93a-4417-b089-e7fc38b50268",
"url": "https://suno-uploads.s3.amazonaws.com/",
"fields": {
"Content-Type": "audio/mpeg",
"key": "raw_uploads/f208ab1f-e93a-4417-b089-e7fc38b50268.mp3",
"AWSAccessKeyId": "AKIA2V4GXGDKLZ43MUG7",
"policy": "eyJleHBpcmF0aW9uIjogIjIwMjYtMDEtMDZUMDM6Mjg6MjlaIiwgImNvbmRpdGlvbnMiOiBbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsIDAsIDUyNDI4ODAwMF0sIFsic3RhcnRzLXdpdGgiLCAiJENvbnRlbnQtVHlwZSIsICJhdWRpby9tcGVnIl0sIHsiYnVja2V0IjogInN1bm8tdXBsb2FkcyJ9LCB7ImtleSI6ICJyYXdfdXBsb2Fkcy9mMjA4YWIxZi1lOTNhLTQ0MTctYjA4OS1lN2ZjMzhiNTAyNjgubXAzIn1dfQ==",
"signature": "tevxOl3SW28afyLyzObeCYzIvWI="
},
"is_file_uploaded": false
}