Webhooks

Receive render.completed and render.failed callbacks when jobs finish.

Pass webhookUrl (or webhook_url) when you create a render or batch. We deliver events with retries until your endpoint acknowledges them.

Payload

{
  "eventId": "…",
  "event": "render.completed",
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "done",
    "assetUrl": "https://…/api/v1/renders/…/asset?sig=…",
    "error": null
  }
}

Use eventId for idempotency. Failed jobs send event: "render.failed". assetUrl includes ?sig= so it works in <img> without an API key.

Signature verification

When webhook signing is enabled for your workspace, every delivery includes:

X-Render-Signature: sha256=<hex>

Compute HMAC-SHA256 of the raw JSON body with your shared secret and compare it to <hex>.

When to use webhooks

Prefer webhooks for server-to-server integrations. Use /wait for scripts without a public endpoint, and SSE for browser UIs.

On this page