---
title: "Render completed or failed"
method: POST
path: "renderEvent"
---

# Render completed or failed

`POST renderEvent` (webhook)

Registered endpoints receive signed events; per-request webhookUrl callbacks are unsigned. The body differs from GET /api/jobs/{id}. Acknowledge with 2xx within 10 seconds, then process asynchronously. Deduplicate by X-Zvid-Delivery-Id.

## Headers

- `X-Zvid-Event` 'render.completed' | 'render.failed', required
- `X-Zvid-Delivery-Id` string, required
- `X-Zvid-Timestamp` string, required
- `X-Zvid-Signature` string

## Payload

- WebhookEvent
  - `event` 'render.completed' | 'render.failed', required
  - `jobId` string, required
  - `timestamp` string, date-time, required
  - `test` boolean
  - `data` object, required
    - `status` 'completed' | 'failed', required
    - `type` 'video' | 'image'
    - `url` string, nullable
    - `thumbnailUrl` string, nullable
    - `duration` number, nullable
    - `size` number, nullable
    - `renderDuration` number, nullable
    - `creditsCharged` number, required
    - `templateId` string, nullable
    - `error` string

## Acknowledgement `200`

Receiver acknowledges the delivery

---

[API](https://skmtc.dev/zvid/apis/zvid-api.md) · [All operations](https://skmtc.dev/zvid/apis/zvid-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zvid/apis/zvid-api/revisions/8a665b293b37?raw)
