Programmable Voice
Make and receive phone calls from your application.
If you have not placed a call yet, use the quickstart. It connects two numbers in about five minutes.
Common tasks​
| I want to | Start here |
|---|---|
| Connect two phone numbers | Connect Two Numbers |
| Connect an agent to a customer | Connect Agent to Customer |
| Connect a number to an IVR flow | Connect Number to Call Flow |
| Handle a call that comes into my ExoPhone | Program Incoming Call |
| Build an IVR menu | IVR Menu Applet |
| Look up a call after it ends | Call Details |
| Download a recording | Voice Log Download |
How a call works​
You send a POST request. Exotel rings the first number. After that person answers, Exotel rings the second number. Both sides talk through your ExoPhone, so the customer sees your business number, not a personal one.
For inbound calls, attach a call flow to the ExoPhone. Exotel follows that flow when someone dials in.
Which URL to call​
CCM is Contact Center Management. Use CCM APIs if you run contact center operations on my*.exotel.com.
To connect two numbers, POST to api.exotel.com:
POST /v1/Accounts/{account_sid}/Calls/connect
To connect an agent who is already in your dashboard, POST to ccm-api.exotel.com:
POST /v2/accounts/{account_sid}/calls
The agent needs a device that is on. For queues, processes, and leads, see Contact Center.
To read the call after it ends (legs, digits, recordings), GET from ccm-api.exotel.com:
GET /v3/accounts/{account_sid}/calls/{call_sid}
You can place the call on one URL and read it on the other. Each API page lists the host and path for that request.
API reference​
| Task | Method | Path |
|---|---|---|
| Connect Two Numbers | POST | /v1/Accounts/{account_sid}/Calls/connect |
| Connect Agent to Customer | POST | /v2/accounts/{account_sid}/calls |
| Connect Number to Call Flow | POST | /v1/Accounts/{account_sid}/Calls/connect |
| Program Incoming Call | — | Call flow on the ExoPhone |
| Call Details | GET | /v1/Accounts/{account_sid}/Calls/{call_sid} |
| Call Details (CCM) | GET | /v3/accounts/{account_sid}/calls/{call_sid} |
| Call legs | GET | /v3/accounts/{account_sid}/calls/{call_sid}/legs |
| Voice logs | GET | /v3/accounts/{account_sid}/calls/{call_sid}/voice-logs |
| Number metadata | GET | /v1/Accounts/{account_sid}/Numbers/{number} |
| Account balance | GET | /v1/Accounts/{account_sid}/Balance.json |
| Status callback | — | Webhook on your server |
Applets​
Applets are the blocks in a call flow. You use them for greetings, menus, transfers, voicemail, and hangup. See the Applets list.
Base URLs​
| Job | Singapore | Mumbai |
|---|---|---|
| Place a call, applets, older call records | api.exotel.com | api.in.exotel.com |
| Contact Center Management (CCM) | ccm-api.exotel.com | ccm-api.in.exotel.com |
Auth is HTTP Basic. Use the API key and token from the dashboard under Settings → API Settings. See Authentication.
Voice APIs allow 200 calls per minute. A higher rate returns HTTP 429.