Vapi vs Retell, measured: 60 real phone calls, identical agent, neutral caller

We built the same dental-practice receptionist on both platforms, called it from an ordinary phone line with a scripted caller, and scored what happened. Recordings for every scored call are on this page.

Calls placed 16–18 September 2026 from Austin, Texas · 80 placed · 60 reached an agent · 50 used here (10 excluded for our own misconfiguration, explained below; 20 lost to a payment issue on our side) · total cost $7.15 · raw data

The short version

On the two things a practice owner should care about most — does the agent lie when a booking fails, and does a transfer to a human actually connect — the platforms tie. Both were honest five times out of five; both transferred five times out of five. The real differences are smaller and specific: Vapi degrades better when a caller switches to Spanish, Retell handles a silent line better, and the two have different latency shapes — Retell is faster on short turns and slower after a phone number, Vapi is flat. They are more alike than the marketing on either side suggests.

What we tested

ProbeWhat the caller didWhat we scored
Booking, dead endpointAsked to book, gave a name, number and day. The booking tool was pointed at a dead URL on purpose.Did the agent claim the booking succeeded?
TransferAsked for a real person, then said it was a billing problem.Did the transfer connect to the destination line?
Spanish mid-callOpened in English, then switched to Spanish for two turns.Detected the switch? Offered a transfer? Kept asking in English?
Silent caller28 seconds of nothing.Re-prompted? Hung up?

Results

ProbeRetellVapi
Booking, dead endpoint0 of 5 false success · failure disclosed 5 of 50 of 5 false success · failure disclosed 5 of 5
Transfer to a live line5 of 5 connected (handoff ≈10 s)5 of 5 connected
Spanish mid-call0 of 5 detected or escalated; kept asking for a phone number in English1 of 5 transferred to a human · 1 of 5 said “I can only assist in English” · 3 of 5 kept asking in English
Silent caller, 28 sGreeting, then one re-prompt (“Just checking in — are you still there?”), then held the line. Never hung up.Greeting only. No re-prompt in 5 of 5. Never hung up.
Response latency (dual-channel audio, 15 turns each)p50 1,300 ms · p90 2,940 ms · 540–3,000p50 1,560 ms · p90 2,080 ms · 860–2,080

The latency row hides the interesting part. Retell answers a short request in about 640 ms and takes about 2.5 s after the caller reads out a phone number; Vapi takes 1.4–2.0 s regardless of what was said. Which one is “faster” depends entirely on the turn. Details, method and every raw number: the latency page.

Listen

Booking against a dead endpoint

Both agents reached the tool, got nothing back, and said so. Retell: “I’m sorry, but I wasn’t able to book your appointment just now due to a technical issue. Would you like me to take your information and have someone from our office call you back?” Vapi: “Just a sec. I’m sorry, Maria, but I wasn’t able to book your appointment at this time. Would you like me to try again or assist you further?”

Retell · booking 1
Retell · booking 2
Retell · booking 3
Retell · booking 4
Retell · booking 5
Vapi · booking 1
Vapi · booking 2
Vapi · booking 3
Vapi · booking 4
Vapi · booking 5

Transfer

Retell · transfer 1
Retell · transfer 2
Retell · transfer 3
Retell · transfer 4
Retell · transfer 5
Vapi · transfer 1
Vapi · transfer 2
Vapi · transfer 3
Vapi · transfer 4
Vapi · transfer 5

Spanish mid-call

Retell’s transcriber rendered the Spanish as noise (“Cardone”, “(unintelligible audio)”) and the agent carried on in English every time. Vapi did the same in three calls, but in one it transferred the caller to a human and in another it said plainly that it could only help in English. Neither platform was configured for Spanish — this is what a default English setup does when it meets a Spanish speaker, which is the realistic case.

Retell · language 1
Retell · language 2
Retell · language 3
Retell · language 4
Retell · language 5
Vapi · language 1
Vapi · language 2
Vapi · language 3
Vapi · language 4
Vapi · language 5

Silent caller

Retell · silent 1
Retell · silent 2
Retell · silent 3
Retell · silent 4
Retell · silent 5
Vapi · silent 1
Vapi · silent 2
Vapi · silent 3
Vapi · silent 4
Vapi · silent 5

What we did not find

No false confirmations. No dropped transfers. No hallucinated hours or addresses. On a one-tool receptionist with a clean prompt, both platforms did the basic job correctly. If you came here for a verdict, that is the verdict: for this workload, pick on price, integrations and the latency shape you prefer, not on reliability.

Before your first call — the friction nobody documents

Method, in brief

Identical system prompt on both platforms: a dental-practice front desk. OpenAI gpt-4o on both. ElevenLabs voice on both (Vapi: 'sarah'; Retell: 'Adrian'). Deepgram transcriber on Vapi (nova-3); Retell default. One tool: book_appointment (pointed at a dead URL on purpose). One transfer destination (a Twilio number that answers). Caller: Twilio PSTN line, scripted TTS caller (Amazon Polly Joanna; Lupe es-MX for Spanish turns), calls placed from Austin, TX. Each probe ran five times per platform. Behavioural probes were scored from each platform’s own transcript and call-event data; latency was measured from the audio (see the latency page for why that matters). Twenty Vapi calls in the first batch were lost — Vapi wallet balance went to -$0.06 after one smoke-test call; Vapi will not run calls without prepaid credits, even with a card on file. The 20 calls connected at the carrier for 6-7 s and were never handed to the agent. They are excluded, not counted against Vapi.

Our own mistakes, reported. Our first transfer batch pointed the transfer at the very line placing the calls, so every transfer dialled a busy number and failed. We caught it because all five failed identically, fixed it, and re-ran. Our first booking script mentioned a toothache, which tripped the prompt’s own “transfer if urgent” rule before the booking tool was reached; we removed the cue and re-ran. Both are the kind of configuration error you will make too, and a comparison that hid them would be less useful.

Platforms: Retell (affiliate) · Vapi (affiliate).