Skip to main content

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 toStart here
Connect two phone numbersConnect Two Numbers
Connect an agent to a customerConnect Agent to Customer
Connect a number to an IVR flowConnect Number to Call Flow
Handle a call that comes into my ExoPhoneProgram Incoming Call
Build an IVR menuIVR Menu Applet
Look up a call after it endsCall Details
Download a recordingVoice 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:

JobSingaporeMumbai
Two numbers, or a number to a flowapi.exotel.comapi.in.exotel.com
A number to an agent (CCM)ccm-api.exotel.comccm-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

TaskMethodPath
Connect Two NumbersPOST/v1/Accounts/{account_sid}/Calls/connect
Connect Agent to CustomerPOST/v3/accounts/{account_sid}/calls
Connect Number to Call FlowPOST/v1/Accounts/{account_sid}/Calls/connect
Program Incoming CallCall flow on the ExoPhone
Call DetailsGET/v1/Accounts/{account_sid}/Calls/{call_sid}
Call Details (CCM)GET/v3/accounts/{account_sid}/calls/{call_sid}
Call legsGET/v3/accounts/{account_sid}/calls/{call_sid}/legs
Voice logsGET/v3/accounts/{account_sid}/calls/{call_sid}/voice-logs
Number metadataGET/v1/Accounts/{account_sid}/Numbers/{number}
Account balanceGET/v1/Accounts/{account_sid}/Balance.json
Status callbackWebhook 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.