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 HTTPPOST 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 thecallbackUrl 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
POSTto your endpoint. - Your endpoint must return a
2xxstatus 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 (acallbackUrl 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. A2xx
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.