音乐 Webhook 回调
除了轮询查询音乐详情接口,你还可以在提交音乐生成任务时提供callback_url,在生成完成时自动接收通知。
工作原理
- 提交时附带回调 URL:在音乐生成请求中加入
callback_url参数 - 任务处理:PoYo AI 处理你的音乐生成任务
- 接收通知:当任务状态变为
finished或failed时,PoYo AI 会向你的回调 URL 发送 POST 请求 - 处理结果:你的服务器会收到完整的任务数据,包括生成的文件
回调请求
任务完成时,PoYo AI 会向你的回调 URL 发送 POST 请求:请求头
请求体结构
Webhook 请求体使用与音乐详情响应体相同的
task_id、status、files、created_time 和 error_message 字段,但不包含外层的 code 和 data 包装。Webhook 目前不包含仅在详情接口中返回的 credits_amount 和 progress 字段。files 数组的内容因模型而异。签名验证
PoYo 使用 HMAC-SHA256 对每个音乐 Webhook 请求签名。现有接收端可以忽略这些请求头,但生产系统应当验证签名。 获取你的 Webhook HMAC 密钥:task_id是回调请求体中顶层的task_idtimestamp是X-Webhook-Timestamp的值webhook_hmac_key由GET /api/api-keys/webhook-secret返回
Python 验证
files 数据响应字段
files 数组的内容取决于创建任务的模型。
JSON 字段详情
separate-vocals
separate_vocals 字段:
vocal_url- 提取出的人声音轨 URLinstrumental_url- 伴奏音轨 URL
upload-and-separate-vocals
vocal_removal 字段:
bass- 贝斯音轨 URLdrums- 鼓音轨 URLpiano- 钢琴音轨 URLguitar- 吉他音轨 URLvocals- 人声音轨 URLother- 其他音频元素 URL
stem-split
stem_split 字段:
backing_vocals_url- 和声 URLbass_url- 贝斯音轨 URLbrass_url- 铜管乐器 URLdrums_url- 鼓音轨 URLfx_url- 音效 URLguitar_url- 吉他音轨 URLkeyboard_url- 键盘音轨 URLpercussion_url- 打击乐音轨 URLstrings_url- 弦乐音轨 URLsynth_url- 合成器音轨 URLvocal_url- 主唱人声 URLwoodwinds_url- 木管乐器音轨 URLpiano_url- 钢琴音轨 URL
generate-music-cover
generate_cover 是包含封面图对象的 JSON 数组:
file_url- 生成的封面图 URLfile_type- 文件类型(例如image)
回调示例
音乐生成(generate-music、extend-music 等)
Suno Voice Generate
Suno Voice Validate 或 Regenerate
Suno Voice Check
MiniMax Music 2.6
带时间戳的歌词(get-timestamped-lyrics)
生成的歌词(generate-lyrics)
音乐风格增强(boost-music-style)
WAV 转换(convert-to-wav)
人声分离(separate-vocals)
上传并分离人声(upload-and-separate-vocals)
音轨分离(stem-split)
音乐封面图(generate-music-cover)
生成的 Persona(generate-persona)
音乐视频(create-music-video)
失败任务
要求
你的回调接口必须满足以下要求:- 仅支持 HTTPS:必须使用 HTTPS 协议(不支持 HTTP)
- URL 最大长度:2048 个字符
- 响应超时:必须在 30 秒内响应
- 成功响应:应返回 HTTP 200-299 状态码
- 禁止内网 IP:不能使用私有/内网 IP 地址(例如
192.168.x.x和10.x.x.x) - 公网可访问:必须能从互联网公开访问
重试策略
如果你的回调接口未响应或返回错误:- 重试次数:最多自动重试 5 次
- 重试间隔:指数退避,从约 60 秒开始,最长 10 分钟
- 最终失败:所有重试均失败后,不再继续重试