Exotel's RESTful APIs make it easy to integrate Voice & SMS in your web or mobile application. Think,

The possibilities are endless! Exotel's APIs allow you to programmatically control a call by playing personalised greetings, diverting users to a unique call flow, pushing call information, getting call recordings, etc. The APIs are designed according to REST principles. Exotel's REST APIs are served over HTTPS and HTTP. However, we highly recommend communicating over HTTPS.

Images provided below are a schematic representation of how Exotel works when an outgoing or incoming call occurs.


Each API request will have to contain request headers that include your access token to authenticate the request. Don't have an access token? You will find your access token in the API settings page of your Exotel Dashboard.

HTTP requests to the REST API are protected with HTTP Basic authentication. You will use your Exotel API key as the username and your API token as the password for HTTP Basic authentication. You can find your API key and API token on your Exotel Dashboard.

Base URL: https://api.exotel.com/v1/Accounts/

Rate Limits

To keep you in compliance, Exotel maintains the appropriate rate limits:




All Voice APIs are rate limited to 200 calls per minute. Once this limit has been crossed, your requests will be rejected with an HTTP 429 'Too Many Requests' code


In the rare instance that SMS API platform limits are breached, you will receive an HTTP 503 'Service Unavailable' code

HTTP Status Codes

Exotel uses standard HTTP status codes to communicate errors:

Status Code



OK - Everything went as planned.


Accepted - Request accepted.


Bad Request - Something in your header or request body was malformed.


Unauthorised - Necessary credentials were either missing or invalid.


Payment Required - The action is not available on your plan, or you have exceeded usage limits for your current plan.


Your credentials are valid, but you don’t have access to the requested resource.


Not Found - The object you’re requesting doesn’t exist.


Conflict - You might be trying to update the same resource concurrently.


Too Many Requests - You are calling our APIs more frequently than we allow.


Server Errors - Something went wrong on our end. Please try again.