What gets delivered
When a video you queued via/v1/video/queue or /v1/video/motion-control
reaches a terminal state, we POST to your registered URL with the result.
Two events:
| Event | Sent when |
|---|---|
video.completed | Video finished generating, URL ready |
video.failed | Job timed out, failed upstream, or expired (credits already refunded) |
Setup
- Go to dolphy.chat/settings/api-keys
- Click your API key → “Configure webhook”
- Paste an
https://URL we should POST to - Copy the webhook secret (shown ONCE) — you’ll use it to verify signatures
Payload shape
Headers we send
| Header | Value |
|---|---|
Content-Type | application/json |
User-Agent | Dolphy-Webhook/1.0 |
X-Dolphy-Event | video.completed or video.failed |
X-Dolphy-Signature | t=<unix>,v1=<hex_hmac> |
X-Dolphy-Delivery-Id | Stable id for deduping retries |
X-Dolphy-Delivery-Attempt | 1, 2, or 3 |
Verifying signatures
Always verify before processing — don’t trust the request body otherwise. HMAC-SHA256 of<timestamp>.<rawBody> with your secret should match v1.
Retry behavior
If your endpoint returns non-2xx (or times out at 10s), we retry:- Attempt 1 — immediately
- Attempt 2 — after 5 seconds
- Attempt 3 — after 25 more seconds
webhookDeliveries so you can see the response body / status
in support if needed.
Idempotency
Sameid is used across all retries of a single event. Dedupe by
id in your handler — we may legitimately retry up to 3 times if
your endpoint had a hiccup, and we don’t want you to double-process.
Rotating the secret
Disabling webhooks
/v1/video/retrieve.