API ดาวน์โหลดและฟังตัวอย่างสื่อเพลง

อัปเดต 2026-09-18 · ทีม Suno-API

คำอธิบายเอนด์พอยต์

กลุ่มเอนด์พอยต์นี้แยก «การขอที่อยู่สื่อ» ออกจาก «การดาวน์โหลดไฟล์จริง»:

ค่าบริการ: ฟรีทั้งหมด การดาวน์โหลดและฟังตัวอย่างเพียงอ่านสื่อที่แพลตฟอร์มโฮสต์ไว้แล้ว ไม่เรียก 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 ส่วนเพลงอื่นยังคืนตามปกติ

ข้อควรระวัง

ถัดไปAPI ดาวน์โหลด Free2

รับคีย์ API

สร้างคีย์ API ในคอนโซลหลังสมัครสมาชิก การสร้างหนึ่งครั้งราคา 0.6 หยวน ได้ 2 เพลง ดาวน์โหลดไม่จำกัด และไม่ต้องใช้เบอร์โทรศัพท์

รับคีย์ API กลับไปภาพรวม