Webhooks
Erhalten Sie Echtzeit-Benachrichtigungen, wenn Aufgaben abgeschlossen sind oder fehlschlagen.
Übersicht
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.
Verfügbare Veranstaltungen
- job.completedTriggered when a task completes successfully
- job.failedTriggered when a task fails
API-Endpunkte
GET
/api/v1/webhooksList all your webhook configurations
Antwortbeispiel:
{
"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
Beispielanfrage:
{
"url": "https://your-server.com/webhook",
"events": ["job.completed", "job.failed"],
"secret_key": "your-secret-key"
}Parameter:
| Parameter | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| url | string | Erforderlich | Your webhook endpoint URL |
| events | string[] | Erforderlich | Events to subscribe to |
| secret_key | string | Optional | Secret for signature verification |
Antwortbeispiel:
{
"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
Antwortbeispiel:
{
"success": true,
"data": { "id": 1 }
}Webhook-Payload
Format der Webhook-Benachrichtigungen, die an Ihren Endpunkt gesendet werden
| Kopfzeile | Beschreibung |
|---|---|
| X-Nano-Timestamp | Unix timestamp of the request |
| X-Nano-Signature | HMAC-SHA256 signature for verification |
Beispiel-Nutzlast:
{
"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"
}Signaturprüfung
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;
}