> ## Documentation Index
> Fetch the complete documentation index at: https://www.vobiz.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# What Is AI Outbound Calling? How AI Voice Agents Make Calls

> AI outbound calling uses voice agents to automatically dial contacts, speak naturally using LLM + TTS, and handle responses with STT. How the stack works, use cases, AMD, and India TRAI rules.

*November 9, 2026 · By [Piyush Sahoo](https://www.linkedin.com/in/piyush-s713/)*

**AI outbound calling is when software dials a phone number and conducts the conversation using an AI voice agent — no human places or manages the call. The agent listens with speech-to-text, decides what to say with a large language model, and speaks with text-to-speech, all in real time over a standard phone connection.**

It is different from robocalls and auto dialers. A traditional dialer plays a recording or connects a human agent. An AI voice agent holds a two-way conversation: it can answer questions, handle objections, collect information, and pass a summary to your CRM when the call ends.

> [!NOTE]
>
> **Key takeaways**
>
> * AI outbound calling combines a SIP trunk, AMD, STT, LLM, and TTS into one real-time pipeline.
> * The system only starts the AI agent after answering machine detection confirms a human picked up.
> * End-to-end latency under 1,500 ms makes conversations feel natural. SIP trunk location and streaming TTS are the main levers.
> * India uses the 140 series for all outbound calling categories and requires NDNC compliance.
> * Concurrency, not minutes, is the planning unit — model how many simultaneous calls you need at peak, not just the daily volume.

## What is AI outbound calling?

AI outbound calling is a type of automated outbound call where the conversation is handled by a voice agent powered by AI — typically a speech-to-text engine, a large language model, and a text-to-speech synthesizer — rather than by a human agent or a pre-recorded script.

The term covers everything from appointment reminders that can answer rescheduling questions to full outbound sales conversations where the agent qualifies leads and books meetings. What distinguishes it from older outbound automation is that the agent responds to what the other person actually says, in real time.

## How the technical stack works

An AI outbound call travels through several systems in sequence. Each adds latency, so understanding the pipeline helps you optimize it.

```
Your platform
    │
    ▼
SIP trunk ──► Phone network ──► Recipient's phone
    │
    ▼
Audio stream (bidirectional)
    │
    ├──► Speech-to-text (STT)  ──► Text transcript
    │                                    │
    │                                    ▼
    │                           LLM (generates reply)
    │                                    │
    │                                    ▼
    └◄── Text-to-speech (TTS) ◄── Reply text
```

1. **Dial and answer detection.** Your platform triggers a call via a SIP trunk or voice API. When the call connects, answering machine detection (AMD) classifies whether a human or machine answered. If a machine, the agent either hangs up or leaves a voicemail.

2. **Audio streaming.** For human-answered calls, raw audio is streamed in real time — typically using a WebSocket — to your AI pipeline. Vobiz streams 20 ms frames of audio continuously.

3. **Speech-to-text.** A transcription service converts the caller's speech to text. Streaming STT (where partial results arrive mid-sentence) cuts perceived latency significantly.

4. **LLM inference.** The transcript, conversation history, and your system prompt go to the language model. The LLM generates the agent's next turn.

5. **Text-to-speech.** The LLM's reply is synthesized into audio and streamed back to the caller. Streaming TTS (where audio begins playing before synthesis is complete) is essential — waiting for the full reply to synthesize before playing anything adds 500–1,000 ms of dead air.

6. **End of call.** When the conversation concludes, the agent hangs up. A webhook delivers the call summary, transcript, and any structured data collected.

## Key components and what to evaluate in each

| Component | What it does | What to look for |
| - | - | - |
| **SIP trunk** | Connects your software to the phone network | Low latency, high audio quality (G.711 µ-law/a-law or wideband), AMD support, India compliance |
| **AMD** | Classifies human vs. machine at call answer | Low false-positive rate (human classified as machine), fast decision time (under 2 s) |
| **STT** | Converts speech to text | Streaming output, Indian English and Hindi support if calling India, low word-error rate |
| **LLM** | Generates the agent's response | Latency under 500 ms for first token, instruction-following quality, context window for long calls |
| **TTS** | Converts text to speech | Streaming output, natural prosody, voice options that match your brand |
| **Orchestration** | Connects STT → LLM → TTS, manages state | Interruption handling (barge-in), silence detection, transfer logic |

## Use cases

**Sales and lead qualification.** The agent calls a list of prospects, asks qualifying questions, and books meetings for human closers. Only qualified, interested prospects reach a human. This compresses the top of the funnel significantly for large outreach lists.

**Appointment reminders and confirmations.** The agent calls patients, customers, or clients ahead of a scheduled appointment. If they want to reschedule, the agent checks availability and books a new slot. Response rates are higher than SMS for some segments.

**Payment collection.** The agent calls overdue accounts, confirms the amount due, and offers payment links or escalation to a human agent. AI handles the high-volume, low-complexity contacts; humans handle disputes.

**Surveys and research.** The agent conducts structured interviews, records responses, and produces a summary. Indian TRAI rules classify survey calls under the 160 number series.

**Post-purchase follow-up.** The agent calls customers after a purchase or service interaction to collect feedback or offer related products.

**Delivery updates.** The agent calls recipients when a package is out for delivery, confirms address details, and handles rescheduling if nobody is home.

## How AI outbound calling differs from traditional auto dialers

| | Traditional auto dialer | AI outbound calling |
| - | - | - |
| **Conversation** | Pre-recorded message or routes to human | Two-way conversation with AI agent |
| **Response handling** | DTMF (press 1) or none | Natural language |
| **Personalization** | Script-level (name, date) | Dynamic, based on conversation history |
| **AMD** | Usually yes, to avoid voicemail waste | Required — agent needs to know who answered |
| **Post-call data** | Call disposition codes | Full transcript, structured data, CRM update |
| **Scaling** | Concurrency-limited by agents | Concurrency-limited by channels, not staffing |

The practical difference is what happens after the call connects. A dialer's job is to deliver the connection. An AI agent's job is to have the conversation.

## Answering machine detection (AMD)

AMD is not optional for AI outbound calling. Without it, the agent may start speaking to a voicemail greeting, waste the session, or leave an incoherent message.

AMD listens to the first audio that comes back after the call connects. It measures speech patterns: voicemail greetings are typically longer, more continuous, and end with a beep; human answers are shorter and followed by silence.

| AMD decision | What it means | What the agent does |
| - | - | - |
| Human | A person answered | Start the conversation |
| Machine (early) | Voicemail detected before beep | Optionally wait for beep and leave message |
| Machine (late) | Greeting was long; beep already passed | Hang up or attempt again later |
| No answer | Call not answered before timeout | Hang up, mark for retry |

The main failure mode to watch is a **false positive** — a human classified as a machine. This is worse than a false negative (machine classified as human) because it silently drops live prospects. Measure your false-positive rate on your own traffic, not on vendor benchmarks.

On Vobiz, AMD is triggered by passing `machine_detection=Enable` on the call create request or `machine_detection=DetectMessageEnd` to wait for the beep. The result arrives as an `AnsweredBy` field in your webhook.

## Latency and conversation quality

A conversation feels natural when the agent's reply starts within about 1,500 ms of the caller finishing speaking. Each component contributes to this budget:

| Component | Typical contribution |
| - | - |
| Network (SIP, one way) | 20–80 ms |
| STT (streaming, first token) | 100–300 ms |
| LLM (first token, streaming) | 200–500 ms |
| TTS (streaming, first chunk) | 100–300 ms |
| Network (audio back) | 20–80 ms |
| **Total** | **\~440–1,260 ms** |

The biggest lever is **co-locating your inference and your SIP trunk**. If your LLM is in US-East and your SIP trunk routes through Europe, you add 150–200 ms of unnecessary round-trip. Place your Vobiz WebSocket endpoint and your STT/TTS as close to each other as possible.

The second lever is **streaming everything**. Use streaming STT (partial transcript tokens), streaming LLM (first token starts TTS before generation is complete), and streaming TTS (audio starts before the full sentence is synthesized).

## India compliance for AI outbound calling

India's TRAI regulations apply to all automated outbound calls, including AI agents.

**Number series.** All outbound calls from businesses must use the 140 series. The sub-series reflects call purpose:

| Sub-series | Purpose |
| - | - |
| 140 (generic) | Service calls, transactional alerts |
| 1409 | Promotional calls to consented recipients |
| 160 | Surveys and research |

**NDNC (Do Not Call).** Promotional calls must screen against the National DNC registry. Service and transactional calls to existing customers operate under different rules — verify the latest TRAI text for your use case.

**Abandoned call rate.** TRAI flags abandoned calls above 3% of attempted calls over 24 hours. An abandoned call in this context is one where a human answers but the system does not connect them to anything. For AI agents that always start a conversation immediately, this limit is easy to meet — but check your AMD logic, since a false-positive (human → machine) produces an abandoned call.

**Consent.** Promotional calls require prior consent. Service calls to existing customers do not. Keep records of consent, because TRAI fines can be substantial.

## How to build AI outbound calling with Vobiz

Vobiz provides the telephony layer — the SIP trunk, outbound call API, AMD, and bidirectional audio stream — that your AI orchestration platform sits on top of.

**Step 1: Create the outbound call**

```python theme={null}
import requests

response = requests.post(
    "https://api.vobiz.ai/v1/Call",
    auth=("your_account_id", "your_auth_token"),
    data={
        "From": "+918XXXXXXXXXX",   # Your 140-series number
        "To": "+919XXXXXXXXXX",     # Recipient
        "Url": "https://your-app.com/outbound-webhook",
        "machine_detection": "Enable",
        "machine_detection_time": "30",
        "StatusCallback": "https://your-app.com/status"
    }
)
```

**Step 2: Handle the AMD result in your webhook**

```python theme={null}
from flask import Flask, request, Response

app = Flask(__name__)

@app.route("/outbound-webhook", methods=["POST"])
def handle_call():
    answered_by = request.form.get("AnsweredBy", "unknown")

    if answered_by == "human":
        # Stream audio to your AI agent
        xml = """<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Stream bidirectional="true" keepCallAlive="true">
        wss://your-ai-agent.com/stream
    </Stream>
</Response>"""
    elif answered_by in ("machine_start", "machine_end_beep"):
        # Leave a voicemail
        xml = """<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Wait beep="true" length="10"/>
    <Speak>Hi, this is a message from Acme Corp...</Speak>
</Response>"""
    else:
        xml = "<Response><Hangup/></Response>"

    return Response(xml, mimetype="application/xml")
```

**Step 3: Handle audio in your AI agent**

Your WebSocket server receives 20 ms audio frames from Vobiz and can send audio back:

```javascript theme={null}
ws.on('message', (message) => {
    const data = JSON.parse(message);

    if (data.event === 'start') {
        // Initialize STT session for this call
        initSTT(data.start.callId);
    } else if (data.event === 'media') {
        // Send audio to STT
        const audio = Buffer.from(data.media.payload, 'base64');
        streamToSTT(audio, data.start.callId);
    }
});

// When TTS produces audio, send it back
function sendAudioToCall(ws, audioBuffer) {
    ws.send(JSON.stringify({
        event: 'playAudio',
        playAudio: {
            media: {
                contentType: 'audio/x-l16',
                sampleRate: 8000,
                payload: audioBuffer.toString('base64')
            }
        }
    }));
}
```

For a complete working example with LiveKit as the AI orchestration layer, see the [LiveKit outbound agent example](https://www.vobiz.ai/docs/examples/livekit-vobiz-outbound.md). For Vapi or Retell AI as the orchestration layer, see the [Vapi integration guide](https://www.vobiz.ai/docs/integrations/vapi.md) or [Retell AI integration guide](https://www.vobiz.ai/docs/integrations/retellai-api.md).

## Concurrency planning

For AI outbound calling, the planning unit is **concurrent sessions**, not daily call volume. A 1,000-call campaign with 2-minute average call duration needs 1,000 × 2 / 60 ≈ 33 concurrent channels if calls are evenly distributed over 1 hour — or more if compressed into a shorter window.

Each concurrent call needs:

* One SIP channel (voice trunk concurrency)
* One AI agent session (STT + LLM + TTS compute)
* One WebSocket connection

Scale your concurrency at the SIP trunk level to match your AI compute capacity. Starting more calls than you can serve creates queuing or degraded quality.

Vobiz provides 3 free concurrent calls on all accounts. Contact support to increase limits for production campaigns.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.