API ดาวน์โหลดและฟังตัวอย่างสื่อเพลง
คำอธิบายเอนด์พอยต์
กลุ่มเอนด์พอยต์นี้แยก «การขอที่อยู่สื่อ» ออกจาก «การดาวน์โหลดไฟล์จริง»:
- ต้องการที่อยู่ที่เล่นหรือดาวน์โหลดได้ทันที (เช่น นำไปใส่ในโปรแกรมเล่นของคุณ หรือคัดลอกไปยังที่เก็บออบเจ็กต์): ใช้
POST /api/music/download-urlหรือGET /api/music/downloadที่มีอยู่ในคำตอบแล้ว - ต้องการให้เบราว์เซอร์บันทึกไฟล์ลงดิสก์โดยตรง: ใช้
POST /api/music/download-file(ไฟล์เดียว) หรือPOST /api/music/download-all(แพ็ก) - เพลงยังสร้างอยู่และอยากฟังก่อน: ใช้
POST /api/music/generation-stream-url
ค่าบริการ: ฟรีทั้งหมด การดาวน์โหลดและฟังตัวอย่างเพียงอ่านสื่อที่แพลตฟอร์มโฮสต์ไว้แล้ว ไม่เรียก Suno และไม่คิดค่าใช้จ่าย
โมเดลที่แนะนำ: suno-v6 ใช้ได้ทั้ง suno-v6, suno-v6-wild และ suno-v6-mini
การยืนยันตัวตน
| พารามิเตอร์ | ชนิด | จำเป็น | หมายเหตุ |
|---|---|---|---|
| Authorization | string | ใช่ | Bearer YOUR_API_KEY (GET /api/music/download รับสถานะล็อกอินด้วย) |
| Content-Type | string | ใช่ | application/json |
ชนิดสื่อที่รองรับ (kind)
| kind | หมายเหตุ |
|---|---|
song |
เสียง (mp3 เป็นชื่อพ้องและเป็นค่าเริ่มต้น คำตอบจะเขียนกลับเป็น song เสมอ) |
wav |
ไฟล์ WAV ต้องเรียก API สร้าง/รับไฟล์ WAV เพื่อเตรียมก่อน |
video |
วิดีโอ (mp4 เป็นชื่อพ้อง) |
midi |
MIDI ของแต่ละสเต็ม ใช้ได้เฉพาะสเต็มที่แยกเสร็จแล้ว ดู API ดึงไฟล์ MIDI |
cover |
ภาพปก (image เป็นชื่อพ้อง) |
lyrics |
ข้อความเนื้อเพลง (.txt) ใช้ได้เฉพาะ download-file / GET /api/music/download เท่านั้น ส่วน download-url ไม่คืนที่อยู่เนื้อเพลง |
timestamped_lyrics |
ไฟล์เนื้อเพลงพร้อมไทม์สแตมป์ (.lrc ชื่อพ้อง lrc) ปัจจุบันรองรับเพียงบางเพลง เมื่อคืน success:false ให้ใช้ API เนื้อเพลงพร้อมไทม์สแตมป์ ดึงไทม์ไลน์แล้วสร้างไฟล์เอง |
1) ขอที่อยู่สื่อ
curl -X POST https://www.suno-api.io/api/music/download-url \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"song_id": "song_id", "kind": "song"}'
{
"code": 200,
"message": "success",
"data": {
"song_id": "song_id",
"kind": "song",
"url": "https://media.suno-api.io/assets/song_id-mp3.mp3",
"nav_url": "https://media.suno-api.io/assets/song_id-mp3.mp3?...&response-content-disposition=attachment..."
}
}
| พารามิเตอร์ | ชนิด | จำเป็น | หมายเหตุ |
|---|---|---|---|
| song_id | string | ใช่ | ID เพลงของคุณเอง |
| kind | string | ไม่ | ดูตารางด้านบน ค่าเริ่มต้นคือ song |
| refresh | boolean | ไม่ | ส่ง true เพื่อบังคับเตรียมทรัพยากรใหม่ (เช่น หลังไฟล์บน CDN ถูกเรียกคืน) |
url ใช้สำหรับเล่นหรือคัดลอกเก็บเอง ส่วน nav_url มี Content-Disposition: attachment
เหมาะสำหรับวางในช่องที่อยู่ของเบราว์เซอร์เพื่อดาวน์โหลดโดยตรง (ใช้เมื่อเบราว์เซอร์บนมือถือบางตัวไม่รองรับการดาวน์โหลดแบบ blob)
⚠️ อายุของที่อยู่: 7 วัน กรุณาโอนย้ายเก็บไว้ทันที
url/nav_urlชี้ไปที่ที่เก็บออบเจ็กต์ของแพลตฟอร์ม และหมดอายุภายใน 7 วันโดยค่าเริ่มต้น (ไฟล์จะถูกเรียกคืน และที่อยู่เดิมจะคืน 404) กรุณาโอนย้ายไปเก็บในที่จัดเก็บของคุณภายใน 7 วันนั้นหลังจากหมดอายุไม่ต้องสร้างเพลงใหม่: เพียงเรียก
POST /api/music/download-urlอีกครั้ง (หรือส่งrefresh: true) ก็จะได้ที่อยู่ใหม่ที่ใช้งานได้ของเพลงนั้น กลุ่มเอนด์พอยต์นี้ฟรีและไม่มีค่าใช้จ่ายเพิ่ม
2) ดาวน์โหลดไฟล์เดียวโดยตรง
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_id", "kind": "song"}' \
-o song.mp3
เนื้อคำตอบเป็นสตรีมไฟล์ (ไม่ใช่ JSON) และ Content-Disposition มีชื่อไฟล์มาให้แล้ว
เนื้อเพลงและเนื้อเพลงพร้อมไทม์สแตมป์ใช้ได้เฉพาะเอนด์พอยต์นี้ (download-url คืนเฉพาะที่อยู่สื่อ ไม่คืนเนื้อเพลง)
ไฟล์ .lrc ปัจจุบันรองรับเพียงบางเพลง หากคืน success:false ให้สร้าง .lrc เองด้วย
API เนื้อเพลงพร้อมไทม์สแตมป์ ตามหัวข้อถัดไป ไม่ต้องลองซ้ำ
วิธีดึงเนื้อเพลงพร้อมไทม์สแตมป์ (.lrc)
แนะนำสองขั้นตอน ใช้ได้กับทุกเพลง:
ขั้นที่ 1: ดึงไทม์ไลน์แบบรายคำ (ฟรี)
curl -X POST https://www.suno-api.io/api/lyrics/timeline \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "suno-v6", "song_id": "song_id"}'
ผลลัพธ์เป็นอาร์เรย์โดยตรง (ไม่มีตัวห่อ data) แต่ละรายการมีรูปแบบ
{"word": "…", "start_s": 1.117, "end_s": 8.138, "success": true, "p_align": 0.99}
word มีอักขระขึ้นบรรทัดใหม่มาให้แล้ว จึงแยกตามบรรทัดได้ ส่วนความหมายของฟิลด์ การกรองท่อนบรรเลง และข้อควรระวังอื่น ๆ ดูได้ใน
«คำอธิบายฟิลด์» และ «ข้อควรระวังในการใช้» ของ API เนื้อเพลงพร้อมไทม์สแตมป์
ขั้นที่ 2: ประกอบ .lrc เองจาก start_s (รูปแบบเวลา [mm:ss.cc])
def to_lrc(segments):
lines = []
for seg in segments:
text = seg["word"].strip()
if not text:
continue
start = max(0.0, float(seg["start_s"]))
cs = int(start * 100 + 0.5)
lines.append(f"[{cs // 6000:02d}:{(cs % 6000) // 100:02d}.{cs % 100:02d}]{text}")
return "\n".join(lines)
GET /api/music/download?song_id=<id>&kind=lrc ก็ดาวน์โหลดไฟล์ .lrc ที่เซิร์ฟเวอร์สร้างให้ได้โดยตรง
แต่ปัจจุบันรองรับเพียงบางเพลง หากคืน success:false ให้สร้างเองด้วยวิธีข้างต้น
ไม่ต้องลองซ้ำ และไม่มีผลต่อการคิดค่าบริการ
3) ดาวน์โหลดแบบแพ็ก
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_ids": ["song_id_1", "song_id_2"]}' \
-o songs.zip
ใช้ song_id (รายการเดียว) หรือ song_ids (หลายรายการ สูงสุด 50 รายการ) อย่างใดอย่างหนึ่ง เนื้อคำตอบเป็นสตรีม ZIP
4) ที่อยู่ดาวน์โหลดแบบถาวร
GET /api/music/download?song_id=<id>&kind=<kind> เป็นทางเข้าดาวน์โหลดที่ให้มาในคำตอบของเพลงโดยตรง
รองรับทั้ง API Key และสถานะล็อกอิน ทำงานเทียบเท่า download-file เหมาะสำหรับฝังไว้ในไคลเอนต์หรือโปรแกรมเล่นของบุคคลที่สาม
5) ฟังตัวอย่างระหว่างสร้าง
curl -X POST https://www.suno-api.io/api/music/generation-stream-url \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"song_ids": ["song_id_1", "song_id_2"]}'
{
"code": 200,
"message": "success",
"data": {
"items": [
{
"song_id": "song_id_1",
"url": "https://media.suno-api.io/assets/song_id_1-mp3.mp3",
"expires_at": 0,
"content_type": "audio/mpeg",
"playable_until_completed": false,
"mode": "mp3",
"ranges": true
}
]
}
}
| พารามิเตอร์ | ชนิด | จำเป็น | หมายเหตุ |
|---|---|---|---|
| song_id | string | ไม่ | ID เพลงเดียว |
| song_ids | string[] | ไม่ | หลายรายการ สูงสุด 24 รายการ (ขีดจำกัดจำนวนสเต็มต่อการแยกอัตโนมัติหนึ่งชุด) |
ถ้า playable_until_completed เป็น true แสดงว่านี่คือที่อยู่ฟังตัวอย่างชั่วคราวของเพลงที่กำลังสร้าง เมื่อเพลงเสร็จให้เปลี่ยนไปใช้ที่อยู่ถาวร
หากเพลงใดล้มเหลว รายการนั้นจะมีฟิลด์ error ส่วนเพลงอื่นยังคืนตามปกติ
ข้อควรระวัง
- ทุกเอนด์พอยต์คืนเฉพาะที่อยู่สื่อที่แพลตฟอร์มโฮสต์ไว้ ไม่คืนแหล่งเล่นแบบเข้ารหัสของ Suno หรือที่อยู่เซ็นชื่อชั่วคราว
- ที่อยู่ไม่ได้มีอายุถาวร หากต้องการเก็บระยะยาวกรุณาโอนย้ายเอง เมื่อต้องการให้ไฟล์ต้นฉบับลงดิสก์ให้ใช้
download-file - MIDI ของสเต็มต้องแยกสเต็มนั้นให้เสร็จก่อน มิฉะนั้นจะคืนข้อผิดพลาด
รับคีย์ API
สร้างคีย์ API ในคอนโซลหลังสมัครสมาชิก การสร้างหนึ่งครั้งราคา 0.6 หยวน ได้ 2 เพลง ดาวน์โหลดไม่จำกัด และไม่ต้องใช้เบอร์โทรศัพท์
รับคีย์ API กลับไปภาพรวม