Webhooks

Empfangen Sie ein HTTP-Ereignis auf Ihrer eigenen URL, anstatt die API abzufragen.

Einen Webhook erstellen

http
POST /v1/webhooks
json
{
  "url": "https://votre-app.exemple.com/webhooks/emini",
  "events": ["job.completed", "job.failed"]
}
json
{
  "webhook": { "id": "...", "url": "https://votre-app.exemple.com/webhooks/emini", "events": ["job.completed", "job.failed"], "status": "active" },
  "secret": "whsec_..."
}
secret wird nur einmal bei der Erstellung zurückgegeben. Bewahren Sie es auf, um die Signatur der Zustellungen zu überprüfen.

Verfügbare Ereignisse

  • job.completed — ein asynchroner Job (Video) wurde erfolgreich abgeschlossen
  • job.failed — ein asynchroner Job ist fehlgeschlagen
  • budget.alert — ein Budget-Warnschwellenwert des Projekts wurde überschritten

Die Signatur überprüfen

Jede Zustellung enthält einen Header X-Emini-Signature: ein HMAC-SHA256 des rohen Anfragetexts, berechnet mit Ihrem secret.

Node.jstypescript
import crypto from "node:crypto";

function isValid(rawBody: string, signature: string, secret: string): boolean {
  const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
}

Webhooks verwalten

bash
GET /v1/webhooks                              # lister
DELETE /v1/webhooks/{webhook_id}              # desactiver
GET /v1/webhooks/{webhook_id}/deliveries      # historique des livraisons

Alternative: Abfragen

Webhooks sind optional — GET /v1/jobs/{job_id} steht immer zur Verfügung, um den Status eines Jobs aktiv abzufragen (siehe den Leitfaden Video).