Webhooks
احصل على إشعارات فورية عند اكتمال المهام أو فشلها
نظرة عامة
Webhooks allow you to receive HTTP callbacks when your image or video generation tasks complete. Instead of polling for results, you can set up a webhook endpoint to receive automatic notifications.
الأحداث المتاحة
- job.completedTriggered when a task completes successfully
- job.failedTriggered when a task fails
نقاط نهاية API
GET
/api/v1/webhooksList all your webhook configurations
مثال على الرد:
{
"success": true,
"data": [
{
"id": 1,
"url": "https://your-server.com/webhook",
"events": ["job.completed", "job.failed"],
"status": "active"
}
]
}POST
/api/v1/webhooksCreate a new webhook endpoint
مثال للطلب:
{
"url": "https://your-server.com/webhook",
"events": ["job.completed", "job.failed"],
"secret_key": "your-secret-key"
}المُعاملات:
| معامل | النوع | مطلوب | وصف |
|---|---|---|---|
| url | string | مطلوب | Your webhook endpoint URL |
| events | string[] | مطلوب | Events to subscribe to |
| secret_key | string | اختياري | Secret for signature verification |
مثال على الرد:
{
"success": true,
"data": {
"id": 1,
"url": "https://your-server.com/webhook",
"events": ["job.completed", "job.failed"],
"status": "active"
}
}DELETE
/api/v1/webhooks/{id}Delete a webhook endpoint
مثال على الرد:
{
"success": true,
"data": { "id": 1 }
}حمولة Webhook
صيغة إشعارات الويب هوك المرسلة إلى نقطة النهاية الخاصة بك
| رأس الصفحة | وصف |
|---|---|
| X-Nano-Timestamp | Unix timestamp of the request |
| X-Nano-Signature | HMAC-SHA256 signature for verification |
مثال الحمولة:
{
"event": "job.completed",
"task_id": "task_xxx",
"task_type": "image",
"status": "completed",
"data": {
"url": "https://cdn.example.com/image.png",
"credits_charged": 6
},
"timestamp": "2024-12-23T10:00:00Z"
}التحقق من التوقيع
const crypto = require('crypto');
function verifySignature(payload, signature, secret, timestamp) {
const message = `${timestamp}.${JSON.stringify(payload)}`;
const expectedSig = crypto
.createHmac('sha256', secret)
.update(message)
.digest('hex');
return `v1=${expectedSig}` === signature;
}