Product
Live MonitorAppointment BookingSMS AgentWeb AgentOutbound & BatchCall TransferPost-Call AnalysisCustom FunctionsWebhooks & AutomationsBring Your Own Carrier
Compare
OverviewNixflex vs RetellNixflex vs VapiNixflex vs BlandNixflex vs Synthflow
Developers
DocumentationQuickstartAPI ReferenceTwilio & TelnyxCal.comGoogle CalendarGoHighLevelSlackZapier & Make
More
PricingSecurityContact usGet started free
NixflexDevelopersVoice AI Webhooks
VOICE AI WEBHOOKS

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.

3 call eventsSigned deliveriesAutomatic retries
call_9f2ab41cclick an event
POSTyour-server.com/hooks
{
  "event": "call.started",
  "call_id": "call_9f2ab41c",
  "from": "+1 555 019 0148",
  "to": "+1 555 019 0114",
  "direction": "inbound",
  "agent_id": "agt_front_desk"
}
200 OK, delivered
In short

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.

call.startedcall.in_progresscall.endedtranscriptsummarysentimentoutcomedurationcall.startedcall.in_progresscall.endedtranscriptsummarysentimentoutcomeduration

HOW IT WORKS

How do webhooks work on a call?

1

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.

2

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.

3

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

EventFires whenKey fields
call.startedThe call connectscall_id, from, to, direction, agent_id
call.in_progressThe conversation is runningcall_id, status, duration_ms
call.endedThe call finishescall_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