Skip to main content
Instead of polling for status, webhooks push events to your server as they happen.

Webhook Delivery Flow

This sequence diagram shows the full lifecycle of a typical content generation integration using webhooks:

How It Works

1

Register a webhook URL

Select which events to subscribe to when creating the webhook.
2

Receive events

When an event occurs, Hrizn sends an HTTP POST to your URL with a JSON payload.
3

Verify the signature

Your server verifies the HMAC-SHA256 signature in the X-Webhook-Signature header.
4

Process and acknowledge

Process the payload and return a 2xx response. If delivery fails, Hrizn retries with exponential backoff.

Setting Up Webhooks

Via the Dashboard

Go to the API tab in the Dealership Manager, switch to the Webhooks section, and click Add Webhook.

Via the API

The response includes a secret for verifying signatures.
Store the signing secret in a secrets manager or environment variable. It is returned only once at creation time and cannot be retrieved later.

Event Payload

Every webhook delivery sends a JSON payload:

Verifying Signatures

Every delivery includes an X-Webhook-Signature header with an HMAC-SHA256 signature of the request body:

Available Events

Content Progress Events

The content.progress event provides real-time visibility into content generation stages. Unlike terminal events (content.completed, content.failed), progress events fire at meaningful stage transitions — typically 4-6 events per content item.

Stages

Example Payload

Subscribers must explicitly include content.progress in their events array when creating or updating a webhook subscription. Existing subscribers only receiving content.completed will not receive progress events unless they update their subscription.

Retry Policy

If your endpoint returns a non-2xx status or times out (15s), Hrizn retries with exponential backoff:
  • Attempt 1: Immediate
  • Attempt 2: ~1 minute later
  • Attempt 3: ~5 minutes later
  • Attempt 4: ~30 minutes later
  • Attempt 5: ~2 hours later
After 5 failed attempts, the delivery is sent to a dead letter queue.
After 10 consecutive failures across different events, the webhook subscription is automatically disabled. You’ll need to re-enable it from the dashboard or via PATCH /webhooks/{id}.

Testing

Send a test ping to verify your webhook URL:
This sends a test.ping event to your URL and returns the response status.
Use ngrok or a similar tunneling tool to expose a local development server for testing webhooks without deploying.

Managing Webhooks

Last modified on June 30, 2026