Webhook
Webhook
- Webhook 可以在 AI 生成任务完成后向你发送实时通知。你无需持续轮询 API,只需提供一个 Webhook URL,MuAPI 就会自动发送包含任务结果的 POST 请求。
使用 Webhook
- 在 API 请求中加入
webhook参数即可接入 Webhook。提供的 URL 必须是可访问的 HTTPS 端点,并且能够处理 POST 请求。
请求格式
- API 请求的结构保持不变,只需将 Webhook URL 作为查询参数加入即可。
1. cURL
curl --location --request POST 'https://muapi.ai/api/v1/endpoint/generate_wan_ai_effects?webhook=https://your.app.user/endpoints' \
--header "Content-Type: application/json" \
--header "x-api-key: {MUAPIAPP_API_KEY}" \
--data-raw '{"param1": "value1", "param2": "value2"}
2. Python
import requests
import json
url = "https://muapi.ai/api/v1/endpoint/generate_wan_ai_effects"
params = {
"webhook": "https://your.app.user/endpoints"
}
headers = {
"x-api-key": f"{MUAPIAPP_API_KEY}",
"Content-Type": "application/json"
}
payload = {
"param1": "value1",
"param2": "value2"
}
response = requests.post(url, headers=headers, params=params, json=payload)
print(response.json())
Webhook 负载
-
Webhook 触发后,会收到一个包含任务结果的 POST 请求。响应格式包括状态信息和相关元数据:
- completed:任务成功完成,可以获取结果。
- failed:任务遇到错误,具体信息位于
error字段。
-
Webhook 端点被调用时,会收到以下结构的 POST 请求:
{ "id": "<task_id>", "outputs": [ "<output_url>" // 仅在任务成功时存在 ], "urls": { "get": "https://api.muapi.ai/api/v1/predictions/<task_id>/result" }, "has_nsfw_contents": [ false ], "status": "completed", // 或 "failed" "created_at": "<created_at>", "error": "<error>", // 当 status 为 "failed" 时存在 "executionTime": "<time>", "timings": { "inference": "<time>" } }
最佳实践
- 使用 HTTPS: 始终保护你的 Webhook 端点。
- 实现重试逻辑: 确保端点能够优雅地处理临时问题。
- 验证请求: 增加校验机制,确认 Webhook 请求确实来自可信来源。
- 快速响应: 端点应尽快返回 2xx HTTP 状态码。
- 确保幂等性: 防止同一个 Webhook 被多次发送时重复处理。
错误处理
- 如果你的端点无法访问或返回错误,我们会使用指数退避最多重试三次发送。请确保端点具备足够的稳定性,能够处理预期的请求量。