Zaloguj się

Webhooki

Podaj webhookUrl w zadaniu, a wyślemy podpisane zdarzenie po osiągnięciu stanu końcowego — job.done lub job.failed. Dostarczanie ponawiane z backoffem.

http
POST twój-url
X-ClipFoundry-Event: job.done
X-ClipFoundry-Signature: t=1718100000,v1=9f86d08...

{ "event": "job.done", "jobId": "…", "status": "done",
  "videoUrl": "https://cdn…/clip.mp4", "tokensCharged": 1200 }

Zweryfikuj podpis. Nagłówek to t=<unix>,v1=<hex>. Przelicz HMAC-SHA256 z łańcucha timestamp.rawBody swoim sekretem:

javascript
import { createHmac, timingSafeEqual } from 'node:crypto';

function verify(rawBody, header, secret) {
  const [t, v1] = header.split(',').map((p) => p.split('=')[1]);
  const signed = t + '.' + rawBody;
  const expected = createHmac('sha256', secret).update(signed).digest('hex');
  return timingSafeEqual(Buffer.from(v1), Buffer.from(expected));
}

Odpowiedz 2xx, aby potwierdzić; inny status (lub timeout) wyzwala ponowienie.