nomoVM
Pricing

Twilio AMD pricing: what answering machine detection really costs

Twilio AMD pricing looks small on the price list: a fraction of a cent per answered call. At call center volume it adds up fast, and it only covers calls you place through Twilio. Here is what you pay, how the feature works, what it costs at real monthly volumes, and what to use if your dialer runs on its own trunks.

Chart comparing monthly Twilio answering machine detection fees with a flat nomoVM plan at several call volumes

Twilio AMD pricing at a glance

As of November 2026, Twilio's public price list shows answering machine detection at $0.0075 per answered call. Twilio's US outbound list price for voice was $0.014 per minute at the same time. Prices and discounts change, so check Twilio's current pricing page before you put these numbers into a budget.

Two facts matter more than the headline number:

  • The AMD fee comes on top of call minutes. Detection is not part of the per-minute rate. Every answered call that runs detection carries its own charge, in addition to whatever the call itself costs.
  • It only works on calls placed through Twilio. Twilio AMD is a setting on calls you create with Twilio's API. A VICIdial or Asterisk server dialing over your own SIP trunks can't switch it on.

Three quarters of a cent sounds like nothing. Written per 1,000 calls it is $7.50, and per million answered calls it is $7,500 a month for the detection step alone. For an outbound center that answers hundreds of thousands of calls a week, that is a real line item.

How Twilio answering machine detection works

Twilio's AMD is controlled by a parameter when you create an outbound call through its API.

The MachineDetection parameter

You add MachineDetection to the call request with one of two values:

  • Enable: Twilio reports who answered as soon as it has decided.
  • DetectMessageEnd: Twilio waits for the end of a voicemail greeting before reporting, which is the mode you use when you want to leave a message after the greeting.

Detection can also run asynchronously (AsyncAmd). In that mode the call goes ahead while detection runs, and your application receives the result separately and decides what to do.

The AnsweredBy result

The verdict arrives in a field called AnsweredBy. These are the values your application has to handle:

AnsweredBy valueWhat it tells you
humanA live person answered
machine_startA machine answered (reported at the start of the greeting)
machine_end_beepA machine answered and the greeting ended with a beep
machine_end_silenceA machine answered and the greeting ended in silence
machine_end_otherA machine answered and the greeting ended some other way
faxA fax machine answered
unknownTwilio could not decide

Your code decides what each value means for routing. That is flexible, but it is also work: someone has to write, test and maintain the logic that sends human to an agent, drops a message on machine_end_beep and decides what to do with unknown.

On accuracy, Twilio's own marketing claims 95%+. When you compare any AMD, ask for two numbers, not one: how many live people reach agents, and how many calls sent to agents are actually live people. We publish both for nomoVM on our accuracy page.

Monthly cost examples at real volumes

The table below uses Twilio's November 2026 list price of $0.0075 per answered call. It shows the AMD fee only. Call minutes are extra in every column, including nomoVM's, because nomoVM doesn't carry your calls: you keep paying your own carrier as you do today.

Answered calls a monthTwilio AMD feenomoVM plannomoVM cost
100,000$750Starter$99
250,000$1,875Starter$99
1,000,000$7,500Starter$99
3,000,000$22,500Growth$199
10,000,000$75,000Scale$499

The Twilio column is simple arithmetic: answered calls multiplied by $0.0075. It grows in a straight line with your volume at list price; if you negotiate volume pricing with Twilio, use your own rate instead.

Adding the minutes back in

To see the full Twilio bill, add the minutes. Take a hypothetical center that answers 1,000,000 calls a month and, for the sake of the example, assume those calls bill an average of 1.5 minutes each at the $0.014 US list rate:

  • Minutes: 1,500,000 × $0.014 = $21,000
  • AMD: 1,000,000 × $0.0075 = $7,500
  • Total: $28,500, of which detection is about a quarter

Your own call length, unanswered attempts and negotiated rates will move these numbers. The point is the shape: on Twilio, detection is a meaningful share of the voice bill, not a rounding error.

Costs that don't show on the price list

The per-call fee is the visible part. These are the costs that show up later.

  • You pay per answered call, not per right answer. An unknown verdict, or a live person judged to be a machine, costs the same as a correct one.
  • Your traffic has to live on Twilio. To use the feature you place calls through Twilio's API. If your carriers, rates and caller ID setup are elsewhere, using Twilio AMD means moving them.
  • Engineering time. Handling seven AnsweredBy values, async callbacks and edge cases is code you own. A dialer like VICIdial expects to route on a simple status inside its dialplan instead.
  • Lost conversations. Any AMD that hangs up on live people costs you leads. That cost is often larger than the fee itself; see what AMD false positives really cost.
  • Dead air. The longer detection listens before a person reaches an agent, the more silence the person hears. That hurts contact rates and can push abandoned calls up. Our dead air guide explains why.

When Twilio AMD makes sense

Twilio AMD is a reasonable choice in some setups, and it is fair to say so:

  • Your application already places calls through Twilio's API, for example a custom notification app or a voice agent built on Twilio.
  • Your volume is low enough that the per-call fee stays small.
  • You have developers who will build and maintain the routing logic around AnsweredBy.
  • You want one vendor for carrier, call control and detection, and accept the per-call price for that convenience.

