Lips / API v1
Webhooks
Submit a video and audio. Lips processes your render and notifies your webhook when it’s ready.
Include a public HTTPS webhook_url in your render request. Lips sends a signed POST for render completion, failure or cancellation. Inspect per-engine results even when the overall render has finished.
Lips-Event-ID: <event-id>
Lips-Delivery-ID: <delivery-id>
Lips-Signature: t=<unix-seconds>,v1=<hex-HMAC-SHA256>Obtain your customer webhook signing secret from an administrator. It is a separate secret from the API key. Decode its hexadecimal value to bytes and verify HMAC-SHA256 over the exact bytes of <timestamp>.<delivery_id>.<raw body>. Compare signatures in constant time and reject timestamps more than five minutes away.
Only after verification, parse the event and deduplicate its id. The event has id, type, created_at and data; data.id identifies your render. Return a successful HTTP response promptly and process the result asynchronously.
GET /v1/renders/<data.id>Signed URLs expire after 15 minutes. Fetching the render produces fresh URLs. Webhook delivery never restarts rendering: Lips retries failed deliveries up to ten times within 24 hours. Each attempt gets a fresh signature timestamp. Redirects are not followed.
If needed, inspect delivery state with GET /v1/webhooks/{event_id}, or fetch your saved render ID as a recovery path.