Skip to main content

Connect Voice AI with Flow

Dial a number and run the call through an Exotel App Bazaar flow — IVR, greetings, DTMF — before reaching your bot.

Uses the same Connect endpoint as Voice / Connect Voice AI. The WebSocket URL is configured on the Voicebot or Stream applet in the flow — do not pass StreamUrl / StreamType here.

When to use

  • Compliance greeting → bot
  • IVR / DTMF → bot
  • Bot → Connect (human) or Passthru
  • Unidirectional Stream for assist / transcription

Authentication

HTTP Basic Auth — API Key as username, API Token as password.

Base URL: https://api.in.exotel.com (India) · https://api.exotel.com (Singapore)

Request parameters

Required

ParameterTypeDescription
FromStringNumber to dial. E.164
CallerIdStringYour ExoPhone
UrlStringFlow URL: http://my.exotel.com/{AccountSid}/exoml/start_voice/{app_id}

Optional

ParameterTypeDescription
CallTypeStringtrans for transactional calls
TimeLimitIntegerMax duration in seconds. Max: 14400
TimeOutIntegerRing timeout in seconds
StatusCallbackStringWebhook URL for status events
StatusCallbackEventsStringterminal, answered, or both
CustomFieldStringAvailable to applets (e.g. Passthru)

Example request

curl -u '<api_key>:<api_token>' -X POST \
'https://api.in.exotel.com/v1/Accounts/<AccountSid>/Calls/connect' \
-d 'From=+919876543210' \
-d 'CallerId=0XXXXXXXXXX' \
-d 'Url=http://my.exotel.com/<AccountSid>/exoml/start_voice/<app_id>' \
-d 'StatusCallback=https://your-server.com/callback' \
-d 'StatusCallbackEvents=terminal'

Common flow patterns

PatternApplets
Greeting → botPlay → Voicebot
IVR menu → botGather (DTMF) → Voicebot
Bot → human agentVoicebot → Connect
Listen-only (transcription)Stream → Passthru

Configure the Voicebot applet

In App Bazaar, set the Voicebot/Stream applet URL to your wss:// endpoint (or an HTTPS URL that returns {"url":"wss://..."}). See Stream & Voicebot applet.

Try It