Guides

Guide · Voice agents · 6 min read

Vapi vs Retell for appointment booking: what I learned building on both

I've built the same kind of booking agent on both platforms: Aria, a clinic receptionist on Vapi, and Ray, an HVAC dispatcher on Retell. Most "Vapi vs Retell" comparisons are written by one of the two companies, or by a third platform selling itself. This one is about the part that actually breaks in a booking agent: checking availability, booking the slot, and not double-booking it.

By MD Faizan Uzzaman · Verified n8n Creator · Published 27 Sep 2026

Which is better for appointment booking, Vapi or Retell?

For a simple booking agent you want live quickly, I'd pick Vapi. For a complex flow that has to behave the same way on every call, I'd pick Retell, and accept that it takes longer to build.

That's the whole answer in two sentences, but it depends less on the platform than people think. The booking logic (availability, the booking itself, rescheduling, cancelling, the SMS confirmation) lives in your back-end either way. I build that part in n8n, and it works behind both.

What's the real difference when you build a booking agent?

The difference is control: on Vapi I built Aria as a single prompt, which was fast but hard to keep on track. On Retell I built Ray as a Conversation Flow, which took longer but stayed on script.

Aria was simple and easy to get working. The problem showed up in testing: she sometimes hallucinated details and repeated herself, because everything she did depended on one long prompt. Ray was the opposite. Retell describes Conversation Flow as giving "more fine-grained control… with predictable outcomes", and that matched what I saw: each node has one job, so he hallucinated less. The cost was build time and complexity.

Vapi (Aria)Retell (Ray)
How I built itOne system promptConversation Flow (nodes)
Time to first working callFastSlower, more pieces to wire
Behaviour on test callsOccasionally hallucinated and repeated itselfMore predictable, hallucinated less
Connecting to n8nMCP over Streamable HTTP, or tools calling webhooksMCP over Streamable HTTP, or custom functions calling webhooks
Best fitSimple receptionist, quick launchComplex flows that must be consistent

How much does Vapi or Retell cost per minute?

In my own builds both came out at roughly 10 to 14 cents a minute: Aria's Vapi dashboard estimates about $0.11 per minute, and my ABC Plumbing demo on Retell averaged $0.12 per minute on real phone calls. Retell's own pricing page lists $0.07 to $0.31 per minute for voice agents, depending on the model and voice you choose.

My Aria estimate is Vapi's $0.05/min hosting fee plus the providers I picked: Deepgram Nova 3 Medical for transcription ($0.01/min), GPT-4o mini ($0.01/min) and an ElevenLabs Turbo v2.5 voice ($0.036/min). A 3-minute test call lands around 32 cents before the phone line. On Retell, the same list starts from $0.055/min for infrastructure, with the LLM and voice added on top, plus $0.015/min for telephony and $2 a month per phone number. For real Retell numbers, my ABC Plumbing demo agent runs on Retell: across 9 real phone calls (20.6 minutes) it cost $2.50, about $0.12 per minute ($0.10 to $0.14 depending on the call), so a 3-minute call came to roughly $0.30 to $0.42. Browser test calls, which skip the phone line, averaged about $0.095 per minute. Retell is moving workspaces to credit-based billing on 30 September 2026, so check their pricing page for current rates.

Is Retell AI free?

Retell isn't free, but it starts you with $10 in free credits on pay-as-you-go. Vapi gives $5 in free credits to start.

Either is enough to build and test one booking agent properly before you spend anything. Test calls add up faster than you'd expect once you start checking edge cases, so budget for real minutes, not just the free ones.

Can one n8n back-end work behind both Vapi and Retell?

Yes. Both platforms can call n8n over MCP using Streamable HTTP, and both can also call plain n8n webhooks through tools (Vapi) or custom functions (Retell).

This is where I lost the most time. When I built Ray, Retell only spoke Streamable HTTP for MCP (Retell's docs still say "Retell connects over Streamable HTTP"), and the n8n MCP trigger I was using only gave me SSE. I spent 2 to 4 hours in docs, support and AI sessions, then built a custom MCP server and proxy to bridge the two. Looking back, it wasn't worth it: a Retell custom function posting to an n8n webhook would have done the job in minutes. The good news is you probably won't hit this now, because n8n's MCP Server Trigger supports both SSE and streamable HTTP, and Vapi's MCP tool uses Streamable HTTP by default.

My published n8n template, Handle clinic appointments via MCP tools for Vapi and Retell voice agents, is that shared back-end: check availability, book, offer the next open slot, reschedule and cancel. Here it is running behind a Vapi agent:

The n8n booking back-end running behind a Vapi voice agent (demo build)

How do you connect Google Calendar without time zone bugs?

Always send the time zone with every booking. Google Calendar needs either an offset in the date-time or a named time zone, and if you give it neither, bookings land at the wrong hour.

This was my most common bug. When mapping the booking in n8n, I built the start time as <date>T<HH:mm> with no offset. Google's API is explicit that for start.dateTime "a time zone offset is required unless a time zone is explicitly specified in timeZone". The fix is to pass the clinic's IANA time zone (Aria's prompt uses America/Chicago) in the calendar node, and to tell the agent the current date and time in that zone, so "tomorrow at 3" means the clinic's tomorrow, not the server's.

How do you stop a voice agent from double-booking?

Check the slot again inside the booking step, right before you create the event. Checking availability once, early in the call, isn't enough.

The gap is timing. The agent checks availability, talks to the caller for a minute, then calls the booking tool. In that minute someone else can take the slot. If your booking workflow re-checks the calendar and refuses (or offers the next open slot) when the time is gone, the double booking can't happen, whichever platform the agent runs on.

Which should an agency pick for a clinic receptionist?

For a straightforward clinic receptionist, I'd start on Vapi: it's quicker to get a working agent in front of a client. If the clinic has complex rules, several practitioners or a script that must be followed exactly, I'd build it on Retell's Conversation Flow.

Whichever you choose, the booking back-end is the same job: real availability, no double bookings, rescheduling, cancelling and a confirmation text. That part is portable, so you can switch platforms later without rebuilding it.

About the author

I'm Faizan, a Verified n8n Creator. I build the n8n booking back-ends behind Vapi and Retell voice agents, and I've been building voice agents and n8n automations since April 2026. Aria and Ray are my own builds, not client projects.

Selling voice agents?

If the booking side is what's slowing your launches, I build that back-end for $200 per build, paid through Upwork escrow and released only once it works on your test calls.

See the agency offer