API tải lên nâng cao
Mô tả endpoint
Tải lên nâng cao gửi một tệp âm thanh cục bộ; hệ thống thực hiện nâng cấp ở phía sau và tạo ra một bài hát hoàn chỉnh, phát được. Lệnh gửi trả về thông tin tác vụ ngay lập tức, và ứng dụng khách hỏi tiến độ qua endpoint truy vấn.
Endpoint gửi: POST /api/music/enhanced-upload
Truy vấn một tác vụ: GET /api/music/enhanced-upload/:id
Huỷ tác vụ: POST /api/music/enhanced-upload/:id/cancel
Truy vấn danh sách: GET /api/music/enhanced-upload
Tính phí: 10 ¥ mỗi lần gọi, trừ trước theo mức giá cố định của suno-enhanced-upload. Nếu tác vụ thất bại hoặc bị huỷ trong giai đoạn cho phép, khoản đã trừ trước sẽ được hoàn tự động. Số tiền thực trừ tuân theo cấu hình giá hiện tại trong phần quản trị.
Luồng gọi
- Gọi
POST /api/music/enhanced-uploadđể tải tệp âm thanh lên. - Lưu
task_idđược trả về. - Gọi
GET /api/music/enhanced-upload/:idđể xem tiến độ và kết quả. - Khi Suno hoàn tất kết xuất cuối cùng, dịch vụ dùng tài khoản Suno gắn với tác vụ đó để gọi endpoint tải xuống được uỷ quyền của Studio và ghi MP3 vào dịch vụ media CN2.
- Tác vụ chỉ chuyển thành
completedkhi tài nguyên CN2 sẵn sàng; lúc đó lấy địa chỉ âm thanh CDN từaudio_urltrong phản hồi.
/api/forbidden là địa chỉ giữ chỗ có thể xuất hiện trong metadata của Suno Studio; đây không phải tài nguyên phát hay tải được. Nó không bao giờ được trả cho khách hàng và không dùng làm căn cứ hoàn tất. Nếu kết xuất đã xong nhưng CN2 còn đang chuẩn bị, endpoint vẫn tiếp tục trả processing và không trả audio_url; ứng dụng khách nên tiếp tục hỏi và không coi địa chỉ rỗng là thất bại.
Gửi bản tải lên nâng cao
Headers
| Tham số | Kiểu | Bắt buộc | Ghi chú |
|---|---|---|---|
| Authorization | string | có | Bearer YOUR_API_KEY |
| Content-Type | string | không | Với yêu cầu multipart đừng đặt thủ công; để ứng dụng khách tự tạo |
Tham số form
| Tham số | Kiểu | Bắt buộc | Mặc định | Ghi chú |
|---|---|---|---|---|
| file | file | có | - | Tệp âm thanh cục bộ, tối đa 80 MB |
| title | string | không | tên tệp bỏ phần mở rộng | Tiêu đề bài hát |
Ví dụ yêu cầu
Ví dụ dưới đây dùng cùng cách gọi như khi kiểm thử trên môi trường thật, nhưng API Key đã được thay bằng giá trị giữ chỗ.
curl.exe --http1.1 -s -S \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@source.aac" \
-F "title=Enhanced upload demo" \
"https://www.suno-api.io/api/music/enhanced-upload"
Phản hồi
{
"success": true,
"message": "",
"data": {
"task_id": 3209,
"song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "queued",
"created_at": 1781137961,
"pre_consumed_quota": 5000000,
"billing_source": "wallet"
}
}
Truy vấn một tác vụ
Ví dụ yêu cầu
curl.exe --http1.1 -s -S \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.suno-api.io/api/music/enhanced-upload/3209"
Ví dụ phản hồi khi đang xử lý
{
"success": true,
"message": "",
"data": {
"task": {
"task_id": 3209,
"song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "processing",
"type": "enhanced_upload",
"progress": {
"stage": "media_preparing",
"percent": 98,
"label": "正在准备播放资源",
"updated_at": 1781138500
},
"pre_consumed_quota": 5000000,
"billing_source": "wallet",
"created_at": 1781137961,
"updated_at": 1781138500
}
}
}
Ví dụ phản hồi khi hoàn tất
{
"success": true,
"message": "",
"data": {
"task": {
"task_id": 3209,
"song_id": "56cbd0bb-0e8c-4a34-8729-55d5c05d9c53",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "completed",
"type": "enhanced_upload",
"audio_url": "https://media.code-go.com/assets/56cbd0bb-0e8c-4a34-8729-55d5c05d9c53-mp3.mp3",
"duration": 217.74,
"progress": {
"stage": "completed",
"percent": 100,
"label": "已完成",
"updated_at": 1781138943
},
"pre_consumed_quota": 5000000,
"billing_source": "wallet",
"created_at": 1781137961,
"updated_at": 1781138943,
"completed_at": 1781138943
}
}
}
Huỷ tác vụ
Chỉ có thể huỷ khi cả tác vụ lẫn luồng xử lý phía máy chủ vẫn đang ở giai đoạn queued. Sau khi tác vụ vào leasing, running, processing hoặc đã hoàn tất thì không thể huỷ.
Ví dụ yêu cầu
curl.exe --http1.1 -s -S -X POST \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.suno-api.io/api/music/enhanced-upload/3209/cancel"
Phản hồi
{
"success": true,
"message": "",
"data": {
"task_id": 3209,
"song_id": "pending:enhanced-upload:cu_20260611003241723483700xnCcQg",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"status": "cancelled"
}
}
Nếu tác vụ đã bắt đầu xử lý, endpoint sẽ trả về:
{
"success": false,
"message": "强化上传已开始处理,无法取消"
}
Truy vấn danh sách tác vụ
Endpoint danh sách chỉ trả các tác vụ tải lên nâng cao của người dùng sở hữu API Key hiện tại; tác vụ tạo nhạc thường, cover và gia hạn không bị trộn vào.
Tham số query
| Tham số | Kiểu | Bắt buộc | Mặc định | Ghi chú |
|---|---|---|---|---|
| p | number | không | 1 | Số trang |
| page_size | number | không | mặc định của hệ thống | Số mục mỗi trang, tối đa 100 |
Ví dụ yêu cầu
curl.exe --http1.1 -s -S \
-H "Authorization: Bearer YOUR_API_KEY" \
"https://www.suno-api.io/api/music/enhanced-upload?p=1&page_size=3"
Phản hồi
{
"success": true,
"message": "",
"data": {
"page": 1,
"page_size": 3,
"total": 1,
"items": [
{
"task_id": 3209,
"song_id": "56cbd0bb-0e8c-4a34-8729-55d5c05d9c53",
"client_request_id": "cu_20260611003241723483700xnCcQg",
"title": "Enhanced upload demo",
"file_name": "source.aac",
"status": "completed",
"type": "enhanced_upload",
"audio_url": "https://media.code-go.com/assets/56cbd0bb-0e8c-4a34-8729-55d5c05d9c53-mp3.mp3",
"duration": 217.74,
"progress": {
"stage": "completed",
"percent": 100,
"label": "已完成",
"updated_at": 1781138943
},
"pre_consumed_quota": 5000000,
"billing_source": "wallet",
"created_at": 1781137961,
"updated_at": 1781138943,
"completed_at": 1781138943
}
]
}
}
Giải thích các trường phản hồi
| Trường | Kiểu | Ghi chú |
|---|---|---|
| task_id | number | ID tác vụ tải lên nâng cao; dùng cho các truy vấn sau và khi huỷ |
| song_id | string | pending:enhanced-upload:* khi đang xử lý; ID bài hát thật sau khi hoàn tất |
| client_request_id | string | ID theo dõi yêu cầu của ứng dụng khách |
| status | string | Trạng thái tác vụ, ví dụ queued, processing, completed, failed, cancelled |
| type | string | Luôn là enhanced_upload |
| audio_url | string | Địa chỉ âm thanh sau khi hoàn tất |
| duration | number | Độ dài âm thanh tính bằng giây |
| progress.stage | string | Giai đoạn xử lý hiện tại |
| progress.percent | number | Phần trăm tiến độ |
| progress.label | string | Nội dung tiến độ hiển thị cho người dùng |
| pre_consumed_quota | number | Hạn mức trừ trước cho lần gọi này |
| billing_source | string | Nguồn trừ phí, ví dụ wallet |
| error_message | string | Lý do thất bại |
Lưu ý
- Hiện endpoint chỉ hỗ trợ tải tệp multipart; không hỗ trợ
file_urlhayfile_base64dạng JSON. - Tệp tải lên tối đa 80 MB.
- Endpoint gửi là bất đồng bộ: phản hồi
queuednghĩa là tác vụ đã vào hàng đợi, không có nghĩa là âm thanh đã xong. - Huỷ chỉ áp dụng cho tác vụ chưa bắt đầu xử lý; khi đã vào giai đoạn xử lý, luồng tài khoản nền tảng không bị ngắt.
- Đừng để lộ API Key thật trong mã ứng dụng khách.
Bắt đầu cover sau khi tải lên nâng cao hoàn tất
Sau khi tải lên nâng cao hoàn tất, bạn có thể dùng kết quả làm clip nguồn và gọi POST /api/music/generate-from-source để bắt đầu cover.
Lưu ý: cover là endpoint đồng bộ — đơn chỉ được tiếp nhận khi phản hồi trả về, và theo đo đạc có thể chờ tới khoảng 230 giây. Hãy đặt timeout phía client từ 300 giây trở lên và đừng thử lại ngay sau khi timeout. Xem "Thời gian chờ và thiết lập timeout" trong Tổng quan API mới.
Trước tiên hãy hỏi GET /api/music/enhanced-upload/:id cho đến khi task.status là completed. Khi đó:
task.song_idlà ID bài hát thật và cũng làsourceClipIdmà endpoint cover cần;- nên truyền
task.audio_urlnhưsourceAudioUrl, để máy chủ xử lý được trường hợp clip nguồn và tài khoản thực thi khác nhau; task.task_idchỉ là ID tác vụ tải lên nâng cao, không dùng được làmsourceClipId;pending:enhanced-upload:*là ID giữ chỗ của giai đoạn xử lý, không dùng được cho cover.
Khi bắt đầu cover, dùng cùng API Key như khi tải lên nâng cao và ghép yêu cầu theo ánh xạ trường dưới đây.
| Trường trong yêu cầu cover | Nguồn của giá trị |
|---|---|
sourceClipId |
task.song_id từ kết quả tải lên nâng cao đã hoàn tất |
sourceAudioUrl |
task.audio_url từ kết quả tải lên nâng cao đã hoàn tất |
sourceTitle |
task.title từ kết quả tải lên nâng cao đã hoàn tất |
Điền các tham số còn lại (lời, phong cách, tiêu đề, model) theo API cover từ clip nguồn. Khi endpoint cover trả về clips[].song_id mới, dùng POST /api/music/query để tra trạng thái tạo nhạc và âm thanh cuối cùng.
Lấy khóa API
Tạo khóa API trong bảng điều khiển sau khi đăng ký. Mỗi lần tạo tốn 0,6 ¥ và trả về 2 bản nhạc, tải xuống không giới hạn và không cần số điện thoại.
Lấy khóa API Quay lại tổng quan