Setup
- Sign in to the Renderjuice platform and make sure to be in the right workspace.
- Navigate to Profile & Settings → Webhooks.
- Add the HTTPS endpoint you’d like us to call.
- Choose the event types you care about.
Available events
Renderjuice currently files webhooks for the following events:- Job completed (
onRenderComplete) – Fired when a render job finishes successfully - Job failed (
onRenderFail) – Planned, not yet emitted
Delivery format
- Method:
POST - Body: JSON
- Headers:
Content-Type: application/json, plus signing headers below - Timeout: 7s request timeout on our side; respond with
2xxquickly and offload heavy work
Payload schema (onRenderComplete)
Example payload
outputsis omitted when no frames are available.- Frame URLs are signed and expire; fetch or cache what you need when the webhook arrives.
Verifying webhook signatures
All webhook requests include cryptographic signatures so you can verify they originated from Renderjuice and haven’t been tampered with. You can view or regenerate your webhook secret in the dashboard under Profile & Settings → Webhooks.Signature headers
Each webhook request includes two headers:X-Renderjuice-Signature– HMAC-SHA256 signature of the request bodyX-Renderjuice-Timestamp– Unix timestamp (seconds since epoch) when the request was signed
Verification process
- Extract the signature and timestamp from the headers
- Construct the signed payload:
{timestamp}.{requestBody} - Compute HMAC-SHA256 using your webhook secret
- Compare the computed signature with the header signature
- Optionally verify the timestamp is recent (within 5 minutes) to prevent replay attacks
Verification examples
verify-signature.js
- Although not required, it is highly recommended to verify signatures before processing webhook payloads
- Use constant-time comparison (e.g.,
crypto.timingSafeEqualin Node.js,hmac.compare_digestin Python) to prevent timing attacks - Verify timestamps to prevent replay attacks (reject requests older than 5 minutes)
- Store webhook secrets securely (environment variables, secret managers)
Retry behavior and error handling
- Non-2xx HTTP responses are considered failures
- Request timeouts are considered failures
- Renderjuice will retry failed deliveries a limited number of times
- After repeated failures, webhooks may be automatically disabled
Best practices for webhook handlers
- Return 200 OK quickly – Acknowledge receipt immediately, then process asynchronously
- Make handlers idempotent – Use
eventIdordomainIdempotencyKeyto deduplicate events - Handle duplicate events – The same event may be delivered multiple times due to retries
- Log all events – Keep a record of received events for debugging and auditing
- Validate event structure – Verify required fields are present before processing
Next steps
Webhooks Guide
Learn use cases, patterns, and best practices
Combine with API
Use webhooks and API together for automation

