Home 3CX Automating Outbound Calls with the 3CX Call Control API in V20: Complete Guide for SA Resellers
3CX AI Briefed

Automating Outbound Calls with the 3CX Call Control API in V20: Complete Guide for SA Resellers

Complete guide to 3CX V20 Call Control API for outbound call automation. Covers OAuth 2.0 authentication, V18-to-V20 breaking changes, SA business use cases (appointment reminders, collections, lead callbacks), CRM integrations and rate limiting.

Topics: 3CX

In brief: The 3CX V20 Call Control API is fully rewritten as an asynchronous, transactional system using OAuth 2.0 authentication. It enables outbound call automation, CRM-triggered dialling, appointment reminders, and campaign calls. V20 breaks V18 integrations — particularly barge functionality, which has been removed. SA resellers building custom integrations must update authentication and test thoroughly before upgrading production systems.

Automated outbound calling is one of the highest-value integrations SA resellers can offer on top of 3CX deployments. From appointment reminder systems for medical practices to automated delivery notifications for logistics companies, the 3CX Call Control API turns a phone system into an active business workflow tool — not just a passive communications platform.

This guide covers everything you need to build or pitch outbound call automation on 3CX V20, including the breaking changes from V18, authentication updates, practical use cases for SA businesses, and CRM integration options.

What Changed in the 3CX Call Control API: V18 vs V20

The V20 Call Control API is a ground-up rewrite. If you have existing V18 integrations, do not upgrade production systems without testing against V20 first — there are breaking changes that will require code modifications.

Key Changes

Feature V18 Behaviour V20 Behaviour
Architecture Synchronous Asynchronous, transactional
Call state tracking Manual polling required Automatic — API notifies on state changes
Authentication API key OAuth 2.0 (client credentials) or API key
Barge functionality Available via IVR/Call Flow Removed — no replacement
Developer experience Complex state management Cleaner awaitable implementation

The asynchronous model is a significant improvement for developers: rather than polling for call state, the API automatically delivers state change notifications. This reduces code complexity and eliminates race conditions common in V18 outbound call automation scripts.

Breaking Change Warning: Barge functionality has been removed from V20 — it’s no longer possible to barge into calls via IVR, Call Flow Designer, or dummy user extensions. If any of your customer integrations relied on barge-in for supervisor monitoring or quality assurance, these will need to be replaced with alternative approaches (call recording + real-time transcription is the most common substitute).

Authentication in V20: OAuth 2.0

V20 uses OAuth 2.0 Client Credentials Grant as its primary authentication method. Here’s the implementation flow:

Step 1: Create a Client Application in 3CX

In the 3CX Management Console, create a new client application. Enable the required scopes:

  • XAPI scope — for general API access (queue management, reporting, extension control)
  • Call Control scope — for triggering and managing outbound calls

Note the client_id and client_secret generated for your application.

Step 2: Request an Access Token

POST /connect/token
Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=YOUR_CLIENT_ID
&client_secret=YOUR_CLIENT_SECRET

The response returns a bearer token. Access tokens expire after one hour — your application must handle token refresh automatically. Store the token expiry time and request a new token proactively before expiry rather than waiting for a 401 error on a live call.

Step 3: Authenticate API Requests

GET /xapi/v1/...
Authorization: Bearer YOUR_ACCESS_TOKEN

Triggering Outbound Calls

The core outbound call flow in V20:

  1. Retrieve the list of devices for the user who will originate the call using the XAPI endpoint
  2. Call the makeCall endpoint specifying the source extension/device and destination number
  3. The API asynchronously notifies your application as the call progresses through states (dialling → connected → ended)
  4. Your application handles each state transition to implement the desired workflow (play message, connect to agent, log outcome)

Community implementation examples (including V20 samples) are available in the luxzg/3CX-XAPI_examples GitHub repository — a valuable reference for SA developers building on the V20 API.

Reseller Insight: The biggest risk in V20 outbound automation is token expiry during a long-running call campaign. Build a token refresh mechanism before your first production deployment. A campaign dialling 500 numbers over 3 hours will cross the 1-hour OAuth token expiry — if your code doesn’t refresh the token, the 501st call attempt will fail with a 401 error and your campaign will silently stop.

Practical Use Cases for SA Businesses

1. Medical Practice Appointment Reminders

High-value use case for SA specialists and GP practices. The workflow:

  • Pull upcoming appointments from practice management software (GoodX, Elixir, Dr. Chrono) via API
  • Trigger outbound call 24 hours before each appointment
  • Play personalised text-to-speech reminder with patient name and appointment time
  • IVR: Press 1 to confirm, Press 2 to request callback, Press 3 to cancel
  • Log outcome back to practice management system

