Skip to main content
Detect answering machines on outbound calls with synchronous or asynchronous detection modes.

Introduction

Important: Not a Separate Endpoint. Machine detection is NOT a separate API endpoint. It is configured as parameters when making a call using POST https://api.vobiz.ai/api/v1/Account/{auth_id}/Call/. This page documents the machine detection parameters and callback format.
Machine detection allows you to identify when an answering machine picks up your outbound call instead of a human. You can configure Vobiz to either hang up automatically or continue the call when a machine is detected.
Machine detection is only supported on outbound calls initiated via the Make Call API. Set the machine_detection parameter to enable this feature.

Synchronous Machine Detection

When you set machine_detection=true or machine_detection=hangup when making a call, Vobiz analyzes the audio after the call is answered to determine if a machine answered.

Asynchronous Machine Detection

To act on a detected answering machine, set the machine_detection_url parameter when making an outbound call. Vobiz detects the answering machine in the background and invokes machine_detection_url with the results.
Benefit: Asynchronous detection allows your application to handle the call immediately while detection happens in the background, providing better user experience.

Tuning for AI voice agents

The AMD defaults describe a human dialer’s call: a person dials, stays quiet, hears “Hello?”, and starts talking. Every default is sized for that — a short greeting, a couple of sentences, a few seconds of analysis. An AI agent behaves differently. It starts its greeting the instant the leg is answered, so the agent and the answering machine are speaking at the same time through the whole analysis window. Two things go wrong:
  • The clean sample never forms. A human pickup is “Hello?” followed by a pause. If the agent is already talking, the callee answers over it, and the silence-then-greeting shape the classifier looks for is never there.
  • The window is too tight for a machine. A voicemail greeting runs 5–15 seconds. With a 5000 ms window and a 1500 ms greeting allowance, the decision is made from the first fragment of it — which is the part that sounds most like a person saying hello.
Both are fixed the same way: hold the agent silent until detection resolves, and widen the windows so the classifier gets an unambiguous sample.

What each knob does with an AI caller

Starting profiles

Pick by what you are optimising for, then validate against your own call recordings — answer behaviour varies by country, carrier, and audience.
The agent must not speak during the analysis window. These values are only worth setting if your application actually holds the first utterance until the result arrives. An agent that greets on answer puts its own speech into the window, and no combination of timers recovers from that.

Gating the agent on the result

Use asynchronous detection so the media path is live while detection runs, and gate the greeting on the callback:
1

Place the call with machine_detection_url set

Pass one of the profiles above to Make a Call. Detection runs in the background.
2

Answer with something that is not silence

Return XML that holds the leg without speaking words the classifier will pick up — a <Wait> sized to your machine_detection_time, or hold music. Silence on a fresh pickup makes people hang up or say “hello?” repeatedly.
3

Branch on the callback

Machine: false → connect the caller to the agent and let it greet. Machine: true → play your recorded message, or hang up.
4

Fall back if the callback is late

Set a deadline just past machine_detection_time. If nothing has arrived, treat the call as human — a live person on hold is the more expensive mistake.
Waiting for the beep instead. If your goal is to leave a message rather than classify the pickup, the <Wait> silence parameter is the better tool — it continues the flow the moment the greeting stops, instead of guessing at its length. Pair it with machine_detection for the branch and <Wait silence="true"> for the timing.

Working example: AMD before the agent speaks

A LiveKit agent that classifies the pickup before starting its conversation, and leaves a recorded message on voicemail.

Parameters Sent to machine_detection_url

When machine detection completes, Vobiz sends these parameters to your machine_detection_url:

Example Callback Response

JSON Sent to machine_detection_url