API สร้างเพลงโหมดกำหนดเอง
คำอธิบายเอนด์พอยต์
โหมดกำหนดเองเหมาะเมื่อคุณมีเนื้อเพลง สไตล์ และชื่อเพลงพร้อมแล้ว และต้องการควบคุมเสียงที่ร้อง ระดับอิทธิพลของสไตล์ และระดับความสุ่มของการสร้าง
เอนด์พอยต์: POST /api/music/create/custom
ค่าบริการ: มีค่าใช้จ่าย ปัจจุบันค่าเริ่มต้น 0.6 หยวนต่อครั้ง โดยทั่วไปแต่ละครั้งได้ 2 เพลง และจำนวนที่หักจริงเป็นไปตามการตั้งราคาในระบบหลังบ้านปัจจุบัน
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 ใหม่
พารามิเตอร์คำขอ
Headers
| พารามิเตอร์ | ชนิด | จำเป็น | หมายเหตุ |
|---|---|---|---|
| Authorization | string | ใช่ | Bearer YOUR_API_KEY |
| Content-Type | string | ใช่ | application/json |
พารามิเตอร์บอดี
| พารามิเตอร์ | ชนิด | จำเป็น | ค่าเริ่มต้น | หมายเหตุ |
|---|---|---|---|---|
| model | string | ไม่ | suno-v6 |
ชื่อโมเดลสำหรับลูกค้า: suno-v6, suno-v6-wild หรือ suno-v6-mini |
| lyrics | string | ไม่ | - | เนื้อเพลง; เพลงบรรเลงปล่อยว่างได้ |
| style_tags | string | ใช่ | - | แท็กสไตล์ หลายแท็กคั่นด้วยเครื่องหมายจุลภาคได้ |
| song_title | string | ไม่ | - | ชื่อเพลง |
| instrumental | boolean | ไม่ | false |
จะสร้างเพลงบรรเลงหรือไม่ |
| negative_tags | string | ไม่ | - | สไตล์หรือเอฟเฟกต์ที่ไม่ต้องการให้มี |
| vocal_gender | string | ไม่ | - | เพศของเสียง: m, f, male หรือ female |
| style_weight | number | ไม่ | - | อิทธิพลของสไตล์ ตั้งแต่ 0.0 ถึง 1.0 |
| weirdness_constraint | number | ไม่ | - | ความสุ่ม ตั้งแต่ 0.0 ถึง 1.0 |
| wait_completion | boolean | ไม่ | false |
รอให้สร้างเสร็จก่อนตอบกลับหรือไม่ |
คำอธิบายพารามิเตอร์ขั้นสูง
เพศของเสียง vocal_gender
- ส่ง
mหรือmaleสำหรับเสียงชาย,fหรือfemaleสำหรับเสียงหญิง - ระบบจะปรับ
maleและfemaleให้เป็นmและfตามลำดับ - เมื่อ
instrumental=trueจะไม่ส่งพารามิเตอร์เพศของเสียงไปยังบริการสร้างเพลง
อิทธิพลของสไตล์ style_weight
ควบคุมว่าผลลัพธ์ยึดตาม style_tags มากเพียงใด ยิ่งค่าสูง ผลลัพธ์ยิ่งมีแนวโน้มตามแท็กสไตล์ที่กรอก
ความสุ่ม weirdness_constraint
ควบคุมระดับการเปลี่ยนแปลงและความเป็นเชิงทดลองของผลลัพธ์ ค่าสูงมักให้ความหลากหลายมากกว่า ค่าต่ำมักให้ผลที่ปลอดภัยกว่า
พารามิเตอร์ตัวเลขทั้งสองอยู่ในช่วง 0.0 ถึง 1.0 และ 0 เป็นค่าที่ระบุได้อย่างชัดเจน การไม่ส่งฟิลด์เลยเท่านั้นจึงหมายถึง "ไม่ระบุ"
ขณะกรอก โปรดทราบว่าค่าเหล่านี้เป็นทศนิยมตามสัดส่วน ไม่ใช่จำนวนเต็มเปอร์เซ็นต์ แนวทางที่แนะนำ: 0.0–0.3 อนุรักษ์นิยม, 0.4–0.6 สมดุล, 0.7–1.0 เชิงทดลองมากขึ้น หากไม่มีความชอบชัดเจนให้ใช้ 0.5 หรือปล่อยว่าง ตัวอย่าง: weirdness_constraint: 0.5 ห้ามกรอก 50 หรือ 50%
เมื่อ instrumental=true จะได้เพลงบรรเลง เนื้อเพลงและเพศของเสียงจึงไม่ทำงานเหมือนเพลงที่มีเสียงร้อง หากต้องการเสียงร้องให้ส่ง false หรือไม่ส่งฟิลด์นี้ ฟิลด์บูลีนต้องใช้ true/false ของ JSON ไม่ใช่สตริง
ตัวอย่างคำขอ Python
import requests
response = requests.post(
'https://www.suno-api.io/api/music/create/custom',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'model': 'suno-v6',
'lyrics': '[Verse]\nกลางคืนทอดลงบนผืนทะเล\nลมเย็นยามค่ำผ่านหน้าต่าง',
'style_tags': 'Mandopop, acoustic guitar, warm vocal',
'song_title': 'ลมเย็นริมทะเล',
'vocal_gender': 'male',
'style_weight': 0.68,
'weirdness_constraint': 0.32,
},
timeout=300,
)
response.raise_for_status()
songs = response.json()
โหมดใบรับคำสั่ง (ไม่บังคับ)
เอนด์พอยต์นี้รองรับ โหมดใบรับคำสั่ง จาก API สร้างเพลงโหมดง่าย ด้วย: เมื่อใส่ "accept_mode": "async" ในบอดี (หรือเฮดเดอร์ X-Accept-Mode: async) เอนด์พอยต์จะคืน 202 และเลขใบรับคำสั่งทันที การสร้างยังทำงานเบื้องหลัง และติดตามความคืบหน้าด้วย GET /api/music/requests/{request_id}
เหมาะกับไคลเอนต์ที่ไม่ควรถือการเชื่อมต่อนาน หรือไม่ต้องการให้ timeout ถูกตีความว่า "ไม่ได้สร้าง" หากไม่ส่งพารามิเตอร์นี้ พฤติกรรมเหมือนเดิมทุกอย่าง
curl -X POST https://www.suno-api.io/api/music/create/custom \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
--max-time 300 \
-d '{
"style_tags": "Mandopop, acoustic guitar, warm vocal",
"song_title": "ลมเย็นริมทะเล",
"vocal_gender": "male",
"accept_mode": "async"
}'
โครงสร้างคำตอบและวิธีตรวจสอบเป็นระยะดูได้ในหัวข้อ "โหมดใบรับคำสั่ง" ของ API สร้างเพลงโหมดง่าย
การตรวจสอบพารามิเตอร์
กรณีต่อไปนี้คืน HTTP 400 และ message ของข้อผิดพลาดจะระบุฟิลด์ที่ไม่ถูกต้อง:
style_weightหรือweirdness_constraintไม่ใช่ตัวเลข- ค่าตัวเลขน้อยกว่า
0.0หรือมากกว่า1.0 vocal_genderไม่ใช่หนึ่งในm,f,male,female
ขีดจำกัดความยาวฟิลด์ข้อความ
ฟิลด์ต่อไปนี้ก็คืน HTTP 400 เมื่อยาวเกิน และไม่เข้าสู่การสร้าง ไม่หักเงินล่วงหน้า การนับเป็นอักขระ Unicode (อักษรจีนหนึ่งตัวนับเป็น 1) และนับช่องว่างหัวท้ายด้วย:
| ฟิลด์ | ขีดจำกัด |
|---|---|
prompt (เนื้อเพลง ใช้ lyrics ได้) |
3000 อักขระ |
style_tags (สไตล์ ใช้ tags, style ได้) |
1000 อักขระ |
negative_tags (สไตล์ที่ตัดออก) |
1000 อักขระ |
song_title (ชื่อเพลง ใช้ title ได้) |
100 อักขระ |
ข้อความผิดพลาดมีรูปแบบ style_tags must not exceed 1000 characters; received 2772: คำแรกคือชื่อฟิลด์ที่เกิน และท้ายคือจำนวนที่นับได้ เมื่อได้ 400 จึงตัดตามสองตัวเลขนี้ได้ทันที ไม่ต้องลองทีละฟิลด์ ส่วนข้อกำหนดทั่วไปอยู่ใน "ขีดจำกัดฟิลด์ข้อความ" ของ ภาพรวม API ใหม่
คำตอบ
เอนด์พอยต์มักคืนอาร์เรย์ที่มี 2 เพลง คำขอแบบอะซิงโครนัสมักเริ่มที่สถานะ pending ให้บันทึก song_id แล้วดูสถานะสุดท้ายและที่อยู่ไฟล์เสียงผ่าน API สอบถามเพลง ฟิลด์ของเพลงเหมือนกับ API สร้างเพลงโหมดง่าย
ฟิลด์ที่ใช้แทนกันได้
| ฟิลด์ที่แนะนำ | ฟิลด์ที่ใช้แทนกันได้ |
|---|---|
vocal_gender |
vocalGender |
style_weight |
styleWeight |
weirdness_constraint |
weirdnessConstraint |
การเชื่อมต่อใหม่ควรใช้ snake_case ให้สม่ำเสมอ หากคำขอเดียวกันส่งทั้ง snake_case และ camelCase ค่าของ snake_case จะมีผลก่อน
รับคีย์ API
สร้างคีย์ API ในคอนโซลหลังสมัครสมาชิก การสร้างหนึ่งครั้งราคา 0.6 หยวน ได้ 2 เพลง ดาวน์โหลดไม่จำกัด และไม่ต้องใช้เบอร์โทรศัพท์
รับคีย์ API กลับไปภาพรวม