┌─────────────────────────────────────────────────────────────────┐
│ 第1步: 请求上传授权 │
│ POST /suno/uploads/audio │
│ ↓ 返回: upload_id, upload_url │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 第2步: 上传文件到S3 (客户端直连,不经过API) │
│ PUT {upload_url} │
│ ↓ 上传音频文件 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 第3步: 报告上传完毕 │
│ POST /suno/uploads/audio/{id}/upload-finish │
│ ↓ 通知服务器文件已上传 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 第4步: 轮询查询上传状态 (直到状态为 completed) │
│ GET /suno/uploads/audio/{id} │
│ ↓ 每2-3秒查询一次 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 第5步: 初始化音频clip │
│ POST /suno/uploads/audio/{id}/initialize-clip │
│ ↓ 返回: clip_id │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 第6步: 使用clip_id创建续写任务 │
│ POST /suno/submit/music │
│ ↓ 返回: task_id (开始计费) │
└─────────────────────────────────────────────────────────────────┘
POST
/suno/uploads/audio请求上传授权
API Key application/json
请求示例
curl -X POST https://top.qingyuntop.ai/suno/uploads/audio \
-H "Authorization: Bearer ${QINGYUN_TOP_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"extension": "mp3"
}'请求参数
| 参数 | 位置 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|---|
extension | JSON body | string | 是 | - | - |
返回响应 (200)
| 参数 | 位置 | 类型 | 必填 | 说明 | 示例 |
|---|---|---|---|---|---|
id | 响应 JSON | string | 是 | - | - |
url | 响应 JSON | string | 是 | - | - |
fields | 响应 JSON | object | 是 | - | - |
fields.Content-Type | 响应 JSON | string | 是 | - | - |
fields.key | 响应 JSON | string | 是 | - | - |
fields.AWSAccessKeyId | 响应 JSON | string | 是 | - | - |
fields.policy | 响应 JSON | string | 是 | - | - |
fields.signature | 响应 JSON | string | 是 | - | - |
is_file_uploaded | 响应 JSON | boolean | 是 | - | - |
响应示例
{
"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
}来源原始接口定义(用于追溯)
以下内容来自 Apifox 快照,可能包含兼容层字段或旧示例;公开调用请以本页的协议说明和当前模型列表为准。
{
"id": 495899771,
"name": "请求上传授权",
"type": "http",
"serverId": "",
"preProcessors": [],
"postProcessors": [],
"inheritPreProcessors": {},
"inheritPostProcessors": {},
"description": "┌─────────────────────────────────────────────────────────────────┐\n│ 第1步: 请求上传授权 │\n│ POST /suno/uploads/audio │\n│ ↓ 返回: upload_id, upload_url │\n└─────────────────────────────────────────────────────────────────┘\n ↓\n┌─────────────────────────────────────────────────────────────────┐\n│ 第2步: 上传文件到S3 (客户端直连,不经过API) │\n│ PUT {upload_url} │\n│ ↓ 上传音频文件 │\n└─────────────────────────────────────────────────────────────────┘\n ↓\n┌─────────────────────────────────────────────────────────────────┐\n│ 第3步: 报告上传完毕 │\n│ POST /suno/uploads/audio/{id}/upload-finish │\n│ ↓ 通知服务器文件已上传 │\n└─────────────────────────────────────────────────────────────────┘\n ↓\n┌─────────────────────────────────────────────────────────────────┐\n│ 第4步: 轮询查询上传状态 (直到状态为 completed) │\n│ GET /suno/uploads/audio/{id} │\n│ ↓ 每2-3秒查询一次 │\n└─────────────────────────────────────────────────────────────────┘\n ↓\n┌─────────────────────────────────────────────────────────────────┐\n│ 第5步: 初始化音频clip │\n│ POST /suno/uploads/audio/{id}/initialize-clip │\n│ ↓ 返回: clip_id │\n└─────────────────────────────────────────────────────────────────┘\n ↓\n┌─────────────────────────────────────────────────────────────────┐\n│ 第6步: 使用clip_id创建续写任务 │\n│ POST /suno/submit/music │\n│ ↓ 返回: task_id (开始计费) │\n└─────────────────────────────────────────────────────────────────┘",
"operationId": "",
"sourceUrl": "",
"method": "post",
"path": "/suno/uploads/audio",
"tags": [],
"status": -2,
"requestBody": {
"type": "application/json",
"parameters": [],
"jsonSchema": {
"type": "object",
"properties": {
"extension": {
"type": "string"
}
},
"required": [
"extension"
],
"x-apifox-orders": [
"extension"
]
},
"examples": [
{
"mediaType": "application/json",
"value": "{\r\n \"extension\": \"mp3\"\r\n}",
"name": "示例 1"
}
],
"mediaType": "",
"oasExtensions": "",
"required": true,
"additionalContentTypes": []
},
"parameters": {
"path": [],
"query": [],
"cookie": [],
"header": []
},
"commonParameters": {
"query": [],
"body": [],
"cookie": [],
"header": []
},
"auth": {},
"responses": [
{
"id": 169118525,
"name": "成功",
"code": 200,
"contentType": "json",
"jsonSchema": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"url": {
"type": "string"
},
"fields": {
"type": "object",
"properties": {
"Content-Type": {
"type": "string"
},
"key": {
"type": "string"
},
"AWSAccessKeyId": {
"type": "string"
},
"policy": {
"type": "string"
},
"signature": {
"type": "string"
}
},
"required": [
"Content-Type",
"key",
"AWSAccessKeyId",
"policy",
"signature"
],
"x-apifox-orders": [
"Content-Type",
"key",
"AWSAccessKeyId",
"policy",
"signature"
]
},
"is_file_uploaded": {
"type": "boolean"
}
},
"required": [
"id",
"url",
"fields",
"is_file_uploaded"
],
"x-apifox-orders": [
"id",
"url",
"fields",
"is_file_uploaded"
]
},
"itemSchema": {},
"description": "",
"mediaType": "",
"headers": []
}
],
"responseExamples": [
{
"name": "成功示例",
"responseId": 169118525,
"data": "{\r\n \"id\": \"f208ab1f-e93a-4417-b089-e7fc38b50268\",\r\n \"url\": \"https://suno-uploads.s3.amazonaws.com/\",\r\n \"fields\": {\r\n \"Content-Type\": \"audio/mpeg\",\r\n \"key\": \"raw_uploads/f208ab1f-e93a-4417-b089-e7fc38b50268.mp3\",\r\n \"AWSAccessKeyId\": \"AKIA2V4GXGDKLZ43MUG7\",\r\n \"policy\": \"eyJleHBpcmF0aW9uIjogIjIwMjYtMDEtMDZUMDM6Mjg6MjlaIiwgImNvbmRpdGlvbnMiOiBbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsIDAsIDUyNDI4ODAwMF0sIFsic3RhcnRzLXdpdGgiLCAiJENvbnRlbnQtVHlwZSIsICJhdWRpby9tcGVnIl0sIHsiYnVja2V0IjogInN1bm8tdXBsb2FkcyJ9LCB7ImtleSI6ICJyYXdfdXBsb2Fkcy9mMjA4YWIxZi1lOTNhLTQ0MTctYjA4OS1lN2ZjMzhiNTAyNjgubXAzIn1dfQ==\",\r\n \"signature\": \"tevxOl3SW28afyLyzObeCYzIvWI=\"\r\n },\r\n \"is_file_uploaded\": false\r\n}",
"description": "",
"oasKey": "",
"oasExtensions": "",
"id": "019fc09b-0b24-777f-9849-b840a25cc402"
}
],
"codeSamples": [],
"projectId": 8662722,
"moduleId": 8310462,
"folderId": 92436137,
"ordering": 72,
"responsibleId": 0,
"commonResponseStatus": {},
"advancedSettings": {
"disabledSystemHeaders": {}
},
"customApiFields": {},
"oasExtensions": "",
"mockScript": {},
"createdAt": "2026-08-02T03:53:34.000Z",
"updatedAt": "2026-08-05T14:40:24.000Z",
"creatorId": 2863449,
"editorId": 2863449,
"creatorUserId": 2863449,
"editorUserId": 2863449,
"responseChildren": [],
"visibility": "INHERITED",
"securityScheme": {},
"callbacks": ""
}