Exotel

Exotel is an Indian cloud telephony and customer-engagement (CPaaS) platform offering programmable voice, SMS, virtual numbers (ExoPhones), IVR/call flows, call campaigns, and call-center tooling. Its Twilio-style REST APIs place outbound calls (connect two numbers or connect a number to a call flow), send SMS, return call and number metadata, and manage campaigns, over region-specific subdomains (api.exotel.com for Singapore, api.in.exotel.com for Mumbai/India) using HTTP Basic auth with an API Key and API Token. Exotel AgentStream adds a documented WebSocket voice-streaming API for real-time voicebots.

6 APIs 0 Features
Cloud TelephonyVoiceSMSIndiaCPaaSCall CenterIVRNumbersCommunicationsCustomer Engagement

APIs

Exotel Voice Call API

Place outbound voice calls via POST /v1/Accounts/{sid}/Calls/connect - either connect two phone numbers (call From, then bridge to To) or connect a number to an Exotel call flow...

Exotel Call Details API

Retrieve details of a single call by Sid (GET /v1/Accounts/{sid}/Calls/{CallSid}) including status, direction, duration, price, and recording URL, plus bulk call queries filtera...

Exotel SMS API

Send single SMS from an ExoPhone or approved Sender ID via POST /v1/Accounts/{sid}/Sms/send, with India DLT entity/template support, encoding and priority options, delivery stat...

Exotel Numbers API

Look up telecom metadata for a phone number via GET /v1/Accounts/{sid}/Numbers/{Number} - operator/circle, number type, and DND status where available for Indian numbers.

Exotel Campaigns API

Create, list, get, update (pause/resume), and delete bulk outbound call campaigns under the v2 API (POST/GET/PUT/DELETE /v2/accounts/{sid}/campaigns), and pull per-call records ...

Exotel AgentStream Voice Streaming API

