The Robo Voice Call API enables automated outbound voice calls for delivering pre-recorded or dynamically generated messages. Perfect for appointment reminders, notifications, alerts, and promotional campaigns.

Overview

Unlike conversational calls, robo calls deliver a specific message without complex AI interaction. They’re ideal for:
  • Appointment reminders
  • Delivery notifications
  • Emergency alerts
  • Survey invitations
  • Promotional messages

Endpoint

POST https://voice.intron.io/api/v1/voice-bot/call

Authentication

Authorization: Bearer YOUR_API_KEY

Request

Headers

HeaderValueRequired
AuthorizationBearer YOUR_API_KEYYes
Content-Typeapplication/jsonYes

Body Parameters

ParameterTypeRequiredDescription
phone_numberstringYesDestination phone number (E.164 format)
messagestringYes*Text message to speak (TTS)
audio_urlstringYes*URL to pre-recorded audio file
voicestringNoVoice ID for TTS (default: ‘en-female-1’)
caller_idstringNoCaller ID to display
languagestringNoLanguage code (default: ‘en’)
retry_countintegerNoNumber of retry attempts (default: 0, max: 3)
retry_delayintegerNoDelay between retries in minutes (default: 5)
callback_urlstringNoWebhook URL for call events
schedule_atstringNoISO 8601 timestamp to schedule the call
variablesobjectNoVariables for message templating
Either message or audio_url is required, but not both.

Example Requests

Using TTS Message

curl -X POST https://voice.intron.io/api/v1/voice-bot/call \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone_number": "+1234567890",
    "message": "Hello {{name}}, this is a reminder that your appointment is scheduled for {{date}} at {{time}}. Press 1 to confirm or 2 to reschedule.",
    "voice": "en-female-1",
    "variables": {
      "name": "John",
      "date": "January 20th",
      "time": "2:30 PM"
    },
    "callback_url": "https://yourapp.com/webhooks/voice"
  }'

Using Pre-recorded Audio

curl -X POST https://voice.intron.io/api/v1/voice-bot/call \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone_number": "+1234567890",
    "audio_url": "https://yourserver.com/audio/reminder.mp3",
    "callback_url": "https://yourapp.com/webhooks/voice"
  }'

Scheduled Call

curl -X POST https://voice.intron.io/api/v1/voice-bot/call \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone_number": "+1234567890",
    "message": "Good morning! This is your scheduled wake-up call.",
    "schedule_at": "2024-01-20T07:00:00Z"
  }'

Response

Success Response (200 OK)

{
  "status": "success",
  "call_id": "robo_abc123def456",
  "message": "Call queued",
  "scheduled_at": null,
  "estimated_start": "2024-01-15T10:30:05Z"
}

Scheduled Call Response

{
  "status": "success",
  "call_id": "robo_abc123def456",
  "message": "Call scheduled",
  "scheduled_at": "2024-01-20T07:00:00Z"
}

DTMF Input Handling

Capture user input via keypad presses:
{
  "phone_number": "+1234567890",
  "message": "Press 1 to confirm your appointment, or press 2 to cancel.",
  "dtmf_config": {
    "enabled": true,
    "timeout": 10,
    "max_digits": 1,
    "actions": {
      "1": {
        "action": "webhook",
        "url": "https://yourapp.com/confirm",
        "response_message": "Your appointment has been confirmed. Thank you!"
      },
      "2": {
        "action": "webhook",
        "url": "https://yourapp.com/cancel",
        "response_message": "Your appointment has been cancelled. Goodbye."
      }
    }
  }
}

Batch Calls

Send multiple calls in a single request:
POST https://voice.intron.io/api/v1/voice-bot/call/batch
{
  "calls": [
    {
      "phone_number": "+1234567890",
      "message": "Hello {{name}}, reminder for {{date}}.",
      "variables": {"name": "John", "date": "Monday"}
    },
    {
      "phone_number": "+0987654321",
      "message": "Hello {{name}}, reminder for {{date}}.",
      "variables": {"name": "Jane", "date": "Tuesday"}
    }
  ],
  "voice": "en-female-1",
  "callback_url": "https://yourapp.com/webhooks/voice"
}

Batch Response

{
  "status": "success",
  "batch_id": "batch_xyz789",
  "total_calls": 2,
  "calls": [
    {"call_id": "robo_abc123", "phone_number": "+1234567890", "status": "queued"},
    {"call_id": "robo_def456", "phone_number": "+0987654321", "status": "queued"}
  ]
}

Get Call Status

GET https://voice.intron.io/api/v1/voice-bot/call/{call_id}

Response

{
  "call_id": "robo_abc123def456",
  "status": "completed",
  "phone_number": "+1234567890",
  "duration": 25,
  "created_at": "2024-01-15T10:30:00Z",
  "started_at": "2024-01-15T10:30:05Z",
  "ended_at": "2024-01-15T10:30:30Z",
  "dtmf_input": "1",
  "call_result": "answered"
}

Webhook Events

Call Answered

{
  "event": "robo_call.answered",
  "call_id": "robo_abc123def456",
  "phone_number": "+1234567890",
  "timestamp": "2024-01-15T10:30:05Z"
}

DTMF Received

{
  "event": "robo_call.dtmf",
  "call_id": "robo_abc123def456",
  "digit": "1",
  "timestamp": "2024-01-15T10:30:20Z"
}

Call Completed

{
  "event": "robo_call.completed",
  "call_id": "robo_abc123def456",
  "phone_number": "+1234567890",
  "duration": 25,
  "result": "answered",
  "dtmf_input": "1",
  "timestamp": "2024-01-15T10:30:30Z"
}

Call Results

ResultDescription
answeredCall was answered
voicemailCall went to voicemail
busyLine was busy
no_answerNo answer after timeout
failedCall failed to connect
rejectedCall was rejected

Cancel a Call

Cancel a scheduled or queued call:
DELETE https://voice.intron.io/api/v1/voice-bot/call/{call_id}

Response

{
  "status": "success",
  "message": "Call cancelled",
  "call_id": "robo_abc123def456"
}

Rate Limits

PlanCalls/minuteConcurrent Calls
Free102
Pro10020
EnterpriseCustomCustom

Best Practices

Ensure compliance with local telecommunications regulations (TCPA, GDPR, etc.) before making automated calls.
  1. Respect Time Zones: Schedule calls during appropriate hours
  2. Provide Opt-out: Include an option to stop receiving calls
  3. Keep Messages Concise: Short, clear messages have better engagement
  4. Handle Failures: Implement retry logic for important notifications
  5. Monitor Results: Track call outcomes to optimize delivery rates
For interactive voice conversations, see the Conversation Voice Call documentation.