API tải lên âm thanh nguồn
Mô tả endpoint
Tải lên âm thanh nguồn biến tệp âm thanh cục bộ hoặc từ xa thành clip nguồn mà các khả năng sau có thể dùng: cover, kéo dài, thay đoạn, tách track và những tính năng khác.
Endpoint: POST /api/music/upload-source
Tính phí: Miễn phí. Endpoint này chỉ tải lên âm thanh nguồn; không bắt đầu tác vụ tạo nhạc.
Cách dùng được khuyến nghị: đây là bước 1 của «cover hai bước». Trước tiên hãy tải âm thanh lên bằng endpoint này (miễn phí, thất bại có thể thử lại bất cứ lúc nào) và lưu
clip_idtrả về; sau khi xác nhận tải lên thành công (statusở trạng thái hoàn tất), hãy gọi API cover từ clip nguồn để bắt đầu cover — phần thân của yêu cầu đó chỉ vài trăm byte, nên không thể bị cắt khi truyền vì âm thanh quá lớn. So với API làm một lần tải lên rồi cover, cách tách này ổn định hơn khi âm thanh lớn, mạng không ổn định, hoặc cùng một tư liệu phải dùng lại nhiều lần (kéo dài / thay đoạn / tách track).
Gợi ý khi tải tệp lớn
| Tình huống | Cách làm được khuyến nghị |
|---|---|
| Âm thanh đã công khai (có link trực tiếp https) | Dùng file_url: thân yêu cầu chỉ vài trăm byte, ổn định nhất |
| Tệp cục bộ (Node / Python / desktop) | Dùng tải lên multipart (-F "file=@source.mp3") và không đặt Content-Type thủ công |
| Chỉ có thể dùng JSON + base64 | Lưu ý Content-Length phải là số byte (Buffer.byteLength), nếu không thân yêu cầu có thể bị cắt |
Sau khi tải lên xong, luôn xác nhận status trong phản hồi đã ở trạng thái hoàn tất và lưu clip_id trước khi sang bước 2;
tải lên thất bại không bị tính phí và không tạo tác vụ tạo nhạc, chỉ cần thử lại.
Tham số yêu cầu
Headers
Đối với yêu cầu JSON:
| Tham số | Kiểu | Bắt buộc | Ghi chú |
|---|---|---|---|
| Authorization | string | có | Bearer YOUR_API_KEY |
| Content-Type | string | có | application/json |
Không đặt Content-Type thủ công trong yêu cầu multipart; client tự tạo.
Tham số body
| Tham số | Kiểu | Bắt buộc | Mặc định | Ghi chú |
|---|---|---|---|---|
| model | string | không | suno-v6 | Tên mô hình cho khách hàng: suno-v6, suno-v6-wild hoặc suno-v6-mini |
| file_url | string | không | - | URL âm thanh từ xa |
| file_base64 | string | không | - | Âm thanh dạng Base64 |
| file_name | string | không | - | Tên tệp |
| upload_type | string | không | file_upload | Loại tải lên |
Ví dụ yêu cầu JSON
curl -X POST https://www.suno-api.io/api/music/upload-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"file_url": "https://example.com/source.mp3",
"file_name": "source.mp3",
"upload_type": "file_upload"
}'
Ví dụ yêu cầu multipart
curl -X POST https://www.suno-api.io/api/music/upload-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@source.mp3" \
-F "file_name=source.mp3" \
-F "upload_type=file_upload" \
-F "model=suno-v6"
Phản hồi
{
"clip_id": "uploaded_clip_id",
"status": "complete",
"title": "source.mp3",
"image_url": "https://...",
"audio_url": "https://...",
"display_tags": "pop, vocal",
"inferred_description": "uploaded source audio",
"clip_metadata": {}
}
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