It makes much less sense if you run VICIdial, GoAutoDial or another Asterisk dialer on your own trunks. In that case Twilio AMD isn't available to you without rebuilding how you place calls. We compare the two approaches side by side on our Twilio AMD alternative page.

The alternative for VICIdial and Asterisk dialers

nomoVM is hosted AI answering machine detection for dialers you already run. Your dialer streams the first seconds of each answered call over an encrypted WebSocket and gets one verdict back. Your carrier, routing and agents stay exactly as they are, and it works with any SIP carrier because nomoVM listens to audio the dialer already has.

There is no additional infrastructure: no new servers, no new hardware and no carrier change. It is one script on the dialer you already run, and setup takes about 10 minutes.

What setup looks like on VICIdial

  1. Install the client

    Copy nomovm.agi.py to /var/lib/asterisk/agi-bin/ and run chmod 755 on it. It needs Python 3.6 or newer and only the standard library; ViciBox 11 and 12 already have Python 3.

  2. Test the connection

    Run python3 nomovm.agi.py --test wss://amd.nomovm.com/ YOUR_KEY. It should print AMDSTATUS=MACHINE AMDCAUSE=SILENCE in about 2 seconds.

  3. Add extension 8370

    Copy VICIdial's 8369 AMD extension as 8370 with the nomoVM line added:

    exten => 8370,1,AGI(agi://127.0.0.1:4577/call_log)
    exten => 8370,n,EAGI(nomovm.agi.py,wss://amd.nomovm.com/,YOUR_KEY,4500)
    exten => 8370,n,GotoIf($["${AMDSTATUS}" = "FALLBACK"]?native)
    exten => 8370,n(vdamd),AGI(VD_amd.agi,${EXTEN})
    exten => 8370,n,AGI(agi-VDAD_ALL_outbound.agi,NORMAL-----LB-----${CONNECTEDLINE(name)})
    exten => 8370,n,Hangup()
    exten => 8370,n(native),AMD(2000,2000,1000,5000,120,50,4,256)
    exten => 8370,n,Goto(vdamd)
  4. Switch one campaign

    Change the campaign's Routing Extension from 8369 to 8370. To roll back, set it back to 8369.

The full walkthrough is in our VICIdial AMD setup guide, and the VICIdial AMD page covers how it fits with VICIdial's existing AMD routing.

What you get back

Most calls are decided about 2 seconds after answer; only unclear calls listen up to 3.2 seconds. AMDSTATUS comes back as HUMAN, MACHINE or FALLBACK, and AMDCAUSE says why (for example SCREENING for call screening assistants, TONE for beeps and fax, BUSY for busy or reorder). If anything goes wrong after streaming starts, the call is treated as a machine, so only a confirmed person reaches an agent. If the service can't be used at all, you get FALLBACK before any audio is used, Asterisk's own AMD() handles that call, and it is never billed.

What it costs

Plans are flat: Free gives you 30,000 calls a month with no card and a hard limit, Starter is $99 for 1,000,000 calls, Growth $199 for 3,000,000 and Scale $499 for 10,000,000. Extra calls on paid plans are $0.0002 each. One billable call is one verdict on an answered call, with no per-server or per-agent fees. Details are on the pricing page, and the full answering machine detection cost comparison puts Twilio, Telnyx, Asterisk AMD() and nomoVM in one table.

Next steps

If your calls already run through Twilio's API, price Twilio AMD at your real volume using the table above and Twilio's current pricing page. If your calls run through VICIdial or Asterisk on your own trunks, try nomoVM on one campaign: create a free account, follow the setup guide, and compare a week of results against your current AMD.

Frequently asked questions

How much does Twilio AMD cost?

Twilio's public price list in November 2026 shows answering machine detection at $0.0075 per answered call. That is $7.50 per 1,000 answered calls, or $7,500 per million. Prices change, so check Twilio's current pricing page.

Is Twilio's AMD fee included in the per-minute call price?

No. The AMD fee is charged on top of the normal call charges. Twilio's US outbound list price was $0.014 per minute in November 2026, so you pay for the minutes and for detection separately.

Can I use Twilio AMD with VICIdial on my own SIP trunk?

No. Twilio answering machine detection is a parameter on calls you create through Twilio's API, so it only works on calls placed through Twilio. If VICIdial or Asterisk places calls over your own trunks, you need detection that runs on your dialer, such as nomoVM.

What does AnsweredBy unknown mean in Twilio?

It means Twilio could not decide who answered the call. Your application has to choose what to do with those calls, for example send them to an agent or treat them as machines. Count how often you get it, because each one still uses an answered-call AMD charge.

How does nomoVM pricing compare with Twilio AMD?

nomoVM uses monthly plans: Starter is $99 for 1,000,000 calls, Growth $199 for 3,000,000 and Scale $499 for 10,000,000, then $0.0002 per extra call. At 1 million answered calls a month that is $99 against $7,500 in Twilio AMD fees, with your carrier minutes paid separately in both cases.

Does nomoVM charge for calls when the service is unavailable?

No. If the key is wrong, the plan limit is reached or the service can't be reached, nomoVM returns FALLBACK before any audio is used. Your dialplan then runs Asterisk's own AMD() for that call, and fallback calls are never billed.

Stop sending voicemail to your agents

30,000 calls a month free. No card, no setup fee. Your dialer falls back to Asterisk AMD() on its own if anything goes wrong.