API ต่อเพลงเต็ม (Get Full Song)
คำอธิบายเอนด์พอยต์
การต่อเพลงเต็มใช้รวม «เพลงต้นฉบับ + ท่อนที่สร้างใหม่» ให้เป็นเพลงที่สมบูรณ์หนึ่งเพลง: หลัง Extend จะต่อท่อนถัดไป หลัง Replace Section จะเย็บท่อนใหม่กลับเข้าไปในเพลงต้นฉบับ หน้าเว็บทางการเรียกความสามารถนี้ว่า Get Full Song
เอนด์พอยต์: POST /api/music/concat
ค่าบริการ: มีค่าใช้จ่าย คงที่ 0.05 หยวนต่อครั้ง การต่อเพลงแยกจากราคาการสร้าง และไม่เข้าร่วม Max Mode หรือตัวคูณโปรไฟล์เสียง จำนวนที่หักจริงเป็นไปตามการตั้งราคาในระบบหลังบ้าน
ระยะเวลารอและ timeout (สำคัญ): เอนด์พอยต์นี้เป็นแบบซิงโครนัส — คำสั่งจะถูกรับและส่งเข้าสู่การต่อเพลงเมื่อคำตอบกลับมาเท่านั้น กรุณาตั้ง timeout ฝั่งไคลเอนต์ไว้ที่ 300 วินาทีขึ้นไป การไม่ได้รับคำตอบไม่ได้หมายความว่าไม่ได้ต่อ และอย่าลองซ้ำทันทีหลัง timeout (จะซ้ำคำสั่งและถูกหักเงินซ้ำ) หากการเชื่อมต่อขาด ให้ตรวจสอบภายหลังด้วย
GET /api/music/songs
การยืนยันตัวตน
| พารามิเตอร์ | ชนิด | จำเป็น | หมายเหตุ |
|---|---|---|---|
| Authorization | string | ใช่ | Bearer YOUR_API_KEY |
| Content-Type | string | ใช่ | application/json |
พารามิเตอร์คำขอ
| พารามิเตอร์ | ชนิด | จำเป็น | ค่าเริ่มต้น | หมายเหตุ |
|---|---|---|---|---|
| song_id | string | ใช่ | - | song_id ของท่อนที่จะต่อ (ผลลัพธ์ของ Extend หรือ Replace Section) ต้องเสร็จสมบูรณ์ |
| is_infill | boolean | ไม่ | false | false = ต่อสำหรับการขยาย; true = ต่อสำหรับการแทนที่ (infill) |
| source_audio_url | string | ไม่ | - | ที่อยู่ไฟล์เสียงต้นทาง เมื่อท่อนมาจากบัญชีภายนอก |
| source_file_name | string | ไม่ | - | ชื่อไฟล์ต้นทาง เมื่อท่อนมาจากบัญชีภายนอก |
| source_title | string | ไม่ | - | ชื่อเรื่องต้นทาง เมื่อท่อนมาจากบัญชีภายนอก |
audio_id, source_clip_id, sourceClipId เป็นวิธีเขียนที่เทียบเท่า song_id ใช้อย่างใดอย่างหนึ่ง
ตัวอย่างคำขอ
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
}'
หากต้องการต่อหลังจากแทนที่ท่อน ให้ตั้ง is_infill เป็น true:
{ "song_id": "infilled_clip_id", "is_infill": true }
คำตอบ
{
"code": 200,
"message": "success",
"data": {
"clips": [
{
"song_id": "concat_clip_id",
"song_title": "ชื่อเพลงต้นทาง",
"status": "queued"
}
]
}
}
การต่อคืนเพียง 1 ผลลัพธ์ (ไม่สร้าง 2 เพลงพร้อมกัน) บันทึก clips[].song_id แล้วใช้ API สอบถามเพลงและประวัติ สอบถามจนกว่าจะเป็น complete ก่อนดึงไฟล์เสียง
ความยาวของผลลัพธ์มาจากไหน
การต่อไม่ได้นำสองไฟล์มาต่อกันตรง ๆ แต่ตัดเพลงต้นทางตามจุดเวลาที่บันทึกไว้ในประวัติของท่อน:
| โหมด | องค์ประกอบของผลลัพธ์ |
|---|---|
is_infill: false |
เพลงต้นทาง [0 .. continue_at] + ความยาวทั้งหมดของท่อนที่ต่อ |
is_infill: true |
เพลงต้นทาง [0 .. จุดเริ่ม] + ท่อนใหม่ที่แทนที่แล้ว + เพลงต้นทาง [จุดสิ้นสุด .. ท้ายเพลง] |
ดังนั้นเสียงต้นฉบับหลังจากจุดต่อจะถูกทิ้งไป จึงไม่เกิดการซ้ำทั้งท่อน
ข้อควรระวัง
- ต่อได้เฉพาะท่อนที่เสร็จสมบูรณ์แล้ว ถ้าท่อนยังสร้างอยู่ให้รอให้เสร็จก่อน
- ผลลัพธ์เป็นเรกคอร์ดใหม่ ท่อนเดิมยังคงอยู่และใช้ต่อได้
- หากต้องการรวมสองเพลงที่ต่างกันเป็นเพลงเดียว ให้ใช้ API มาชอัป; หากต้องการเก็บไว้เพียงท่อนเดียว ให้ใช้ API ตัดเพลง
รับคีย์ API
สร้างคีย์ API ในคอนโซลหลังสมัครสมาชิก การสร้างหนึ่งครั้งราคา 0.6 หยวน ได้ 2 เพลง ดาวน์โหลดไม่จำกัด และไม่ต้องใช้เบอร์โทรศัพท์
รับคีย์ API กลับไปภาพรวม