API nhân bản giọng nói và tạo nhạc với giọng chỉ định (không khuyến nghị)
⛔ Chuỗi cũ, không khuyến nghị cho tích hợp mới. Trang này mô tả chuỗi
personaban đầu (voice_task_id/generate-with-voice). Nó vẫn hoạt động, nhưng không còn được khuyến nghị cho khách hàng; menu bên trái đánh dấu là "không khuyến nghị".Với tích hợp mới, hãy dùng 【Khuyến nghị】 API hồ sơ giọng nói: tạo hồ sơ giọng nói từ một mẫu giọng (
POST /api/music/voice-profile/create), rồi dùng nó để cover một bài hát chỉ định hoặc hát một bài mới. Hồ sơ giọng nói là tài nguyên hạng nhất: có thể liệt kê, truy vấn và xóa, và audio gốc được giữ vĩnh viễn.Nếu sản phẩm của bạn cần vòng lặp đầy đủ "tạo giọng → dùng lại lâu dài → cover", hãy ưu tiên chuỗi mới.
Lưu ý quan trọng: giọng đã nhân bản có thể hết hạn.
voice_id/voice_task_iddo nhân bản giọng nói tạo ra không phải tài nguyên dùng được mãi: chúng có thể ngừng hoạt động do thời hạn hiệu lực, trạng thái tài khoản hoặc thay đổi trạng thái giọng. Bên tích hợp không được nhân bản một lần rồi dùng mãi ID giọng đã lưu trong bộ nhớ đệm cục bộ.Cách làm được khuyến nghị:
- Lưu
voice_task_id,voice_id,is_available,updated_atvà thời điểm tạo thành công gần nhất.- Trước mỗi lần tạo nhạc bằng giọng đã nhân bản, hãy gọi
GET /api/voice/clone/tasks/{voice_task_id}hoặcPOST /api/voice/clone/tasks/{voice_task_id}/checkvà xác nhậnis_available=true.- Nếu endpoint báo giọng không dùng được, tác vụ không tồn tại hoặc trả về
selected voice is not ready, hãy yêu cầu người dùng nhân bản lại hoặc chọn giọng khác đang dùng được.- Không hứa với người dùng cuối rằng giọng đã nhân bản là "tài sản vĩnh viễn"; hãy hiển thị trong giao diện sản phẩm rằng "giọng có thể hết hạn và cần xác thực lại hoặc nhân bản lại".
Mô tả endpoint
Nhóm endpoint này tạo một giọng có thể dùng lại và tạo bài hát bằng giọng đó. Bên gọi chỉ cần API Key do nền tảng cấp; máy chủ xử lý việc gửi tác vụ, đồng bộ trạng thái, tính phí và tải xuống.
Xác thực: Authorization: Bearer YOUR_API_KEY
Tính phí:
- Kiểm tra giọng, nhân bản giọng, truy vấn trạng thái, xóa và tải xuống: miễn phí.
- Lối vào nhân bản một bước trong không gian làm việc: cố định 5 ¥ mỗi lần gọi; tự động hoàn tất kiểm tra giọng gốc và audio xác minh thứ hai, hoàn tiền nếu thất bại.
- Tự động chuyển tiếp sang audio xác minh sau khi nhân bản thường: cố định 5 ¥ mỗi lần gọi; thất bại thì hoàn tiền theo luồng hiện có.
- Tạo bài hát bằng giọng đã nhân bản: có phí, cố định 1,2 ¥ mỗi lần gọi; mỗi lần gọi thường trả về 2 tác vụ chỗ giữ chỗ.
- Khi bật Max Mode (
max_mode: truetrongPOST /api/music/generate-with-voice), mức 1,2 ¥ mỗi lần gọi được tính gấp 2, tức 2,4 ¥ mỗi lần gọi; tạo nhạc bằng giọng cũng hỗ trợvariety(0-4, không phụ phí); quy tắc giá trị nằm ở mục "Tham số nâng cao" trong tổng quan API mới.
Luồng gọi
- Gọi
POST /api/voice/clone/validateđể tải giọng gốc lên và nhậnvoice_task_id. - Chờ hoặc thăm dò
GET /api/voice/clone/tasks/{voice_task_id}cho tới khi nhậnvalidate_info. - Người dùng đọc to văn bản đó và ghi audio xác minh.
- Gọi
POST /api/voice/clone/tasks/{voice_task_id}/generateđể gửi audio xác minh. - Gọi
POST /api/voice/clone/tasks/{voice_task_id}/checkhoặc tiếp tục truy vấn tác vụ cho tới khiis_available=true. - Gọi
POST /api/music/generate-with-voiceđể tạo bài hát bằng giọng đó. - Endpoint tạo nhạc trả về tác vụ chỗ giữ chỗ trước; khi tạo xong và có
song_idthật, bạn có thể dùng các endpoint tải xuống để lấy một tệp hoặc một gói. - (Tùy chọn) Khi không cần giọng nữa, gọi
DELETE /api/voice/clone/voices/{voice_task_id}để xóa; ngữ nghĩa ở mục 6.
Còn có nhân bản một bước: ở trang ghi âm/tải giọng gốc đầu tiên trong không gian làm việc, bạn có thể chọn hoàn tất trong một bước; hệ thống làm kiểm tra và tạo giọng cùng lúc, nên bạn không phải ghi audio xác minh thứ hai; giá 5 ¥ mỗi lần gọi và hoàn tiền nếu thất bại.
Trường của tác vụ giọng
| Trường | Kiểu | Mô tả |
|---|---|---|
voice_task_id |
number | ID tác vụ giọng trong nền tảng; mọi endpoint sau đều dùng ID này |
voice_id |
string | ID giọng có thể dùng để tạo bài hát; trả về khi tác vụ dùng được |
voice_name |
string | Tên giọng |
description |
string | Mô tả giọng |
style |
string | Phong cách giọng |
singer_skill_level |
string | Trình độ hát; giá trị thường dùng: beginner, intermediate, professional |
language |
string | Ngôn ngữ giọng gốc, ví dụ zh, en |
validate_info |
string | Văn bản xác minh cần đọc to |
validate_status |
string | Trạng thái tác vụ kiểm tra |
voice_status |
string | Trạng thái tạo giọng |
is_available |
boolean | Đã dùng được để tạo bài hát hay chưa |
status |
string | Trạng thái tác vụ trên nền tảng |
stage |
string | Giai đoạn hiện tại |
error_code |
string | Mã lỗi khi thất bại |
error_message |
string | Nguyên nhân thất bại |
source_duration_seconds |
number | Thời lượng audio gốc, tính bằng giây |
created_at |
number | Dấu thời gian tạo |
updated_at |
number | Dấu thời gian cập nhật |
completed_at |
number | Dấu thời gian hoàn tất |
1. Gửi giọng gốc để kiểm tra
Endpoint: POST /api/voice/clone/validate
Tham số body
| Tham số | Kiểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
voice_url |
string | Không | - | URL audio của giọng gốc. Cái này hoặc file_base64 |
file_base64 |
string | Không | - | Audio dạng base64. Cái này hoặc voice_url |
file_name |
string | Không | - | Tên tệp; nên truyền khi dùng file_base64 |
voice_name |
string | Không | tạo tự động | Tên giọng |
description |
string | Không | - | Mô tả giọng |
style |
string | Không | - | Phong cách giọng |
singer_skill_level |
string | Không | beginner |
Trình độ hát |
language |
string | Không | zh |
Ngôn ngữ giọng gốc |
vocal_start_s |
number | Có | - | Giây bắt đầu của đoạn giọng dùng được |
vocal_end_s |
number | Có | - | Giây kết thúc của đoạn giọng dùng được |
source_duration_seconds |
number | Không | - | Tổng thời lượng audio gốc, tính bằng giây |
vocal_end_s - vocal_start_sphải đạt yêu cầu tối thiểu của đoạn giọng. Hãy tải lên bản ghi giọng rõ ràng, không có nhạc đệm hay tạp âm rõ rệt.
Ví dụ yêu cầu
curl -X POST https://www.suno-api.io/api/voice/clone/validate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"voice_url": "https://example.com/source-voice.wav",
"voice_name": "Giọng nữ tiếng Trung của tôi",
"description": "Giọng nữ tiếng Trung trong trẻo, tự nhiên",
"style": "Mandopop",
"singer_skill_level": "intermediate",
"language": "zh",
"vocal_start_s": 1.2,
"vocal_end_s": 18.5,
"source_duration_seconds": 20
}'
Ví dụ phản hồi
{
"success": true,
"message": "",
"data": {
"voice": {
"voice_task_id": 123,
"voice_name": "Giọng nữ tiếng Trung của tôi",
"language": "zh",
"validate_status": "submitted",
"is_available": false,
"status": "validate_submitted",
"stage": "validate_submitted",
"created_at": 1780480000,
"updated_at": 1780480000
}
}
}
2. Truy vấn tác vụ giọng
Endpoint: GET /api/voice/clone/tasks/{voice_task_id}
Ví dụ yêu cầu
curl https://www.suno-api.io/api/voice/clone/tasks/123 \
-H "Authorization: Bearer YOUR_API_KEY"
Ví dụ phản hồi
{
"success": true,
"message": "",
"data": {
"voice": {
"voice_task_id": 123,
"voice_name": "Giọng nữ tiếng Trung của tôi",
"validate_info": "Hãy đọc to văn bản xác minh được trả về ở đây",
"validate_status": "success",
"is_available": false,
"status": "validate_ready",
"stage": "validate_callback"
}
}
}
3. Tạo lại văn bản xác minh
Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/regenerate
Gọi khi văn bản xác minh không phù hợp để đọc to hoặc khi cần kiểm tra lại.
curl -X POST https://www.suno-api.io/api/voice/clone/tasks/123/regenerate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
4. Gửi audio xác minh và tạo giọng
Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/generate
Tham số body
| Tham số | Kiểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
verify_url |
string | Không | - | URL audio đọc theo văn bản xác minh. Cái này hoặc file_base64 |
file_base64 |
string | Không | - | Audio xác minh dạng base64. Cái này hoặc verify_url |
file_name |
string | Không | - | Tên tệp; nên truyền khi dùng file_base64 |
voice_name |
string | Không | tên tác vụ | Tên giọng |
description |
string | Không | mô tả tác vụ | Mô tả giọng |
style |
string | Không | phong cách tác vụ | Phong cách giọng |
singer_skill_level |
string | Không | thiết lập tác vụ | Trình độ hát |
Ví dụ yêu cầu
curl -X POST https://www.suno-api.io/api/voice/clone/tasks/123/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"verify_url": "https://example.com/verify-voice.wav",
"voice_name": "Giọng nữ tiếng Trung của tôi"
}'
5. Kiểm tra giọng có dùng được không
Endpoint: POST /api/voice/clone/tasks/{voice_task_id}/check
curl -X POST https://www.suno-api.io/api/voice/clone/tasks/123/check \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
Khi tác vụ dùng được, is_available trong phản hồi là true và trả về voice_id.
6. Xóa giọng
Endpoint: DELETE /api/voice/clone/voices/{voice_task_id}
Tính phí: miễn phí.
curl -X DELETE https://www.suno-api.io/api/voice/clone/voices/123 \
-H "Authorization: Bearer YOUR_API_KEY"
Ví dụ phản hồi
{
"success": true,
"message": "",
"data": {
"voice_task_id": 123,
"deleted": true
}
}
| Trường | Kiểu | Mô tả |
|---|---|---|
| voice_task_id | number | ID tác vụ giọng đã bị xóa |
| deleted | boolean | Luôn là true; cho biết yêu cầu xóa đã được tiếp nhận |
Sau khi xóa thì thế nào
- Không thể dùng để tạo bài mới nữa: gọi
POST /api/music/generate-with-voicevớivoice_task_idnày (hoặcvoice_idcủa nó) sẽ bị từ chối với thông báoselected voice is not ready, không tính phí. - Các bài đã tạo bằng giọng này hoàn toàn không bị ảnh hưởng: phát, tải xuống, nối tiếp, thay thế và tách track vẫn như cũ.
- Tác vụ giọng này biến mất khỏi truy vấn:
GET /api/voice/clone/tasks/{voice_task_id}trả vềrecord not found. - Audio gốc được giữ theo chính sách lưu trữ vĩnh viễn của nền tảng (từ 2026-09-23, xóa không còn dọn mẫu giọng bạn đã tải lên), nhưng điều đó không có nghĩa là khôi phục được: tác vụ cũ đã kết thúc, muốn tiếp tục dùng cùng giọng thì phải đi lại toàn bộ luồng nhân bản và sẽ nhận
voice_task_idmới. - Xóa lặp lại: xóa lại cùng tác vụ sẽ trả về
record not found(nó đã ở trạng thái đã xóa và không tra được nữa).
7. Tạo bài hát bằng giọng đã nhân bản
Endpoint: POST /api/music/generate-with-voice
Tính phí: 1,2 ¥ mỗi lần gọi.
Tham số body
| Tham số | Kiểu | Bắt buộc | Mặc định | Mô tả |
|---|---|---|---|---|
voice_task_id |
number | Có | - | ID tác vụ giọng đã dùng được |
voice_id |
string | Không | - | Trường xác minh tùy chọn; nếu truyền thì phải khớp với voice_id của tác vụ |
customMode |
boolean | Không | false |
false là chế độ cảm hứng, true là chế độ nâng cao |
prompt |
string | Có | - | Ở chế độ cảm hứng là mô tả bài hát, ở chế độ nâng cao là lời bài hát. Cả hai đều không được để trống |
style |
string | Có ở chế độ nâng cao | - | Thẻ phong cách; không được để trống khi customMode=true |
title |
string | Có ở chế độ nâng cao | - | Tiêu đề bài hát; không được để trống khi customMode=true |
negativeTags |
string | Không | - | Phong cách loại trừ |
instrumental |
boolean | Không | false |
Trường tương thích; tạo nhạc bằng giọng đã nhân bản luôn được xử lý như bài có giọng hát |
waitAudio |
boolean | Không | false |
Trường tương thích; endpoint này luôn trả về tác vụ chỗ giữ chỗ theo cách bất đồng bộ và không chờ audio |
model |
string | Không | suno-v6 |
Mô hình tạo bài thường; có thể dùng suno-v6, suno-v6-wild hoặc suno-v6-mini |
vocalGender |
string | Không | - | Ưu tiên giới tính giọng hát |
lyricsMode |
string | Không | - | Trường tương thích; chuỗi gửi bằng giọng đã nhân bản hiện tại không tự thay đổi chế độ lời |
weirdnessConstraint |
number | Không | - | Độ mạnh sáng tạo |
styleWeight |
number | Không | - | Trọng số phong cách |
audioWeight |
number | Không | mặc định của nền tảng | Audio Influence (mức độ quan trọng của audio tham chiếu), khoảng 0.0-1.0. Nếu không truyền, áp dụng mặc định của nền tảng (tương đương 25% trong giao diện chính thức); 0 là giá trị hợp lệ, nghĩa là không nghiêng về nguồn tham chiếu chút nào. Trường này gắn chặt với sourceClipId ở dòng dưới: khi có nguồn thì trỏ tới audio tham chiếu, khi không có nguồn thì trỏ tới giọng đã nhân bản; nền tảng chỉ có một thanh trượt này cho cả hai trường hợp, nên đừng tách thành hai tham số theo từng tình huống |
sourceClipId |
string | Không | - | ID clip thật trong không gian làm việc của bài hát nguồn. Truyền vào thì chuyển sang cover bằng giọng đã nhân bản; không truyền thì là tạo nhạc thường bằng giọng đã nhân bản |
sourceAudioUrl |
string | Không | - | Trường hiển thị của nguồn; không tham gia xác định quyền sở hữu hay tài khoản, máy chủ dựa vào bản ghi cơ sở dữ liệu |
sourceTitle |
string | Không | - | Trường hiển thị của nguồn; không tham gia xác định quyền sở hữu hay tài khoản |
clientSubmissionId |
string | Không | - | Trường tương thích Create UI; muốn khử trùng lặp đáng tin trong API khách hàng phải dùng header Idempotency-Key |
Hỗ trợ suno-v6, suno-v6-wild và suno-v6-mini; mô hình để trống được xử lý như suno-v6. Các mô hình V5/V5.5 cũ đã ngừng, nhưng tác vụ lịch sử có thể vẫn hiển thị tên mô hình cũ.
Cấu trúc yêu cầu dùng chung cũng phân tích các trường tương thích Create UI như task, soundType, soundLoop, soundBpm, soundKey, voiceTaskId, voiceId, nhưng chúng không phải tham số khách hàng hợp lệ của endpoint này: tác vụ giọng phải truyền qua voice_task_id, xác minh giọng tùy chọn qua voice_id, và việc tạo nhạc bằng giọng không bao giờ đọc các trường sound.
Cách điền tham số tạo nhạc
- Khi
customMode=false,promptchứa mô tả bài hát; khicustomMode=true,promptchứa lời đầy đủ, vàstylecùngtitlecũng phải điền. Đừng gửi lời bài hát vào trường mô tả của chế độ cảm hứng, cũng đừng coi mô tả bài hát là lời ở chế độ nâng cao. weirdnessConstraintvàstyleWeightlà tỷ lệ thập phân từ0.0đến1.0; không thể truyền50hay50%.0.5là giá trị cân bằng; bỏ trống nghĩa là "không chỉ định", còn0là giá trị rõ ràng hợp lệ.vocalGenderchỉ nhậnm,male,fhoặcfemale.instrumentalở đây chỉ là trường tương thích: tạo nhạc bằng giọng đã nhân bản luôn được xử lý như bài có giọng hát.waitAudiokhông đổi hành vi ở đây; endpoint luôn trả về tác vụ chỗ giữ chỗ theo cách bất đồng bộ.audio_urltrống trong kết quả đầu tiên là bình thường: hãy truy vấn bằngclient_request_idvà chỉ đọc địa chỉ audio sau khi kết quả hoàn tất.
Tham số header
| Header | Bắt buộc | Mô tả |
|---|---|---|
Authorization: Bearer ... |
Có | Token API khách hàng |
Content-Type: application/json |
Có | Nội dung yêu cầu JSON |
Idempotency-Key |
Không, rất nên dùng | Tối đa 128 ký tự. Cùng người dùng, token, endpoint, khóa và nội dung yêu cầu thì chỉ tính phí và tạo tác vụ một lần |
Hành vi của Idempotency-Key:
- Yêu cầu đầu tiên ghi một bản ghi bất biến trước khi tính phí;
- Nếu cùng khóa với cùng yêu cầu đã hoàn tất, phản hồi tiếp nhận đầu tiên được phát lại, không tính phí lần hai và không tạo tác vụ thứ hai;
- Cùng khóa nhưng nội dung yêu cầu khác sẽ bị từ chối;
- Cùng khóa vẫn đang xử lý sẽ trả về lỗi "đang xử lý" ổn định và chỉ trả
client_request_idan toàn khi đã được tạo; - Nếu yêu cầu đầu tiên với một khóa thất bại thì giữ trạng thái thất bại; thử lại phải dùng khóa mới.
Điều kiện cover qua sourceClipId
Cover từ nguồn trong API khách hàng được xử lý hoàn toàn ở phía máy chủ: quyền truy cập bài hát nguồn do máy chủ giải quyết và khách hàng không truyền thông tin tài khoản. Có thực hiện được hay không do phản hồi thực tế của endpoint quyết định.
Nguồn phải thuộc người dùng API hiện tại, là bài hát đã hoàn tất trong không gian làm việc và không ở trạng thái pending:, đồng thời có audio dùng được. Hỗ trợ tạo thường, nguồn tải lên thường và bài cuối của tải lên tăng cường; bản ghi trung gian của tải lên tăng cường bị từ chối trước khi tính phí. Máy chủ chỉ nhận ID bài hát nguồn do khách hàng gửi và không bao giờ nhận ID tài khoản; nguồn không dùng được hoặc chưa xong sẽ trả lỗi trước khi tính phí.
Ví dụ yêu cầu
curl -X POST https://www.suno-api.io/api/music/generate-with-voice \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"voice_task_id": 123,
"customMode": true,
"prompt": "Viết một bài nhạc pop Trung Quốc về bờ biển trong đêm hè",
"style": "Mandopop, warm piano, emotional",
"title": "Gió biển đêm hè",
"negativeTags": "noise, low quality",
"instrumental": false,
"model": "suno-v6"
}'
Ví dụ phản hồi
{
"success": true,
"message": "",
"data": {
"client_request_id": "cu_1780480000_abcd1234",
"items": [
{
"placeholder_id": "pending:cu_1780480000_abcd1234:0",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 0,
"status": "submitted",
"type": "voice_generate",
"title": "Gió biển đêm hè",
"prompt": "Viết một bài nhạc pop Trung Quốc về bờ biển trong đêm hè"
},
{
"placeholder_id": "pending:cu_1780480000_abcd1234:1",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 1,
"status": "submitted",
"type": "voice_generate",
"title": "Gió biển đêm hè",
"prompt": "Viết một bài nhạc pop Trung Quốc về bờ biển trong đêm hè"
}
],
"pre_consumed_quota": 600000,
"billing_source": "wallet"
}
}
Về tác vụ chỗ giữ chỗ và song_id cuối cùng
generate-with-voice là endpoint tạo nhạc bất đồng bộ. Phản hồi thành công chỉ nghĩa là tác vụ tạo nhạc đã được gửi, không phải bài hát đã xong.
Ý nghĩa các trường quan trọng trong phản hồi:
| Trường | Mô tả |
|---|---|
client_request_id |
ID theo dõi của yêu cầu tạo nhạc này. Một yêu cầu thường tạo 2 bài và cả hai kết quả dùng cùng client_request_id. |
items[].placeholder_id |
ID chỗ giữ chỗ cục bộ của nền tảng, thường ở dạng pending:{client_request_id}:{index}. Đây không phải ID bài hát cuối cùng. |
items[].client_request_index |
Chỉ số kết quả trong cùng yêu cầu, thường là 0 và 1. |
items[].status |
Trạng thái ban đầu sau khi gửi, ví dụ submitted. Thành công hay thất bại sau đó theo bản ghi tác vụ cuối cùng. |
Lưu ý: placeholder_id bắt đầu bằng pending: không thể dùng làm song_id cuối cùng, cũng không thể truyền trực tiếp vào /api/music/query hay các endpoint tải xuống. Gọi /api/music/query chỉ với các giá trị pending:* có thể trả về mảng rỗng [], vì bài hát thật chưa xong hoặc tác vụ chỗ giữ chỗ chưa được thay bằng ID bài hát cuối cùng.
Ví dụ sai:
{
"song_ids": "pending:cu_1780480000_abcd1234:0"
}
Luồng đúng:
- Gọi
POST /api/music/generate-with-voiceđể gửi tác vụ tạo nhạc bằng giọng. - Lưu
client_request_id,items[].placeholder_idvàitems[].client_request_indextừ phản hồi. - Thăm dò
GET /api/music/generate-with-voice/results?client_request_id=cu_xxx. - Khi
items[].song_idcó giá trị và không bắt đầu bằngpending:, gọi/api/music/query,/api/music/download-filehoặc/api/music/download-all.
Phiên bản hiện tại bổ sung endpoint truy vấn công khai:
GET /api/music/generate-with-voice/results?client_request_id=cu_xxx
Nó trả về kết quả tác vụ của cùng client_request_id thuộc người dùng hiện tại, để khách hàng tự tra song_id cuối cùng. Trong danh sách trả về:
song_idlà ID bài hát thật;placeholder_idchỉ xuất hiện khi tác vụ vẫn ở trạng thái chỗ giữ chỗ;- giá trị bắt đầu bằng
pending:không dùng được với/api/music/queryhay các endpoint tải xuống.
Nếu bạn chỉ lưu client_request_id hoặc ID chỗ giữ chỗ pending:*, hãy gọi endpoint kết quả này trước; nếu vẫn chưa tra được song_id thật, hãy gửi client_request_id cho hỗ trợ kỹ thuật để định vị.
Truy vấn kết quả tạo nhạc bằng giọng
Endpoint: GET /api/music/generate-with-voice/results
Tính phí: miễn phí.
Tham số truy vấn
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
client_request_id |
string | Có | ID theo dõi do generate-with-voice trả về |
Ví dụ yêu cầu
curl -X GET "https://www.suno-api.io/api/music/generate-with-voice/results?client_request_id=cu_1780480000_abcd1234" \
-H "Authorization: Bearer YOUR_API_KEY"
Ví dụ phản hồi khi đang tạo
{
"success": true,
"message": "",
"data": {
"client_request_id": "cu_1780480000_abcd1234",
"status": "processing",
"items": [
{
"song_id": "",
"placeholder_id": "pending:cu_1780480000_abcd1234:0",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 0,
"status": "processing",
"type": "voice_generate",
"title": "Gió biển đêm hè"
}
]
}
}
Ví dụ phản hồi khi hoàn tất
{
"success": true,
"message": "",
"data": {
"client_request_id": "cu_1780480000_abcd1234",
"status": "completed",
"items": [
{
"song_id": "song_abc123",
"client_request_id": "cu_1780480000_abcd1234",
"client_request_index": 0,
"status": "completed",
"type": "voice_generate",
"title": "Gió biển đêm hè",
"audio_url": "https://...",
"image_url": "https://...",
"duration": 180.5
}
]
}
}
Ý nghĩa status cấp cao nhất
| Trạng thái | Mô tả |
|---|---|
not_found |
Với người dùng hiện tại chưa có bản ghi tác vụ nào cho client_request_id đó |
processing |
Còn ít nhất một kết quả chưa xong; tiếp tục thăm dò |
completed |
Tất cả kết quả đã xong; có thể truy vấn hoặc tải xuống bằng song_id |
partial |
Một phần xong, một phần thất bại; xử lý các song_id đã xong trước |
failed |
Tất cả kết quả thất bại; xem items[].error_message |
8. Tải một tệp
Endpoint: POST /api/music/download-file
Tham số body
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
song_id |
string | Có | ID bài hát |
kind |
string | Có | Loại tải: audio, cover, wav, video |
Ví dụ yêu cầu
curl -X POST https://www.suno-api.io/api/music/download-file \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_id": "song_abc123",
"kind": "audio"
}' \
--output song.mp3
Phản hồi là luồng tệp; Content-Type và tên tệp theo giá trị backend trả về.
9. Tải tài nguyên bài hát dạng gói
Endpoint: POST /api/music/download-all
Tham số body
| Tham số | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
song_id |
string | Có | ID bài hát |
Ví dụ yêu cầu
curl -X POST https://www.suno-api.io/api/music/download-all \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"song_id": "song_abc123"
}' \
--output song.zip
Gói thường chứa audio, ảnh bìa và metadata.json; nếu loại tài nguyên nào chưa được tạo thì sẽ không có trong tệp nén.
Lỗi thường gặp
| message | Mô tả |
|---|---|
voice audio is required |
Khi gửi giọng gốc không cung cấp voice_url lẫn file_base64 |
invalid voice task id |
ID tác vụ giọng trong đường dẫn không hợp lệ |
voice validation is not ready |
Chưa có văn bản xác minh nên không thể gửi audio xác minh |
selected voice is not ready |
Giọng đã chọn chưa thể tạo bài hát (chưa sẵn sàng, đã xóa hoặc không thuộc tài khoản hiện tại) |
selected voice does not match voice task |
voice_id trong yêu cầu không khớp với tác vụ |
voice task is required |
Thiếu voice_task_id khi tạo bài hát bằng giọng |
record not found |
Tác vụ / bài hát không tồn tại, không thuộc tài khoản của API Key hiện tại, hoặc đã bị xóa (truy vấn tác vụ này sau khi xóa giọng cũng thấy kết quả tương tự) |
Lỗi của nhóm này luôn trả về HTTP 200: hãy đánh giá kết quả bằng trường
successtrong nội dung (falselà thất bại, nguyên nhân ởmessage) và đừng chỉ nhìn mã trạng thái HTTP. Ngữ nghĩa đầy đủ của việc xóa giọng (còn dùng được không, có khôi phục được không) ở mục 6.
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