必须正确配置HTTP接收端点并严格验证签名才能稳定获取Seedance回调结果;需部署可公网访问的POST接口,用bodyParser解析原始JSON,通过HMAC-SHA256比对X-Seedance-Signature头与本地签名(禁用request.json),再根据event_type区分video.ready/video.failed,提取data.video_id及data.result.url或data.error.message。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要从Seedance视频生成服务中稳定获取回调结果,必须正确配置接收端点并处理签名验证,否则会因校验失败被服务端拒绝回调。
配置HTTP服务接收回调请求
启动一个支持POST方法的HTTP服务,监听路径如 /seedance/callback,确保该路径可被公网访问(若部署在本地需用ngrok等工具透出)。
使用Node.js Express示例:创建server.js,调用app.post('/seedance/callback', handler)注册路由,【必须设置bodyParser中间件解析原始JSON体】,否则无法读取签名头和原始payload。
解析并验证回调签名
Seedance回调请求会在Header中携带X-Seedance-Signature字段,值为HMAC-SHA256签名(十六进制小写字符串),密钥为控制台配置的Webhook Secret。
方法一:Node.js原生实现
① 从req.headers['x-seedance-signature']提取签名字符串;
② 调用crypto.createHmac('sha256', secret).update(JSON.stringify(req.body), 'utf8').digest('hex')生成本地签名;
③ 使用crypto.timingSafeEqual(Buffer.from(localSig), Buffer.from(headerSig))比对,避免时序攻击。
方法二:Python Flask示例
直接读取request.get_data()获取原始字节流,用hmac.new(secret.encode(), data, hashlib.sha256).hexdigest()生成签名;【严禁用request.json或request.get_json()解析后再签名,会导致JSON键序变动或空格丢失而验签失败】。
解析回调事件类型与业务数据
验签通过后,解析JSON body中的event_type字段判断事件类型:video.ready表示生成成功,video.failed表示失败。
从data.video_id提取视频唯一标识,从data.result.url(成功时)或data.error.message(失败时)获取对应信息。
这一步操作起来很简单,直接按字段路径取值即可,但注意data是嵌套对象,部分字段可能为空,需做存在性判断。


















