API 參考
音樂
POST
/v1/music/generationsGET
/v1/music/tasks/{task_id}GET
/v1/music/tasks/{task_id}/content面向歌曲與純音樂流程的非同步音樂生成。提交後立即回傳 task_id;隨後輪詢任務或接收 webhook 回呼,再從 /content 讀取成品音訊。
#請求參數
modelstring必填音樂模型 ID,見模型頁,例如 suno。
promptstring必填描述歌曲內容、情緒、編制或歌詞方向。
titlestring選填可選曲目標題;會轉發給支援該欄位的模型家族。
tagsstring | array選填可選風格或流派提示,如 cinematic、pop、ambient。
versionstring選填當供應商提供多個代際版本時,用於切換模型版本。
mvstring選填供應商特定的音樂模式選擇器;除非使用者真的需要顯式控制,否則建議留在伺服器端。
instrumentalboolean選填在模型支援時,生成不含人聲的純音樂輸出。
make_instrumentalboolean選填另一種供應商用於純音樂輸出的開關;部分供應商使用它而不是 instrumental。
continue_clip_idstring選填基於已有片段續寫或延長,而不是新開一首。
continue_atnumber選填續寫流程中的起始秒數位置。
webhook_urlstring選填任務進入終態後回呼的 HTTPS 網址。
webhook_secretstring選填設定後,回呼帶 X-Xiaoxiang-Signature: sha256=hex(HMAC-SHA256(body, secret))。
先從簡單版開始
對大多數產品來說,首版接入只用 prompt 就夠了。title、tags、version 以及續寫相關欄位都屬於進階控制項,只有業務明確需要時再補。
與其他媒體任務一致的非同步契約
音樂和圖片、影片任務遵循同一套 提交 → 輪詢或 webhook → /content 模式,因此後端通常用同一套任務執行器就能統一承接。
#相關錯誤碼
- 404 not_found路徑不存在、模型名稱不存在,或 task_id 已過期 / 不屬於目前帳號。
- 422 unprocessable_entity上游拒絕了閘道轉發的參數值(如不支援的尺寸或時長)。
- 401Bearer 權杖無效或缺失。這條路徑不帶 error.code,請依狀態碼判斷。
- 402 insufficient_user_quota錢包餘額不足以覆蓋預扣估算。
- 429金鑰級限流。回應主體為空,按 Retry-After 等待。若 429 帶有 insufficient_user_quota,那是每日消費上限,不是限流。
- 503 model_not_found模型名稱不存在,或目前沒有健康的通道可以提供服務。
#請求範例
# submit
curl https://www.aisplice.store/v1/music/generations \
-H "Authorization: Bearer sk-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "suno",
"prompt": "a warm cinematic piano theme",
"instrumental": true
}'
# poll every 5s
curl https://www.aisplice.store/v1/music/tasks/$TASK_ID -H "Authorization: Bearer sk-YOUR_KEY"
# fetch the finished track
curl -L https://www.aisplice.store/v1/music/tasks/$TASK_ID/content \
-H "Authorization: Bearer sk-YOUR_KEY" \
-o song.mp3#回應
response.json
// POST — submit accepted
{"task_id": "task_xxx", "status": "queued"}
// GET /v1/music/tasks/{task_id}
{
"task_id": "task_xxx",
"status": "in_progress",
"progress": "42%"
}
// GET /v1/music/tasks/{task_id}/content
{
"task_id": "task_xxx",
"status": "completed",
"metadata": {
"audio_url": "https://…",
"lyric": "…"
}
}還是沒解決?
把請求 ID 或錯誤訊息傳給我們,我們來查。