Skip to main content

Overview

Webhooks let your backend receive push notifications when key actions happen on your account — a call ends, a dubbing job completes, a workflow runs, and so on. Indigenius sends an HTTP POST to your configured endpoint with a JSON payload describing the event. Configure your webhook URL when creating an API key (callbackUrl) or when creating a workflow (webhook.url).

Configuring your webhook URL

Call lifecycle events are delivered to the callbackUrl configured on the API key that placed the call (POST /v1/webhooks or the callbackUrl field when creating a key). If that key has no callbackUrl configured, no delivery is attempted — the call still proceeds normally, it just won’t trigger webhooks.

Verifying the signature

Every delivery includes these headers: Recompute the signature on your end and compare it (constant-time) against X-Indigenius-Signature before trusting the payload.

Delivery model

  • Events are delivered via HTTP POST to your endpoint.
  • Your endpoint must return a 2xx status code within 10 seconds. If it times out or returns a non-2xx, delivery is retried with backoff.
  • Process events asynchronously — do your actual work in a background job, not in the request handler.

Event payload shape

Every webhook delivery shares the same outer envelope:

Event types

Call lifecycle events

Fired only for calls placed through a developer API key (a callbackUrl must also be configured on that key — see Configuring your webhook URL). Calls placed from the dashboard, or scheduled/batch calls, do not fire these. Phone calls can fire all of the events below. Web/widget calls only fire call.initiated, call.completed, and call.failed.

Webhook delivery outcome

Every delivery attempt — whether the customer endpoint accepted it or not — is logged and visible in Webhook History. A 2xx response is a Webhook Received outcome; anything else (including a timeout) is a Webhook Failed outcome, shown alongside the HTTP response code. These outcomes are not delivered as separate webhook calls — they describe the delivery of the event above, in the same history record.

workflow.completed

Fired when a workflow execution finishes successfully.

dubbing.completed

Fired when a dubbing job finishes and media is ready to download.

dubbing.failed

Fired when a dubbing job fails during processing.

tts.completed

Fired when a text-to-speech job finishes.

Receiver checklist

1

Use HTTPS

Indigenius only delivers to https:// endpoints. Plain HTTP URLs are rejected.
2

Respond quickly

Return 200 OK (or any 2xx) as soon as you receive and validate the payload. Do not block the response while processing.
3

Make handlers idempotent

Deliveries can be retried. Always check whether you have already processed an event before acting on it — use data.callId or data.jobId as your deduplication key.
4

Log event IDs

Log the event type, timestamp, and relevant IDs on every delivery. This makes it easy to cross-reference against Webhook History.

Example receiver (Node/Express)


Retry behaviour

If your endpoint returns a non-2xx status or times out, Indigenius retries delivery with exponential backoff. You can inspect all delivery attempts — successful and failed — in Webhook History.