Outbound Calling
Initiate AI-powered outbound phone calls to reach customers proactively, one at a time or in batch campaigns.
Outbound calling lets your voice agent place calls to phone numbers instead of waiting for inbound calls. Your AI dials the number, the recipient picks up, and a natural voice conversation begins — powered by the same system prompt, knowledge base, and tools as your inbound voice agent.
Outbound calling requires a Studio Pro plan or higher with voice agents enabled. You also need a phone number assigned to your app.
How It Works
Outbound calls use SIP (Session Initiation Protocol) through LiveKit to place real phone calls. When you trigger an outbound call:
- Chipp creates a voice room and dials the recipient via your SIP trunk
- The recipient’s phone rings with your configured caller ID
- When they answer, your voice agent joins the call and begins the conversation
- The agent uses the same voice, greeting, system prompt, and tools as inbound calls
- The call is recorded as a chat session you can review in your Chats page
Each call has a configurable maximum duration (default 10 minutes, up to 60 minutes).
Inbound vs. Outbound
| Inbound | Outbound | |
|---|---|---|
| Who initiates | The user calls your number | Your AI calls the user |
| Use case | Support, information, booking | Follow-ups, reminders, campaigns |
| Phone number | Required (user dials it) | Required (used as caller ID) |
| Voice config | Same | Same |
| Tools & knowledge | Same | Same |
Single Outbound Call
To place a single outbound call, use the API endpoint:
POST /api/applications/:id/voice/outbound-call{
"phoneNumber": "+15551234567",
"callerIdName": "Acme Support",
"maxDurationSeconds": 300,
"metadata": {
"recipientName": "Jane Smith",
"reason": "appointment-reminder"
}
}| Field | Required | Description |
|---|---|---|
phoneNumber | Yes | E.164 format (+1...). US 10-digit numbers are auto-prefixed. |
callerIdName | No | Name displayed on caller ID. Defaults to “AI Assistant”. |
maxDurationSeconds | No | Max call length (60—3600). Defaults to 600 (10 min). |
metadata | No | Custom key-value data attached to the call record. |
The response includes a callId, roomName, and sipCallId you can use for tracking.
Batch Calling
For calling multiple recipients, use the batch endpoint:
POST /api/applications/:id/voice/outbound-batch{
"recipients": [
{ "phoneNumber": "+15551234567", "metadata": { "name": "Jane" } },
{ "phoneNumber": "+15559876543", "metadata": { "name": "Mike" } }
],
"callerIdName": "Acme Reminders",
"callsPerMinute": 5
}| Field | Required | Description |
|---|---|---|
recipients | Yes | Array of phone numbers + optional metadata (max 1,000). |
callsPerMinute | No | Rate limit for placing calls (1—60). Defaults to 5. |
Small batches (10 or fewer recipients) are placed immediately with a short delay between each call. Larger batches create a campaign that processes calls in a managed queue.
Campaigns (CSV Upload)
For large-scale outreach, upload a CSV file of recipients:
POST /api/applications/:id/voice/outbound-campaign{
"csvContent": "phone,name,appointment_date\n+15551234567,Jane Smith,2026-04-01\n+15559876543,Mike Jones,2026-04-02",
"callerIdName": "Acme Scheduling",
"callsPerMinute": 10
}CSV Format
Your CSV must include a header row with a phone number column. Accepted column names:
phonephonenumberphone_numbernumber
All other columns are attached as metadata to each call, so the AI has context about who it is calling.
Example CSV:
phone,name,appointment_date,location
+15551234567,Jane Smith,2026-04-01,Downtown Office
+15559876543,Mike Jones,2026-04-02,Midtown ClinicCampaign Status
Campaigns track progress through these statuses:
| Status | Meaning |
|---|---|
pending | Created, not yet started |
running | Calls are being placed |
paused | Temporarily stopped |
completed | All calls finished |
cancelled | Manually stopped |
Each recipient is independently tracked as pending, queued, calling, completed, failed, or no-answer.
List your campaigns:
GET /api/applications/:id/voice/campaigns?limit=50&offset=0Phone Number Format
Phone numbers are normalized to E.164 format before dialing:
(555) 123-4567becomes+15551234567(US assumed for 10-digit numbers)1-555-123-4567becomes+15551234567+44 20 7946 0958stays as-is (international)
Numbers must be between 10 and 15 digits. Invalid numbers are rejected before the call is placed.
Use Cases
| Use Case | How It Works |
|---|---|
| Appointment reminders | Upload a CSV of patients with dates. The AI calls each one to confirm or reschedule. |
| Follow-up calls | After a support ticket, the AI calls to check if the issue was resolved. |
| Lead qualification | The AI calls inbound leads to ask qualifying questions and schedule demos. |
| Payment reminders | Friendly automated calls about upcoming or past-due invoices. |
| Survey collection | The AI calls customers, asks survey questions, and records responses. |
Best Practices
System Prompt for Outbound
Add outbound-specific instructions to your system prompt:
When making an outbound call:
- Introduce yourself and state the reason for calling immediately
- If you reach voicemail, leave a brief message with a callback number
- Be respectful of the recipient's time -- keep calls concise
- If asked, explain that this is an AI-powered call from [Company Name]Rate Limiting
Start with a low callsPerMinute (3—5) and increase gradually. High call volumes may be flagged by carriers.
Metadata for Context
Pass recipient-specific data in the metadata field. The AI can reference this context during the conversation — for example, the recipient’s name, appointment date, or account status.
Outbound calling pairs well with Heartbeat for scheduled proactive outreach. Configure Heartbeat to trigger outbound calls on a schedule instead of sending chat messages.
Troubleshooting
Calls not connecting?
- Verify voice mode is enabled and a phone number is assigned
- Check that the recipient’s phone number is valid E.164 format
- Ensure your SIP outbound trunk is configured (contact support if unsure)
Recipient hears nothing?
- Check your voice agent’s greeting configuration
- Verify the voice selection is set (stock or cloned voice)
- Review call records in the Chats page for errors
Campaign stuck in “pending”?
- Large campaigns are processed asynchronously — allow time for the queue to start
- Check that your plan supports outbound calling
For inbound call setup, see the Phone Numbers guide. For voice agent configuration, see Voice Agents.