Skip to Content
WebhooksEreignistypen

Ereignistypen

Ignite-Webhooks unterstützen drei Ereignistypen für den Video-Lebenszyklus. Beim Anlegen eines Webhook-Abonnements kannst du beliebige Kombinationen davon wählen.

Verfügbare Ereignisse

video.created

Wird ausgelöst, wenn in deinem Workspace ein neues Video angelegt wird.

Wann es feuert:

  • Ein neues Video-Objekt wird über die API erstellt
  • Ein Video wird über die Admin-Oberfläche hochgeladen

Payload: Das vollständige Video-Objekt mit allen Anfangswerten. Der Video-status kann zu diesem Zeitpunkt noch NO_FILE oder PROCESSING sein.

video.updated

Wird ausgelöst, wenn eine Eigenschaft eines Videos geändert wird.

Wann es feuert:

  • Video-Metadaten werden aktualisiert (Titel, Beschreibung, Sichtbarkeit usw.)
  • Die Videoverarbeitung ist abgeschlossen (Status wechselt zu COMPLETE)
  • Textspuren oder Kapitel werden hinzugefügt oder geändert
  • Kategorien oder Tags werden geändert
  • Das Thumbnail wird aktualisiert

Payload: Das vollständige Video-Objekt mit allen aktuellen Werten nach der Änderung.

video.deleted

Wird ausgelöst, wenn ein Video aus deinem Workspace gelöscht wird.

Wann es feuert:

  • Ein Video wird über die API gelöscht
  • Ein Video wird über die Admin-Oberfläche gelöscht

Payload: Das vollständige Video-Objekt so, wie es vor dem Löschen existierte.

Ereignis-Payload-Struktur

Alle Ereignisse liefern das vollständige Video-Objekt als Anfragebody. Der Ereignistyp steht im Header X-Webhook-Event, nicht im Body.

Beispiel: video.created

Header:

POST /your-webhook-endpoint HTTP/1.1 Content-Type: application/json X-Webhook-Event: video.created X-Webhook-Signature: t=1705316400000,v1=abc123... X-Webhook-Delivery-Id: del_507f1f77bcf86cd799439011

Body:

{ "id": "507f1f77bcf86cd799439011", "status": "PROCESSING", "visibility": "private", "title": "My New Video", "description": "", "duration": 0, "workspace": "507f1f77bcf86cd799439000", "createdAt": "2024-01-15T10:30:00.000Z", "updatedAt": "2024-01-15T10:30:00.000Z" }

Beispiel: video.updated

Header:

POST /your-webhook-endpoint HTTP/1.1 Content-Type: application/json X-Webhook-Event: video.updated X-Webhook-Signature: t=1705316500000,v1=def456... X-Webhook-Delivery-Id: del_507f1f77bcf86cd799439012

Body:

{ "id": "507f1f77bcf86cd799439011", "status": "COMPLETE", "visibility": "public", "title": "My New Video", "description": "A great video about something", "duration": 120, "fps": 30, "orientation": "landscape", "src": { "thumbnails": [ { "name": "1080p", "width": 1920, "height": 1080, "formats": { "jpeg": { "url": "https://cdn.ignite.video/.../a1b2c3d4-1080p.jpg", "fileSize": 9180 }, "webp": { "url": "https://cdn.ignite.video/.../a1b2c3d4-1080p.webp", "fileSize": 4256 } } }, // ... additional resolutions ], "thumbnailUrl": "https://cdn.ignite.video/.../a1b2c3d4-1080p.jpg", "abr": { "resolution": "auto", "description": "Adaptive Bitrate Streaming (ABR)", "url": "https://cdn.ignite.video/.../master.m3u8", "maxWidth": 1920, "maxHeight": 1080 }, "hls": [...], "mp4": [...] }, "workspace": "507f1f77bcf86cd799439000", "createdAt": "2024-01-15T10:30:00.000Z", "updatedAt": "2024-01-15T10:35:00.000Z" }

Beispiel: video.deleted

Header:

POST /your-webhook-endpoint HTTP/1.1 Content-Type: application/json X-Webhook-Event: video.deleted X-Webhook-Signature: t=1705316600000,v1=ghi789... X-Webhook-Delivery-Id: del_507f1f77bcf86cd799439013

Body:

{ "id": "507f1f77bcf86cd799439011", "status": "COMPLETE", "visibility": "public", "title": "My New Video", "description": "A great video about something", "duration": 120, "workspace": "507f1f77bcf86cd799439000", "createdAt": "2024-01-15T10:30:00.000Z", "updatedAt": "2024-01-15T10:35:00.000Z" }

Best Practices

Alle abonnierten Ereignisse behandeln

Prüfe immer den Header X-Webhook-Event und behandle jeden Ereignistyp passend:

const eventType = request.headers['x-webhook-event']; switch(eventType) { case 'video.created': // Handle new video break; case 'video.updated': // Handle video update break; case 'video.deleted': // Handle video deletion break; default: console.log('Unknown event type:', eventType); }

Delivery-ID für Idempotenz nutzen

Der Header X-Webhook-Delivery-Id enthält eine eindeutige Kennung pro Webhook-Zustellung. Speichere verarbeitete Delivery-IDs, um Doppelverarbeitung bei Wiederholungen zu vermeiden:

const deliveryId = request.headers['x-webhook-delivery-id']; if (await hasBeenProcessed(deliveryId)) { return res.status(200).json({ received: true, duplicate: true }); } // Process the event... await markAsProcessed(deliveryId);