For an average 200-patient-per-week practice, this eliminates 10–15% no-shows and replaces 2–3 hours of receptionist time per week.

2. Retail and E-Commerce Delivery Notifications

  • Trigger automated call when order is out for delivery
  • IVR: Press 1 if someone is home to receive, Press 2 to reschedule
  • Reduces failed deliveries and second-attempt costs

3. Credit and Collections

  • Automated payment reminder calls 3 and 7 days before due date
  • IVR: Press 1 to be connected to a payment agent, Press 2 for a callback
  • Common use case for property management, insurance, and financial services in SA

4. Customer Satisfaction Surveys

  • Trigger call 24 hours after service interaction
  • Short IVR survey: rate your experience 1–5
  • Log NPS-style scores back to CRM

5. Lead Callback Automation

  • Web form submission triggers immediate outbound call to the sales team’s 3CX extension
  • When agent answers, system simultaneously dials the lead’s number
  • Connects both parties within 30 seconds of form submission
  • Significantly improves lead conversion rates vs. manual callback queues

CRM Integration Options for SA Businesses

HubSpot

  • Automatic call journalling in HubSpot Contact Card
  • New contact creation from inbound call caller ID
  • Click-to-Call from HubSpot interface using 3CX Browser Extension
  • Call outcome logging (connected, no answer, voicemail)

Zoho CRM

  • Contact synchronisation and automatic lookup on inbound calls
  • Call pop-ups displaying customer history when calls arrive
  • Call logging as CRM activity records
  • Click-to-Call from Zoho contact records

Salesforce

  • 3CX offers native Salesforce integration via the CRM Integration Wizard
  • Automatic call logging as Salesforce activities
  • Screen pop for inbound calls matching Salesforce contacts

Custom Integrations

For bespoke SA business systems (custom ERP, property management software, insurance platforms), the V20 API provides the foundation for custom-built integrations. The OAuth 2.0 standard authentication makes it straightforward to integrate with modern web applications and microservices architectures.

Rate Limits and Fair Usage

3CX implements dynamic rate limiting on the Call Control API based on system load, subscription tier, and usage patterns. Specific numeric limits are not publicly disclosed, but common triggers for rate limiting include:

  • Simultaneous outbound campaign calls exceeding the SC licence count
  • High-frequency API polling (the V20 async model should eliminate this need)
  • Circumventing limits via multiple application accounts or request proxying

A 429 TooManyRequests response indicates rate limiting has been triggered. Implement exponential backoff in your retry logic and respect the Retry-After header if present.

Frequently Asked Questions

Can the 3CX Call Control API trigger outbound calls automatically?

Yes. The 3CX V20 Call Control API allows applications to programmatically initiate outbound calls by specifying a source extension and destination number. The API uses OAuth 2.0 authentication and provides asynchronous call state notifications, enabling automated campaign dialling, appointment reminders, and CRM-triggered callbacks.

Does the 3CX V20 API still support barge functionality?

No. Barge functionality was removed in V20 — it’s no longer possible to barge into live calls via IVR, Call Flow Designer, or dummy user extensions. Supervisor monitoring use cases should be replaced with call recording combined with real-time transcription features available in 3CX V20 Update 8 and later.

How do I authenticate with the 3CX Call Control API in V20?

V20 uses OAuth 2.0 Client Credentials Grant. Create a client application in the 3CX Management Console, then POST to the /connect/token endpoint with your client_id and client_secret to receive a bearer token. Tokens expire after one hour; implement automatic token refresh in your application.

What CRM systems does 3CX integrate with?

3CX natively integrates with HubSpot, Zoho CRM, Salesforce, Microsoft Dynamics, and several others via the CRM Integration Wizard. For SA-specific business systems, the V20 Call Control API and XAPI provide the hooks needed for custom integration development.

Mechelle Gindra
Mechelle Gindra
Intelligence Team · South Africa

Mechelle Gindra is the managing editor and lead content strategist at Telecoms-Channel, South Africa's dedicated intelligence platform for telecoms resellers, ICT distributors, and channel partners. She oversees the editorial team's AI-assisted content production pipeline, ensuring vendor news, market analysis, and regulatory updates are accurate, timely, and actionable for the SA telecoms channel community. With deep expertise in the South African telecoms reseller ecosystem, Mechelle directs coverage of vendor partner programmes, ICASA regulatory developments, wholesale market dynamics, and channel business strategy. She is responsible for maintaining Telecoms-Channel's editorial standards, fact-checking processes, and corrections policy.