Voice v3 (Beta)
Voice v3 is the latest iteration of the Exotel Voice API, providing enhanced call management capabilities with improved call detail reporting, active stream monitoring, and voice log downloads.
Voice v3 APIs are currently in Beta. Some features may change as we finalize the API contracts.
Key Features
- Call Details (Beta) — Enhanced call detail records with richer metadata including recordings, DTMF digits, and flow information
- Active Stream Monitoring — Real-time monitoring of active call streams
- Voice Log Download — Download voice recordings and call logs programmatically
- Legs API Integration — Works with the Legs & Bridges API for advanced call flows
Base URL
| Data Center | Base URL |
|---|---|
| Singapore | https://<api_key>:<api_token>@ccm-api.exotel.com/v3/accounts/<account_sid> |
| Mumbai | https://<api_key>:<api_token>@ccm-api.in.exotel.com/v3/accounts/<account_sid> |
Authentication
All requests require HTTP Basic Authentication using your API key and token from the Exotel Dashboard → Settings → API Settings.
curl -X GET \
'https://<api_key>:<api_token>@ccm-api.exotel.com/v3/accounts/<account_sid>/calls/<call_sid>' \
-H 'Content-Type: application/json'
API Endpoints
| API | Method | Endpoint | Description |
|---|---|---|---|
| Call Details | GET | /v3/accounts/{sid}/calls/{call_sid} | Get enhanced call details |
| Active Streams | GET | /v3/accounts/{sid}/calls/active | Monitor active call streams |
| Voice Logs | GET | /v3/accounts/{sid}/calls/{call_sid}/voice-logs | Download voice recordings |
Outbound & Inbound Call APIs
Voice v3 focuses on enhanced reporting and monitoring. For initiating outbound calls and handling inbound calls, use the existing Voice v1 endpoints — they remain the production-grade APIs and are fully compatible alongside v3 reporting.
Connect Two Numbers
To programmatically connect two phone numbers (e.g., agent ↔ customer), use the Connect Two Numbers API on Voice v1:
→ POST /v1/Accounts/{sid}/Calls/connect
Connect-to-Flow is also available if you want to drop the call into an App Bazaar IVR flow:
→ POST /v1/Accounts/{sid}/Calls/connect (with Url)
Incoming Calls
To handle incoming calls (call routing, ExoML responses, agent forwarding), use the Voice v1 Incoming Call API:
For real-time delivery status of incoming/outgoing calls, configure the Status Callback webhook.
Call States
| State | Description |
|---|---|
active | Call is ongoing or post-call processing pending |
terminal | Call completed and all data processed |
Call Statuses
| Status | Description |
|---|---|
completed | Call connected and ended normally |
from_leg_unanswered | From-leg (agent) did not answer |
to_leg_unanswered | To-leg (customer) did not answer |
from_leg_cancelled | From-leg canceled the call |
to_leg_no_dial | Could not dial the to-leg |
from_leg_no_dial | Could not dial the from-leg |
Migration from v2
Voice v3 uses the same ccm-api domain as v2. Key differences:
| Feature | v2 | v3 |
|---|---|---|
| Endpoint prefix | /v2/accounts/ | /v3/accounts/ |
| Call detail fields | Standard | Enhanced with app_id, app_name, digits, recordings |
| Active monitoring | Not available | Real-time stream monitoring |
| Voice log download | Via recording URL only | Dedicated API endpoint |
| Status naming | agent_unanswered | from_leg_unanswered |
Related APIs
- Voice v2 (CCM) — Deprecated but still functional
- Voice v1 — Legacy voice APIs
- Legs & Bridges — Low-level call leg management