Stop polling.
The call comes to you.
Every call fires events at your server as they happen, ending with the transcript, summary and sentiment in one POST. Deliveries are signed, retried when your endpoint is unreachable, and logged so you can see exactly what was sent.
{
"event": "call.started",
"call_id": "call_9f2ab41c",
"from": "+1 555 019 0148",
"to": "+1 555 019 0114",
"direction": "inbound",
"agent_id": "agt_front_desk"
}A voice AI webhook is an HTTP POST that Nixflex sends to a URL you own the instant something happens on a call. Nixflex fires three of them, call.started, call.in_progress and call.ended, and the last one carries the full transcript, summary, sentiment and outcome, so your product reacts to calls without ever polling for them.
HOW IT WORKS
How do webhooks work on a call?
Point us at a URL
Set a webhook URL on the number, or two of them if you want the same events delivered to a second system. No polling loop, no scheduled job to maintain.
Events fire as they happen
The moment a call connects, progresses and finishes, we POST a JSON event to your endpoint. The ended event carries the transcript, summary, sentiment and outcome.
You return 200
Acknowledge fast and do the real work off a queue. If your endpoint is down or slow, delivery is retried automatically and every attempt is logged in your dashboard.
EVENT REFERENCE
Which events fire, and what they carry
| Event | Fires when | Key fields |
|---|---|---|
call.started | The call connects | call_id, from, to, direction, agent_id |
call.in_progress | The conversation is running | call_id, status, duration_ms |
call.ended | The call finishes | call_id, duration_ms, outcome, summary, sentiment, transcript |
Prefer to pull rather than be pushed? The same call records are readable from GET /v1/calls whenever you want them.
DELIVERY YOU CAN TRUST
What makes the delivery reliable?
Retried, not dropped
A failed delivery is attempted again rather than lost. If your server is redeploying when a call ends, the event still arrives, and every attempt is recorded so nothing disappears quietly.
Signed so you can verify
A webhook URL has to be public, which means anyone who finds it can post to it. Deliveries are signed so your handler can reject anything that did not come from us before it touches your database.
Two URLs per number
Send the same events to your product and a workflow tool at once.
Full delivery log
See what was sent, what came back, and when, in the dashboard.
Booking events too
Bookings made over text fire their own event to the same endpoint.
Straight into automation
Point a URL at Zapier or Make and the event becomes a workflow.
THE HANDLER PATTERN THAT SURVIVES PRODUCTION
Acknowledge fast, work later.
The endpoint itself should do almost nothing: verify the signature, return 200, and push the event onto a queue. Everything heavy happens in a worker. That single habit keeps you inside the acknowledgement window, makes retries harmless, and lets you scale processing without touching the part that receives. Pair it with deduplication on the call id and a repeat delivery becomes a no-op instead of a double booking.
QUESTIONS
Webhook questions, answered
What is a voice AI webhook?+
A webhook is an HTTP POST that Nixflex sends to a URL you own the moment something happens on a call. Instead of your server asking whether a call has finished, the event arrives on its own with the data attached, which is why webhooks replace polling entirely.
Which webhook events does Nixflex send?+
Three call events: call.started when the call connects, call.in_progress while the conversation runs, and call.ended when it finishes. The ended event is the substantial one, carrying the transcript, a summary, a sentiment score, the outcome and the duration.
What is inside the payload?+
Each event is JSON with the event name and the call id at the top level, plus the data for that moment. On call.ended you receive the full transcript, the summary, the sentiment, the outcome and how long the call lasted, so your systems can act without a second API request.
What happens if my endpoint is down?+
Delivery is retried automatically rather than dropped on the first failure, and every attempt is recorded in your dashboard logs so you can see exactly what was sent and what came back. Return a 2xx quickly to acknowledge, then do the heavy work off a queue.
How do I know a webhook really came from Nixflex?+
Deliveries are signed, so your handler can verify a request before trusting it. This matters because a webhook endpoint has to be publicly reachable, and without verification anyone who discovers the URL could post fake events into your systems.
How do I avoid processing the same event twice?+
Make your handler idempotent and deduplicate on the call id together with the event name. Any system that retries can deliver the same event more than once, so treating a repeat as a no-op is the standard defence rather than an edge case.
Can one number send events to two places?+
Yes. A number can carry two webhook URLs, so the same events reach two systems at once. That is useful when your own product needs the data and a workflow tool such as Zapier or Make needs it as well.
Do webhooks cost extra?+
No. Webhook delivery is included; you pay the flat $0.08 per minute of voice and nothing per event. There is no separate events charge and no SDK to install to receive them.
Wire up your first webhook today.
Point a URL at your server and the next call reports itself, transcript and all.
Last updated August 2026