Webhook 让您可以异步收到通知:AI 任务跑完,状态是 success 还是 error,都会推送给您指定的 HTTP 端点。通知遵循 Standard Webhooks 规范。
我们采用 HMAC-SHA256 签名方案的 webhook 密钥。密钥经 base64 编码,并加上 whsec_ 前缀,方便一眼认出。
webhook 密钥示例:
whsec_NDQzMzYxNzkzMzE0NjYyNDM6OTIxOTcwNDIxODQ
我们强烈建议使用 Standard Webhooks Library 的官方实现,签名校验的细节就不用您操心了。
用官方实现还能保证签名校验既安全又正确。
请先弄懂 webhook 密钥的构成,参见签名方案中的对称密钥部分。
给签名输入内容做签名时,请去掉 whsec_ 前缀,再把剩下的字符串做 base64 解码,得到密钥的真实字节,用它来做 HMAC-SHA256 哈希。
POST https://yourdomain.com/webhook-endpoint
Content-Type: application/json
webhook-id: msg_1eWPv9cWJCnEP99UJncmVJ6KjK_xVXRhZPe_eSGnRNbLlXEPjiG3gb3Usg9le3_4:1761112848
webhook-timestamp: 1761112900
webhook-signature: v1,vyVNWrjoZcBK1JXrFGkdDKK2slo5+Q5yfzpkHmqO5R0={
"created_at": 1761112848,
"data": {
"task_id": "1eWPv9cWJCnEP99UJncmVJ6KjK_xVXRhZPe_eSGnRNbLlXEPjiG3gb3Usg9le3_4",
"task_status": "success"
}
}这次 webhook 投递的唯一标识。 重试时这个值保持不变,可以拿来做幂等处理。
webhook 发出时的 Unix 时间戳(秒)。
'v1',一个逗号(,),再跟上 base64 编码后的 HMAC-SHA256 签名。
'v1' 表示签名方案的版本,目前只支持这一个版本。
base64 编码后的 HMAC-SHA256 签名,是用您的 webhook 密钥对签名输入内容签名后的结果。
签名输入的格式:
{webhook-id}.{webhook-timestamp}.{raw-minified-json-body}签名内容示例:
msg_1eWPv9cWJCnEP99UJncmVJ6KjK_xVXRhZPe_eSGnRNbLlXEPjiG3gb3Usg9le3_4:1761112848.1761112900.{"created_at":1761112848,"data":{"task_id":"1eWPv9cWJCnEP99UJncmVJ6KjK_xVXRhZPe_eSGnRNbLlXEPjiG3gb3Usg9le3_4","task_status":"success"}}Unix 时间戳(秒),表示任务完成的时间。
事件的具体内容。
| 字段 | 说明 |
|---|---|
task_id | 创建任务时返回的任务标识。用它查询任务的最终结果。 |
task_status | 任务完成状态。取值有:success、error。 |
在您的服务器上准备好一个 webhook 接收端点。 该端点要能接受
POST请求,并且可以通过 HTTPS 访问。在 API 控制台里创建一个 webhook。
跑一个 AI 任务,记下
task_id。处理 webhook 通知,用
task_id取回任务结果。
进入 API 控制台的 Webhook 管理页:
https://yce.makeupar.com/api-console/en/webhook/


最多可以同时配置 10 个 webhook 接收端点。
webhook 密钥用来校验 webhook-signature。 请务必妥善保存,切勿公开外泄。


我们建议使用 Standard Webhooks Library 的官方实现:
这样能保证签名校验既安全又正确。
您也可以用 Standard Webhooks Simulator 来测试或调试推送内容:
https://www.standardwebhooks.com/simulate
来看这个 webhook 请求示例:
POST https://yourdomain.com/webhook-endpoint
Content-Type: application/json
webhook-id: msg_1eWPv9cWJCnEP99UJncmVJ6KjK_xVXRhZPe_eSGnRNbLlXEPjiG3gb3Usg9le3_4:1761112848
webhook-timestamp: 1761112900
webhook-signature: v1,vyVNWrjoZcBK1JXrFGkdDKK2slo5+Q5yfzpkHmqO5R0=请求体:
{
"created_at": 1761112848,
"data": {
"task_id": "1eWPv9cWJCnEP99UJncmVJ6KjK_xVXRhZPe_eSGnRNbLlXEPjiG3gb3Usg9le3_4",
"task_status": "success"
}
}签名输入格式如下:
{webhook-id}.{webhook-timestamp}.{raw-minified-json-body}签名内容示例:
msg_1eWPv9cWJCnEP99UJncmVJ6KjK_xVXRhZPe_eSGnRNbLlXEPjiG3gb3Usg9le3_4:1761112848.1761112900.{"created_at":1761112848,"data":{"task_id":"1eWPv9cWJCnEP99UJncmVJ6KjK_xVXRhZPe_eSGnRNbLlXEPjiG3gb3Usg9le3_4","task_status":"success"}}用您的 webhook 密钥,对签名内容做 HMAC-SHA256 运算,再与收到的 webhook-signature 比对。 示例:
v1,vyVNWrjoZcBK1JXrFGkdDKK2slo5+Q5yfzpkHmqO5R0=