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/webhooks

List 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/webhooks

Create a new webhook endpoint

Beispielanfrage:

{
  "url": "https://your-server.com/webhook",
  "events": ["job.completed", "job.failed"],
  "secret_key": "your-secret-key"
}

Parameter:

ParameterTypErforderlichBeschreibung
urlstringErforderlichYour webhook endpoint URL
eventsstring[]ErforderlichEvents to subscribe to
secret_keystringOptionalSecret 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
KopfzeileBeschreibung
X-Nano-TimestampUnix timestamp of the request
X-Nano-SignatureHMAC-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;
}
Nano Banana Pro API