Documented WebSocket (wss://) voice-streaming API. When a call reaches a Voicebot or Stream applet, Exotel opens a secure WebSocket to your endpoint and streams base64 linear-PC...

Collections

Exotel API

OPEN

Pricing Plans

Exotel Plans Pricing

4 plans

PLANS

Rate Limits

Exotel Rate Limits

5 limits

RATE LIMITS

FinOps

Exotel Finops

FINOPS

Event Specifications

Exotel AgentStream Voice Streaming API

Exotel AgentStream (also surfaced through the Voicebot and Stream applets) is a documented public WebSocket API for real-time voice media streaming during a call. When a call hi...

ASYNCAPI

API Governance Rules

Exotel API Rules

5 rules · 1 errors 4 warnings

SPECTRAL

Resources

🔗
AgenticAccess
AgenticAccess
🔗
DomainSecurity
DomainSecurity
🔑
Authentication
Authentication
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
📰
Blog
Blog

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Exotel API
  version: '1.0'
  description: 'Representative subset of Exotel''s Twilio-style cloud telephony REST API. Base URL is region-specific: https://api.exotel.com
    (Singapore) or https://api.in.exotel.com (Mumbai/India). Auth is HTTP Basic with API Key (username) and API Token (password);
    Account SID appears in every path. XML by default - append .json for JSON. Endpoint paths/methods confirmed from Exotel
    docs; field schemas modeled.'
request:
  auth:
    type: basic
    username: '{{apiKey}}'
    password: '{{apiToken}}'
items:
- info:
    name: Voice
    type: folder
  items:
  - info:
      name: Connect two numbers / connect to a call flow
      type: http
    http:
      method: POST
      url: https://api.exotel.com/v1/Accounts/:sid/Calls/connect.json
      params:
      - name: sid
        value: ''
        type: path
        description: Account SID.
      body:
        type: urlencoded
        data: From=&To=&CallerId=&Url=&Record=true
    docs: POST /v1/Accounts/{sid}/Calls/connect - connect two numbers, or connect a number to an Exotel call flow via the
      Url parameter. Confirmed endpoint.
- info:
    name: Call Details
    type: folder
  items:
  - info:
      name: Get call details
      type: http
    http:
      method: GET
      url: https://api.exotel.com/v1/Accounts/:sid/Calls/:CallSid.json
      params:
      - name: sid
        value: ''
        type: path
        description: Account SID.
      - name: CallSid
        value: ''
        type: path
        description: Call Sid.
    docs: GET /v1/Accounts/{sid}/Calls/{CallSid} - status, duration, price, recording URL. Confirmed endpoint.
  - info:
      name: List / bulk-query calls
      type: http
    http:
      method: GET
      url: https://api.exotel.com/v1/Accounts/:sid/Calls.json
      params:
      - name: sid
        value: ''
        type: path
        description: Account SID.
      - name: DateCreated
        value: ''
        type: query
      - name: Status
        value: ''
        type: query
    docs: MODELED path - documented bulk call queries, path follows Exotel Twilio-style convention.
- info:
    name: SMS
    type: folder
  items:
  - info:
      name: Send SMS
      type: http
    http:
      method: POST
      url: https://api.exotel.com/v1/Accounts/:sid/Sms/send.json
      params:
      - name: sid
        value: ''
        type: path
        description: Account SID.
      body:
        type: urlencoded
        data: From=&To=&Body=&DltEntityId=&SmsType=transactional
    docs: POST /v1/Accounts/{sid}/Sms/send - send a single SMS. India traffic needs DltEntityId. Confirmed endpoint.
  - info:
      name: Get SMS details
      type: http
    http:
      method: GET
      url: https://api.exotel.com/v1/Accounts/:sid/Sms/Messages/:SmsSid.json
      params:
      - name: sid
        value: ''
        type: path
        description: Account SID.
      - name: SmsSid
        value: ''
        type: path
        description: SMS Sid.
    docs: MODELED path - documented SMS details lookup, path follows Exotel convention.
- info:
    name: Numbers
    type: folder
  items:
  - info:
      name: Get number metadata
      type: http
    http:
      method: GET
      url: https://api.exotel.com/v1/Accounts/:sid/Numbers/:Number.json
      params:
      - name: sid
        value: ''
        type: path
        description: Account SID.
      - name: Number
        value: ''
        type: path
        description: Phone number (E.164).
    docs: GET /v1/Accounts/{sid}/Numbers/{Number} - operator/circle, type, DND status. Confirmed endpoint.
- info:
    name: Campaigns
    type: folder
  items:
  - info:
      name: List campaigns
      type: http
    http:
      method: GET
      url: https://api.exotel.com/v2/accounts/:sid/campaigns
      params:
      - name: sid
        value: ''
        type: path
        description: Account SID.
    docs: GET /v2/accounts/{sid}/campaigns. Confirmed v2 resource.
  - info:
      name: Create campaign
      type: http
    http:
      method: POST
      url: https://api.exotel.com/v2/accounts/:sid/campaigns
      params:
      - name: sid
        value: ''
        type: path
        description: Account SID.
      body:
        type: json
        data: '{"name":"my-campaign","caller_id":"","lists":[],"url":""}'
    docs: POST /v2/accounts/{sid}/campaigns. Confirmed endpoint; body modeled.
  - info:
      name: Get campaign
      type: http
    http:
      method: GET
      url: https://api.exotel.com/v2/accounts/:sid/campaigns/:campaign_id
      params:
      - name: sid
        value: ''
        type: path
        description: Account SID.
      - name: campaign_id
        value: ''
        type: path
    docs: GET /v2/accounts/{sid}/campaigns/{campaign_id}. Confirmed endpoint.
  - info:
      name: Update / pause / resume campaign
      type: http
    http:
      method: PUT
      url: https://api.exotel.com/v2/accounts/:sid/campaigns/:campaign_id
      params:
      - name: sid
        value: ''
        type: path
        description: Account SID.
      - name: campaign_id
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: PUT /v2/accounts/{sid}/campaigns/{campaign_id}. Confirmed endpoint.
  - info:
      name: Delete campaign
      type: http
    http:
      method: DELETE
      url: https://api.exotel.com/v2/accounts/:sid/campaigns/:campaign_id
      params:
      - name: sid
        value: ''
        type: path
        description: Account SID.
      - name: campaign_id
        value: ''
        type: path
    docs: DELETE /v2/accounts/{sid}/campaigns/{campaign_id}. Confirmed endpoint.
  - info:
      name: Get campaign call details
      type: http
    http:
      method: GET
      url: https://api.exotel.com/v2/accounts/:sid/campaigns/:campaign_id/call-details
      params:
      - name: sid
        value: ''
        type: path
        description: Account SID.
      - name: campaign_id
        value: ''
        type: path
    docs: GET /v2/accounts/{sid}/campaigns/{campaign_id}/call-details. Confirmed endpoint.