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
Use api.exotel.com to connect two numbers, or to connect a number to a flow.
POST /v1/Accounts/{account_sid}/Calls/connect
Use CCM APIs to connect a number to an agent who is already in your dashboard. The agent needs a device that is on.
POST /v3/accounts/{account_sid}/calls
CCM is Contact Center Management. CCM hosts start with ccm-api.
Pick the host for your account region:
| Job | Singapore | Mumbai |
|---|---|---|
| Two numbers, or a number to a flow | api.exotel.com | api.in.exotel.com |
| A number to an agent (CCM) | ccm-api.exotel.com | ccm-api.in.exotel.com |
To read a CCM call after it ends (legs, digits, recordings):
GET /v3/accounts/{account_sid}/calls/{call_sid}
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 | /v3/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.
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.