API ghép bài hát đầy đủ (Get Full Song)
Mô tả endpoint
Ghép bài hát đầy đủ nối «bài hát gốc + đoạn mới tạo» thành một bài hát hoàn chỉnh: sau Extend thì nối thêm phần tiếp theo, sau Replace Section thì khâu đoạn mới trở lại bài gốc. Giao diện web chính thức gọi khả năng này là Get Full Song.
Endpoint: POST /api/music/concat
Tính phí: Có phí, cố định 0,05 CNY mỗi lần gọi. Việc ghép tách rời khỏi giá tạo nhạc và không tham gia Max Mode hay hệ số hồ sơ giọng nói; số tiền thực trừ tuân theo cấu hình giá trong phần quản trị.
Thời gian chờ và timeout (quan trọng): đây là endpoint đồng bộ — đơn chỉ được tiếp nhận và đưa vào ghép khi phản hồi trả về. Hãy đặt timeout phía client từ 300 giây trở lên; không nhận được phản hồi không có nghĩa là chưa ghép gì, và đừng thử lại ngay sau khi timeout (sẽ trùng đơn và bị tính phí hai lần). Nếu kết nối bị ngắt, hãy kiểm tra lại sau bằng
GET /api/music/songs.
Xác thực
| Tham số | Kiểu | Bắt buộc | Ghi chú |
|---|---|---|---|
| Authorization | string | có | Bearer YOUR_API_KEY |
| Content-Type | string | có | application/json |
Tham số yêu cầu
| Tham số | Kiểu | Bắt buộc | Mặc định | Ghi chú |
|---|---|---|---|---|
| song_id | string | có | - | song_id của đoạn cần ghép (kết quả Extend hoặc Replace Section); phải đã hoàn tất |
| is_infill | boolean | không | false | false = ghép cho kéo dài; true = ghép cho thay thế (infill) |
| source_audio_url | string | không | - | Địa chỉ âm thanh nguồn, khi đoạn đến từ tài khoản bên ngoài |
| source_file_name | string | không | - | Tên tệp nguồn, khi đoạn đến từ tài khoản bên ngoài |
| source_title | string | không | - | Tiêu đề nguồn, khi đoạn đến từ tài khoản bên ngoài |
audio_id, source_clip_id và sourceClipId là cách viết tương đương của song_id; dùng một trong số đó.
Ví dụ yêu cầu
curl -X POST https://www.suno-api.io/api/music/concat \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_id": "extended_or_replaced_clip_id",
"is_infill": false
}'
Để ghép sau khi thay một đoạn, đặt is_infill thành true:
{ "song_id": "infilled_clip_id", "is_infill": true }
Phản hồi
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "concat_clip_id",
"song_title": "Tiêu đề bài hát nguồn",
"status": "queued"
}
]
}
}
Việc ghép chỉ trả về 1 kết quả (không tạo 2 bài cùng lúc). Lưu clips[].song_id rồi dùng API truy vấn bài hát và lịch sử để hỏi đến complete trước khi lấy âm thanh.
Độ dài kết quả đến từ đâu
Việc ghép không chỉ nối hai tệp lại với nhau; nó cắt bài hát nguồn theo các mốc thời gian ghi trong lịch sử của đoạn:
| Chế độ | Thành phần kết quả |
|---|---|
is_infill: false |
bài hát nguồn [0 .. continue_at] + toàn bộ độ dài đoạn kéo dài |
is_infill: true |
bài hát nguồn [0 .. điểm bắt đầu] + đoạn mới đã thay + bài hát nguồn [điểm kết thúc .. cuối bài] |
Vì vậy âm thanh gốc sau điểm tiếp nối sẽ bị loại bỏ, không xảy ra việc lặp lại cả một đoạn.
Lưu ý
- Chỉ ghép được các đoạn đã hoàn tất; nếu đoạn còn đang tạo, hãy đợi nó xong trước.
- Kết quả là một bản ghi mới; đoạn gốc vẫn được giữ lại và tiếp tục dùng được.
- Muốn gộp hai bài hát khác nhau thành một, hãy dùng API mashup; chỉ muốn giữ một đoạn, hãy dùng API cắt.
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