快速开始
四步跑通第一首生成。
第 1 步 · 获取 API Key
联系站点管理员获取,或在密钥管理页自助创建。Key 形如 kemo_xxxxxxxx。
密钥安全:Key 等同于账户的支付权限,切勿放在前端代码或公开仓库。 泄露后请立即吊销并重新生成。
第 2 步 · 设置基础地址与认证
BASE="https://kemo.net.cn/functions/v1/kemo-music-api"
KEY="kemo_你的密钥"
所有需要认证的接口都通过请求头携带 Bearer Token:
Authorization: Bearer kemo_你的密钥
第 3 步 · 生成你的第一首歌
curl -X POST "$BASE/v1/music/generate" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "一首宁静的原声吉他旋律配柔和人声,民谣风格",
"lyrics": "[Verse]\n晚风穿过旧巷口\n[Chorus]\n灯火还亮着\n"
}'
响应(任务已创建,生成在后台进行):
{
"data": {
"task_id": "41d04fb6-969f-4acc-8f65-38092c79ef2f",
"status": "PENDING",
"backend": "minimax",
"model": "music-3.0",
"cost": { "credits": 5 },
"poll": "/v1/music/tasks/41d04fb6-969f-4acc-8f65-38092c79ef2f",
"created_at": "2026-10-23T02:10:23.993Z"
}
}
backend 是实际命中的引擎。如果第一个引擎限流或余额不足,
网关会自动降级到下一个——这个过程对客户端完全透明,你只会看到最终成功的那个引擎名。
第 4 步 · 查询结果
curl "$BASE/v1/music/tasks/41d04fb6-969f-4acc-8f65-38092c79ef2f" \
-H "Authorization: Bearer $KEY"
生成中:
{
"data": {
"task_id": "41d04fb6-...",
"status": "PENDING",
"result": { "audio_urls": [], "duration": null, "title": null, "cover_url": null }
}
}
完成:
{
"data": {
"task_id": "41d04fb6-...",
"status": "SUCCESS",
"backend": "minimax",
"result": {
"audio_urls": ["https://kemo.net.cn/storage/v1/object/public/audio/xxx.mp3"],
"duration": 180,
"title": "晚风穿过旧巷口",
"cover_url": "https://kemo.net.cn/storage/v1/object/public/audio/xxx.jpg"
},
"error": null,
"cost": { "credits": 5 }
}
}
轮询建议
| 阶段 | 建议间隔 | 说明 |
|---|---|---|
| 0 ~ 30 秒 | 每 2 秒 | 短音频通常在此区间完成 |
| 30 秒 ~ 2 分钟 | 每 5 秒 | 避免高频轮询触发限流 |
| 超过 5 分钟 | 每 15 秒 | 可视为异常,联系管理员 |
任务终态为 SUCCESS 或 FAILED 后请停止轮询。
FAILED 时 error 字段会给出完整原因。
其他语言示例
Node.js
const r = await fetch(`${BASE}/v1/music/generate`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
prompt: '一首宁静的原声吉他旋律配柔和人声,民谣风格',
lyrics: '[Verse]\n晚风穿过旧巷口\n'
})
});
const { data } = await r.json();
console.log('任务ID:', data.task_id);
Python
import requests, time
r = requests.post(
f"{BASE}/v1/music/generate",
headers={"Authorization": f"Bearer {KEY}"},
json={"prompt": "一首宁静的原声吉他旋律", "lyrics": "[Verse]\n晚风穿过旧巷口\n"},
)
task = r.json()["data"]["task_id"]
while True:
s = requests.get(f"{BASE}/v1/music/tasks/{task}",
headers={"Authorization": f"Bearer {KEY}"}).json()["data"]
if s["status"] == "SUCCESS":
print("音频:", s["result"]["audio_urls"][0]); break
if s["status"] == "FAILED":
print("失败:", s["error"]); break
time.sleep(3)
PHP
$ch = curl_init($BASE . '/v1/music/generate');
curl_setopt($ch, CURLOPT_URL, $BASE . '/v1/music/generate');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'prompt' => '一首宁静的原声吉他旋律',
'lyrics' => '[Verse]\n晚风穿过旧巷口\n',
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Authorization: Bearer ' . $KEY,
'Content-Type: application/json',
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch), true);
echo '任务ID: ' . $result['data']['task_id'];
kemo Music API · 聚合多引擎音乐生成 · 文档随实现同步更新
最后更新:2026-10-23 · 有问题请联系站点管理员
最后更新:2026-10-23 · 有问题请联系站点管理员