KIE.AI
Chinese
  • English
  • Chinese
Chinese
  • English
  • Chinese
Support
Chinese
  • English
  • Chinese
MarketVeo3.1 APISuno API
4o Image APIFlux Kontext APIRunway APILuma APIFile Upload APICommon API
MarketVeo3.1 APISuno API
4o Image APIFlux Kontext APIRunway APILuma APIFile Upload APICommon API
  1. Vocal Removal
  • Suno API 快速开始
  • Music Generation
    • 生成音乐回调
    • 音乐扩展回调
    • 音频上传和翻唱回调
    • 音频上传和扩展回调
    • 添加伴奏回调
    • 添加人声回调
    • 音乐封面生成回调
    • 替换音乐分区回调
    • 生成音乐
      POST
    • 延长音乐
      POST
    • 上传并翻唱音乐
      POST
    • 上传并扩展音乐
      POST
    • 添加伴奏生成音乐
      POST
    • 添加人声生成音乐
      POST
    • 获取音乐任务详情
      GET
    • 获取带时间戳的歌词
      POST
    • 提升音乐风格
      POST
    • 替换音乐分区
      POST
    • 生成音乐封面
      POST
    • 获取音乐封面生成详情
      GET
    • 生成 Persona
      POST
  • Lyrics Generation
    • 生成歌词回调
    • 生成歌词
    • 获取歌词任务详情
  • WAV Conversion
    • 转换为WAV格式回调
    • 转换为WAV格式
    • 获取WAV转换详情
  • Vocal Removal
    • 音频分离回调
    • MIDI 生成回调
    • 从音频生成 MIDI
      POST
    • 获取 MIDI 生成详情
      GET
    • 人声和乐器分离
      POST
    • 获取人声和乐器分离详情
      GET
  • Music Video Generation
    • MP4生成完成回调
    • 创建音乐视频
    • 获取音乐视频详情
Chinese
  • English
  • Chinese
Support
Chinese
  • English
  • Chinese
MarketVeo3.1 APISuno API
4o Image APIFlux Kontext APIRunway APILuma APIFile Upload APICommon API
MarketVeo3.1 APISuno API
4o Image APIFlux Kontext APIRunway APILuma APIFile Upload APICommon API
  1. Vocal Removal

MIDI 生成回调

当从分离音频生成 MIDI 完成时,系统将调用此回调。
当您向 Suno API 提交 MIDI 生成任务时,可以使用 callBackUrl 参数设置回调 URL。系统将在任务完成时自动将结果推送到您指定的地址。

回调机制概述#

回调机制无需轮询 API 查询任务状态。系统将主动向您的服务器推送任务完成结果。
Webhook 安全性:为确保回调请求的真实性和完整性,我们强烈建议您实现 webhook 签名验证。请参阅我们的 Webhook 校验指南 了解详细实现步骤。

回调时机#

系统将在以下情况发送回调通知:
MIDI 生成任务成功完成
MIDI 生成任务失败
任务处理过程中发生错误

回调方法#

HTTP 方法: POST
Content Type: application/json
超时设置: 15 秒

回调请求格式#

当任务完成时,系统将向您的 callBackUrl 发送 POST 请求:
成功回调
失败回调
{
  "task_id": "5c79****be8e",
  "code": 200,
  "msg": "success",
  "data": {
    "state": "complete",
    "instruments": [
      {
        "name": "Drums",
        "notes": [
          {
            "pitch": 73,
            "start": "0.036458333333333336",
            "end": "0.18229166666666666",
            "velocity": 1
          },
          {
            "pitch": 61,
            "start": 0.046875,
            "end": "0.19270833333333334",
            "velocity": 1
          }
        ]
      }
    ]
  }
}

状态码说明#

code (integer, required)#

回调状态码,指示任务处理结果:
状态码说明
200成功 - MIDI 生成已成功完成
500内部错误 - 请重试或联系技术支持

msg (string, required)#

状态消息,提供详细的状态描述

task_id (string, required)#

任务 ID,与您提交任务时返回的 task_id 一致

data (object)#

MIDI 生成结果信息,成功时返回

成功响应字段#

data.state (string)#

处理状态。成功时值为 complete

data.instruments (array)#

检测到的乐器数组及其 MIDI 音符数据
乐器对象属性
name (string): 乐器名称(例如:"Drums"、"Electric Bass (finger)"、"Acoustic Grand Piano")
notes (array): 该乐器的 MIDI 音符数组
音符对象属性
pitch (integer): MIDI 音符编号(0-127)。中央 C = 60。MIDI 音符参考
start (number | string): 音符起始时间,从音频开头算起的秒数
end (number | string): 音符结束时间,从音频开头算起的秒数
velocity (number): 音符力度/强度(0-1 范围)。1 = 最大力度

回调接收示例#

以下是使用主流编程语言接收回调的示例代码:
Node.js
Python
PHP

最佳实践#

回调 URL 配置建议#

1.
使用 HTTPS: 确保回调 URL 使用 HTTPS 协议以保证数据传输安全
2.
验证来源: 在回调处理中验证请求来源的合法性
3.
幂等处理: 同一 task_id 可能收到多次回调,确保处理逻辑是幂等的
4.
快速响应: 回调处理应快速返回 200 状态码以避免超时
5.
异步处理: 复杂的业务逻辑(如 MIDI 文件转换)应异步处理
6.
处理缺失乐器: 不是所有乐器都会被检测到 - 优雅地处理空的或缺失的乐器数组
7.
存储原始数据: 保存完整的 JSON 响应以供未来参考和重新处理

重要提醒#

回调 URL 必须可从公网访问
服务器必须在 15 秒内响应,否则将被视为超时
如果连续 3 次重试失败,系统将停止发送回调
请确保回调处理逻辑的稳定性,避免因异常导致回调失败
MIDI 数据保留 14 天 - 如需长期保存请及时下载保存
检测到的乐器数量和类型取决于音频内容
音符时间(start/end)可能是字符串 or 数字 - 需要处理这两种类型

故障排查#

如果您没有收到回调通知,请检查以下内容:
网络连接问题
确认回调 URL 可从公网访问
检查防火墙设置,确保入站请求未被阻止
验证域名解析正确
服务器响应问题
确保服务器在 15 秒内返回 HTTP 200 状态码
检查服务器日志是否有错误消息
验证端点路径和 HTTP 方法正确
内容格式问题
确认收到的 POST 请求体为 JSON 格式
检查 Content-Type 是否为 application/json
验证 JSON 解析正确
处理时间值的字符串和数字两种类型
数据处理问题
某些乐器可能有空的音符数组
并非所有音频都会检测到所有乐器类型
验证原始人声分离使用的是 split_stem 类型(而非 separate_vocal)
检查源 taskId 是否来自成功完成的分离任务

替代方案#

如果您无法使用回调机制,也可以使用轮询方式:
轮询查询结果
使用获取 MIDI 生成详情接口定期查询任务状态。我们建议每 10-30 秒查询一次。
Previous
音频分离回调
Next
从音频生成 MIDI
Built with