MIDI 取得 API
介面說明
MIDI 介面用於把已完成分軌的軌道轉成標準 MIDI 檔案,供編曲、二次創作或 DAW 匯入使用。
Suno 不提供 MIDI 檔案的下載位址,只提供每一軌的音符資料(音高、起止時間、力度)。本介面會把這些音符資料轉換成標準 MIDI 檔案(SMF format 1)後直接返回,因此返回的一定是可被 DAW 開啟的真實 .mid 檔案。
介面位址: POST /api/music/download-file
本頁是 MIDI 的專用範例。下載家族(媒體位址、單一檔案、打包、生成中試聽)的完整說明見 歌曲媒體下載與試聽 API。
計費: 免費。該介面用於讀取既有分軌的音符資料,不扣除額度。
請求參數
Headers
| 參數名 | 型別 | 必填 | 說明 |
|---|---|---|---|
| Authorization | string | 是 | Bearer YOUR_API_KEY |
| Content-Type | string | 是 | application/json |
請求主體參數
| 參數名 | 型別 | 必填 | 預設值 | 說明 |
|---|---|---|---|---|
| song_id | string | 是 | - | 分軌後單條軌道的歌曲 ID(/api/music/separate 返回的每個 clip id) |
| kind | string | 是 | - | 固定為 midi |
請求範例
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": "stem_clip_id",
"kind": "midi"
}' \
--output track.mid
回應結果
回應體是 MIDI 檔案的二進位內容,不是 JSON。
| 回應標頭 | 值 |
|---|---|
| Content-Type | audio/midi |
| Content-Disposition | attachment; filename="<歌曲標題>.mid" |
取得下載位址
如果需要先拿到位址再下載(例如批次打包),可以先呼叫:
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":"stem_clip_id","kind":"midi"}'
{
"success": true,
"message": "",
"data": {
"song_id": "stem_clip_id",
"kind": "midi",
"url": "https://www.suno-api.io/api/music/download?song_id=stem_clip_id&kind=midi"
}
}
該位址同樣需要攜帶 Authorization 請求標頭才能存取;不帶 API Key 會返回 401。
MIDI 檔案說明
| 項目 | 取值 | 說明 |
|---|---|---|
| 檔案格式 | SMF format 1 | 1 條 Tempo 軌 + 每條樂器 1 條軌 |
| 時間精度 | 480 PPQ | 每拍 480 tick |
| 速度 | 120 BPM | Suno 只給秒數、不給 BPM,因此使用固定速度寫入時間軸 |
| 時間軸 | 1 秒 = 960 tick |
與平台返回的秒數一一對應,匯入 DAW 後可按需改速度 |
| 力度 | 0–127 | 平台給的是 0–1 浮點,介面已按 ×127 換算 |
| 鼓組 | MIDI 通道 10 | 平台標記為鼓的軌道會自動放到打擊樂通道 |
注意事項
- 只對已完成分軌的軌道有效:
song_id必須是/api/music/separate返回的軌道 ID,不能傳原始歌曲 ID。 - 沒有音符的分軌是正常結果:某些軌道(例如 FX)沒有可轉譜的音符,此時會返回一個不含音符的合法 MIDI 檔案,而不是報錯。
- MIDI 只包含音符資訊:音量、聲像、效果器等混音參數不在 MIDI 中,需要在 DAW 裡自行設定音色。
- 每條軌道單獨請求:一次請求返回一條軌道的
.mid;多軌請對每個軌道分別呼叫,或使用 Create UI 的批次打包下載。