TL;DR:
- Voice AI agents can now handle full inbound and outbound phone calls with natural multi-turn conversations, tool calls, and dynamic routing
- Vapi, Bland AI, and Retell each target different use cases — Vapi for developers wanting control, Bland for enterprise outbound volume, Retell for low-latency conversational quality
- The latency and prompt engineering challenges are different from text agents — optimising for <800ms response time requires specific architecture decisions
If you’ve been following the text-based agent ecosystem for the past two years, you’ve watched the infrastructure mature rapidly — orchestration frameworks, evaluation tooling, memory systems. Voice is roughly 18 months behind that curve, but it’s catching up fast. In 2026, the infrastructure for production voice AI agents has reached a point where serious deployments are viable for teams willing to navigate the rough edges.
The use cases driving adoption are concentrated: appointment scheduling and reminders, inbound customer support triage, outbound sales qualification, prescription refill handling, and order status inquiries. The common thread is high-volume, structured-enough conversations where the cost of human agent time exceeds the friction of AI failure modes.
The Architecture of a Voice AI Call
A voice agent call involves more moving parts than a text agent:
- Speech-to-text (STT): The caller’s audio is transcribed in near-real-time — typically 100-300ms latency
- LLM inference: The transcript is sent to a language model with the conversation context and any tool definitions
- Tool execution (optional): If the model calls a tool (CRM lookup, calendar check, database query), results are retrieved
- Text-to-speech (TTS): The model’s response is synthesised to audio — another 100-300ms
- Audio streaming: The synthesised audio streams back to the caller
Each step adds latency, and callers notice anything over about 800ms of “dead air” as uncomfortable. Getting the full round-trip under that threshold requires careful architecture choices across every component.
Vapi: The Developer-Focused Platform
Vapi positions itself as the most configurable option for developers who want to control every layer. You can swap the STT provider (Deepgram, AssemblyAI, OpenAI Whisper), the LLM (GPT-4o, Claude, Gemini, or a fine-tuned model), and the TTS provider (ElevenLabs, Cartesia, PlayHT) independently.
Setup is via a REST API or SDK. A minimal voice assistant configuration:
import Vapi from "@vapi-ai/web";
const vapi = new Vapi("your-api-key");
const assistant = {
model: {
provider: "anthropic",
model: "claude-sonnet-4-6",
messages: [
{
role: "system",
content: "You are a scheduling assistant for Riverside Dental. You help patients book, reschedule, and cancel appointments. Always confirm the patient's date of birth before accessing their records."
}
],
tools: [
{
type: "function",
function: {
name: "check_availability",
description: "Check available appointment slots for a given date range",
parameters: {
type: "object",
properties: {
date_from: { type: "string" },
date_to: { type: "string" },
appointment_type: { type: "string" }
}
}
}
}
]
},
voice: {
provider: "cartesia",
voiceId: "your-voice-id"
},
transcriber: {
provider: "deepgram",
model: "nova-2",
language: "en-GB"
}
};
vapi.start(assistant);
Vapi handles the WebRTC and SIP infrastructure, call routing, and the real-time pipeline. Your tool functions execute as webhooks — Vapi sends a POST request to your endpoint with the arguments the model chose, and your server returns the result. This keeps your business logic entirely under your control.
Vapi’s pricing is per-minute of call time, with the LLM and TTS costs passed through at roughly provider rates plus margin. For low to medium call volumes, it’s cost-effective. At high volume (tens of thousands of calls per day), the economics may push you toward a more custom stack.
Bland AI: Built for Enterprise Outbound Volume
Bland AI targets a different use case: high-volume outbound calling at scale. Where Vapi is API-first and developer-oriented, Bland offers a more workflow-driven interface and has built infrastructure specifically for concurrent outbound calling campaigns.
Bland’s differentiating features are around campaign management: scheduling outbound call batches, managing retry logic for unanswered calls, integrating with CRMs to pull call lists, and analysing call outcomes at scale. For teams running outbound lead qualification, appointment reminders, or collection calls, this operational layer matters as much as the underlying AI quality.
The tradeoff: Bland is less configurable at the model/voice layer than Vapi. You’re working within their infrastructure choices rather than swapping components. For use cases where outbound volume and campaign management are primary, this is a reasonable tradeoff.
Retell AI: Optimised for Conversation Quality
Retell’s focus is conversational naturalness — lower latency, better handling of interruptions, and more sophisticated turn-taking than the other platforms. They’ve built their own real-time pipeline optimised for <500ms end-to-end latency in most cases.
The features that distinguish Retell: interrupt handling (the agent gracefully yields when the caller talks over it, rather than continuing to speak), back-channel responses (“mm-hmm”, “sure”, brief acknowledgements that signal the agent is listening), and better handling of filler words and restarts in the caller’s speech.
For use cases where the conversational quality directly affects outcomes — customer support where frustrated callers will hang up if the AI feels robotic, or sales calls where trust matters — Retell’s investment in naturalness is meaningful.
Prompt Engineering for Voice
Voice prompt engineering has specific constraints compared to text:
Keep system prompts concise. Every token in the context window adds to inference latency. A 2,000-token system prompt that works fine for a text agent adds 50-100ms per turn in a voice context.
Design for interruption. Callers don’t wait for the agent to finish a paragraph before responding. Structure responses so that the first sentence contains the most important information. If the caller interrupts after 3 seconds, the key point should already have been delivered.
Handle “I don’t understand” gracefully. Speech-to-text errors are more common than LLM input errors in text pipelines. Build explicit handling for low-confidence transcriptions — short responses that ask for clarification without making the caller feel interrogated.
Avoid reading lists aloud. Bullet points and numbered lists are natural in text; they’re clumsy in speech. Rewrite as flowing sentences.
Production Considerations
Before going live with a voice agent:
- Test across accent and dialect variation: STT performance varies significantly. If your callers include a range of regional accents, test your STT provider specifically on your expected caller distribution.
- Build a human escalation path that works: Voice agents must be able to transfer to a human agent cleanly. Test the transfer path explicitly — a broken escalation that traps a frustrated caller in an AI loop is worse than no AI at all.
- Log transcripts for quality review: You cannot improve what you cannot see. Full call transcripts, call outcomes, and a random sample for human review are the minimum instrumentation for a production deployment.
- Set explicit scope boundaries: Voice agents that try to handle every possible query fail at most of them. Narrow scope, clear escalation, and graceful “I can’t help with that, let me transfer you” handling produces better outcomes than attempting broad coverage.
The tooling is good enough now to build production voice agents without custom infrastructure. The failure modes are mostly in prompt engineering and conversation design rather than platform limitations — which is a meaningful shift from 18 months ago.