API คัฟเวอร์จากคลิปต้นทาง
คำอธิบายเอนด์พอยต์
คัฟเวอร์จากคลิปต้นทางใช้คลิปต้นทางที่คุณอัปโหลดไว้แล้ว หรือคลิปที่มีอยู่แล้ว มาใช้ซ้ำ และสร้างเวอร์ชันคัฟเวอร์ใหม่จากคลิปนั้น
เอนด์พอยต์: POST /api/music/generate-from-source
ค่าบริการ: มีค่าใช้จ่าย ปัจจุบันค่าเริ่มต้น 0.6 หยวนต่อครั้ง การอัปโหลดเสียงต้นทางเองไม่คิดค่าใช้จ่าย จะคิดค่าบริการเมื่อสร้างคัฟเวอร์จากคลิปต้นทาง ยอดหักจริงเป็นไปตามการตั้งราคาในระบบหลังบ้านปัจจุบัน
Max Mode / Variety: เอนด์พอยต์นี้รองรับพารามิเตอร์ทางเลือก max_mode และ variety (0-4) เมื่อเปิด
max_mode ครั้งนี้จะคิดค่าบริการเป็น 2 เท่า (0.6 → 1.2 หยวนต่อครั้ง) ส่วน variety ไม่มีค่าใช้จ่ายเพิ่ม
ความหมายและวิธีส่งดูได้ในหัวข้อ "พารามิเตอร์ขั้นสูง" ของ
ภาพรวม API ใหม่
ระยะเวลารอและ timeout (สำคัญ): เอนด์พอยต์นี้เป็นแบบซิงโครนัส — คำสั่งจะถูกรับและส่งเข้าสู่การสร้างเมื่อคำตอบกลับมาเท่านั้น จากการวัด ส่วนใหญ่ตอบกลับภายใน 1-3 วินาที ประมาณ 10% เกิน 30 วินาที และนานที่สุดประมาณ 230 วินาที กรุณาตั้ง timeout ฝั่งไคลเอนต์ไว้ที่ 300 วินาทีขึ้นไป การไม่ได้รับคำตอบไม่ได้หมายความว่าไม่ได้สร้าง และอย่าลองซ้ำทันทีหลัง timeout (จะซ้ำคำสั่งและถูกหักเงินซ้ำ) หากการเชื่อมต่อขาด ให้ตรวจสอบภายหลังด้วย
GET /api/music/songsดูหัวข้อ "ระยะเวลารอและการตั้งค่า timeout" ใน ภาพรวม API ใหม่
วิธีใช้ที่แนะนำ: นี่คือขั้นที่ 2 ของ «คัฟเวอร์สองขั้น» ขั้นที่ 1 อัปโหลดด้วย API อัปโหลดเสียงต้นทาง (ฟรี) แล้วเก็บ
clip_idไว้ ขั้นที่ 2 เรียกเอนด์พอยต์นี้เพื่อเริ่มคัฟเวอร์ วิธีนี้ทำให้เสียงปรากฏเฉพาะในขั้นที่ฟรี: ถ้าอัปโหลดเสียก็ลองใหม่ได้เลย ไม่มีการหักเงิน ส่วนเนื้อคำขอของขั้นที่คิดเงินมีเพียงไม่กี่ร้อยไบต์ จึงแทบเป็นไปไม่ได้ที่จะล้มเหลวเพราะการรับส่งถูกตัดกลางทาง ส่วน API อัปโหลดแล้วคัฟเวอร์ในครั้งเดียว จะใส่เสียงทั้งไฟล์ลงในเนื้อคำขอ ดังนั้นเมื่อเสียงเกินประมาณ 8MB มักถูกตัดกลางทางและคืนunexpected end of JSON input(ดูหัวข้อ "ไฟล์ใหญ่และคำขอที่ถูกตัด" ในหน้านั้น)นอกจากนี้
clip_idเดียวกันยังใช้ซ้ำกับ Extend, Replace Section, การแยกแทร็ก และงานต่อเนื่องอื่น ๆ ได้ ไม่ต้องอัปโหลดเสียงซ้ำ
พารามิเตอร์คำขอ
Headers
| พารามิเตอร์ | ชนิด | จำเป็น | หมายเหตุ |
|---|---|---|---|
| Authorization | string | ใช่ | Bearer YOUR_API_KEY |
| Content-Type | string | ใช่ | application/json |
พารามิเตอร์บอดี
| พารามิเตอร์ | ชนิด | จำเป็น | ค่าเริ่มต้น | หมายเหตุ |
|---|---|---|---|---|
| model | string | ไม่ | suno-v6 | ชื่อโมเดลสำหรับลูกค้า: suno-v6, suno-v6-wild หรือ suno-v6-mini |
| sourceClipId | string | ใช่ | - | ID คลิปต้นทาง ใช้ clip_id ที่ API อัปโหลดเสียงต้นทางคืนมา, song_id จริงของเพลงที่มีอยู่แล้ว หรือ song_id จริงที่คืนมาหลังอัปโหลดแบบเสริมความเสร็จสิ้น |
| sourceAudioUrl | string | ไม่ | - | URL ของเสียงต้นทาง |
| sourceTitle | string | ไม่ | - | ชื่อเสียงต้นทาง |
| prompt | string | ไม่ | - | เนื้อเพลงใหม่หรือทิศทางสร้างสรรค์ |
| customMode | boolean | ไม่ | true | ใช้โหมดกำหนดเองหรือไม่ |
| style | string | ไม่ | - | แท็กสไตล์ |
| title | string | ไม่ | - | ชื่อเพลง |
| negativeTags | string | ไม่ | - | สไตล์เชิงลบ |
| instrumental | boolean | ไม่ | false | เป็นเพลงบรรเลงหรือไม่ |
| waitAudio | boolean | ไม่ | false | รอให้เสียงเสร็จสิ้นหรือไม่ |
| vocalGender | string | ไม่ | - | เพศของเสียงร้อง |
| lyricsMode | string | ไม่ | - | โหมดเนื้อเพลง |
| weirdnessConstraint | number | ไม่ | - | ความสุ่ม |
| styleWeight | number | ไม่ | - | น้ำหนักอิทธิพลของสไตล์ |
| audio_weight | number | ไม่ | - | ระดับการพึ่งพาเสียงอ้างอิง ช่วง 0.0-1.0 ส่งได้เฉพาะเมื่อระบุคลิปต้นทางหรือเสียงอ้างอิง |
weirdnessConstraint, styleWeight และ audio_weight รับค่าเป็นทศนิยมสัดส่วนตั้งแต่ 0.0 ถึง 1.0 ไม่ใช่จำนวนเต็มเปอร์เซ็นต์ เช่น 50% ให้เขียนเป็น 0.5 ค่า 0 ถือว่าใช้ได้ การเว้นฟิลด์ว่างเท่านั้นที่หมายถึง "ไม่ระบุ" audio_weight จะแมปไปยัง metadata.control_sliders.audio_weight ของ Suno และควบคุมว่าผลลัพธ์พึ่งพาเสียงอ้างอิงมากเพียงใด จะใส่ได้เฉพาะเมื่อในคำขอมี sourceClipId ที่ใช้ได้หรือมีเสียงอ้างอิง ดังนั้นอย่าส่งในการสร้างจากข้อความล้วนทั่วไป เมื่อ customMode=true ให้ใส่เนื้อเพลงใหม่ใน prompt และระบุ style กับ title พร้อมกัน เมื่อ customMode=false ให้ใส่คำอธิบายงานสร้างสรรค์ใน prompt instrumental และ waitAudio ต้องใช้ค่าบูลีน JSON true/false
เอนด์พอยต์นี้คืนค่าแบบอะซิงโครนัสโดยค่าเริ่มต้น เมื่อ status ที่คืนมาเป็น pending การที่ audio_url ว่างเป็นเรื่องปกติ กรุณารอให้เสร็จก่อนใช้ที่อยู่เสียง sourceClipId ต้องเป็น ID เพลง/คลิปต้นทางจริง ใช้ task_id, client_request_id หรือ ID ชั่วคราวแบบ pending: ไม่ได้
sourceClipId คือ ID อะไร
sourceClipId คือตัวระบุคลิป Suno จริงที่ใช้เป็นต้นทางของคัฟเวอร์ครั้งนี้ วัตถุเพลงสำหรับลูกค้าของแพลตฟอร์มมักเรียกตัวระบุนี้ว่า song_id ส่วนพารามิเตอร์คำขอคัฟเวอร์ยังใช้ชื่อ sourceClipId ในที่นี้ทั้งสองหมายถึง ID เพลงจริงเดียวกัน
ถ้าต้นทางมาจากการอัปโหลดแบบเสริมความ ให้สอบถามงานอัปโหลดแบบเสริมความก่อน รอจน status กลายเป็น completed แล้วนำ song_id จริงที่คืนมาใส่ใน sourceClipId ขอแนะนำให้ใส่ audio_url และ title ของผลลัพธ์นั้นลงใน sourceAudioUrl และ sourceTitle ด้วย
อย่าใส่ task_id, client_request_id หรือ ID ชั่วคราว pending:enhanced-upload:* ของการอัปโหลดแบบเสริมความลงใน sourceClipId
ตัวอย่างคำขอ
curl -X POST https://www.suno-api.io/api/music/generate-from-source \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-v6",
"sourceClipId": "uploaded_or_existing_clip_id",
"sourceAudioUrl": "https://example.com/source.mp3",
"sourceTitle": "ชื่อเสียงต้นฉบับ",
"prompt": "เนื้อเพลงใหม่หรือทิศทางสร้างสรรค์",
"customMode": true,
"style": "Mandopop, warm vocal",
"title": "ชื่อคัฟเวอร์",
"negativeTags": "noise",
"audio_weight": 0.5,
"instrumental": false,
"waitAudio": false
}'
คำตอบ
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "new_clip_id",
"song_title": "ชื่อคัฟเวอร์",
"status": "pending"
}
],
"source_update": {}
}
}
ข้อควรระวัง
เอนด์พอยต์นี้จะจัดการปัญหาเจ้าของบัญชีของคลิปต้นทางให้มากที่สุด หากใช้คลิปต้นทางโดยตรงไม่ได้ เซิร์ฟเวอร์อาจอัปโหลดใหม่จากข้อมูลเสียงต้นทางแล้วจึงสร้างเพลง
รับคีย์ API
สร้างคีย์ API ในคอนโซลหลังสมัครสมาชิก การสร้างหนึ่งครั้งราคา 0.6 หยวน ได้ 2 เพลง ดาวน์โหลดไม่จำกัด และไม่ต้องใช้เบอร์โทรศัพท์
รับคีย์ API กลับไปภาพรวม