VICIfast
All posts
Category

Guides & tutorials

Step-by-step walkthroughs for setting up, migrating, and tuning VICIdial.

207 posts.

What to export before leaving your current dialer

Before you shut down your old dialer, there is a specific set of data to pull. Miss one category and you will spend weeks reconstructing it.

Read post

Having a rollback plan for your VICIdial migration

A migration without a rollback plan is a bet that nothing goes wrong. Here is how to set up a credible fallback before cutover day.

Read post

Rebuilding CRM integrations after migrating to VICIdial

Your CRM integrations will not transfer from a cloud dialer to VICIdial automatically. Here is how to assess what you had and rebuild it correctly.

Read post

What you save moving off a per-seat platform to VICIdial

Per-seat SaaS dialers bill for every agent logged in. VICIdial's open-source model replaces that with a flat server cost plus a carrier you choose.

Read post

Why call centers leave Five9 for VICIdial

Five9 is a mature cloud platform, but per-seat pricing and infrastructure lock-in push some teams toward VICIdial's open-source model.

Read post

Why call centers leave Convoso for VICIdial

Convoso is built for high-volume outbound compliance. Teams leaving it usually cite seat pricing growth and the need for more direct infrastructure control.

Read post

How to migrate from Talkdesk to VICIdial

Leaving a hosted SaaS like Talkdesk for VICIdial means exporting your leads, dispositions, and recordings, then mapping them into your new dialer. Here is how to do it without losing data.

Read post

Running your old dialer and VICIdial in parallel during migration

How to split traffic between your existing dialer and VICIdial during migration, avoid double-dialing leads, measure side-by-side performance, and safely ramp VICIdial up.

Read post

How to migrate from Dialpad to VICIdial

Dialpad's AI-powered transcription and coaching features work well for inside sales teams. When outbound volume requires a true predictive dialer with full campaign control, VICIdial is the move. Here is what the migration looks like.

Read post

Moving from a self-hosted ViciBox to managed VICIdial

ViciBox gave you a working VICIdial fast, but now the box is aging and maintenance takes real time. Here is how to lift your data to a managed VICIdial host and stop owning the OS.

Read post

How to import your existing leads into VICIdial

Importing leads into VICIdial means cleaning your CSV, mapping columns to vicidial_list fields, handling phone formatting, time zones, and dedupe with vendor-lead-code. Here is the complete walkthrough.

Read post

How to migrate from Genesys to VICIdial

Genesys Cloud and PureConnect are powerful enterprise platforms, but licensing costs are steep and IVR flows are tightly coupled to the platform. This guide explains how to plan a migration to VICIdial without losing your routing logic.

Read post

Bringing your old call recordings to VICIdial

Moving historical call recordings when you switch to VICIdial requires understanding how VICIdial stores files, what naming conventions it expects, and whether re-importing is even worth the effort.

Read post

Retraining agents when you move to VICIdial

Moving agents to VICIdial is as much a people problem as a technical one. This post covers the agent screen differences, disposition and pause code changes, and a practical short training plan.

Read post

How to migrate from Vonage Contact Center to VICIdial

Vonage Contact Center (formerly NewVoiceMedia) combines CRM-native routing with a contact center platform, but licensing costs and Salesforce dependency drive teams to look for alternatives. This guide covers the migration path to VICIdial.

Read post

Planning a zero-downtime cutover to VICIdial

A structured migration-day plan covering pre-checks, phased campaign cutover, a go/no-go checklist, and who owns the rollback decision when something goes sideways.

Read post

Mapping your old dispositions to VICIdial statuses

How to build a disposition-to-status mapping table, which VICIdial statuses are reserved and cannot be renamed, and how to keep reporting comparable across the migration.

Read post

Porting your phone numbers when you move to VICIdial

Number porting when switching to VICIdial involves an LOA, your losing carrier, and a timeline measured in days not hours. Here is how to plan the port and avoid call center downtime.

Read post

Managed cloud VICIdial vs a DIY cloud install

Choosing between a managed VICIdial host and a self-installed cloud setup comes down to how much engineering time you want to trade for platform fees. Here is how the two paths compare.

Read post

How to migrate from NICE CXone to VICIdial

NICE CXone is one of the most feature-rich contact center platforms available, which also makes it one of the most expensive and complex to migrate away from. This guide covers the planning, data export, and cutover process for teams moving to VICIdial.

Read post

Closing the reporting gap after leaving a hosted platform

The metrics you lose when you move away from a managed dialer dashboard and how to rebuild them in VICIdial using real-time reports, agent stats, CSV exports, and optional QueueMetrics.

Read post

How to migrate from Aircall to VICIdial

Aircall is a lightweight cloud phone system that works well for small sales teams. When outbound volume grows and you need a real predictive dialer, VICIdial is the natural next step. Here is how to move your data.

Read post

How to migrate from OSDial to VICIdial

OSDial is a VICIdial fork with a near-identical database schema. Moving to a current VICIdial install is mostly a schema-diff exercise, not a re-platform. Here is the practical path.

Read post

How to migrate from RingCentral to VICIdial

RingCentral works well for unified communications, but outbound dialing teams often hit rate limits and per-seat costs that don't scale. This guide walks through exporting your data and cutting over to VICIdial.

Read post

How to migrate from Five9 to VICIdial

Moving off Five9 to VICIdial cuts per-seat licensing costs and gives you full control over your dialer. Here is how to export your data, map it into VICIdial, and cut over with minimal downtime.

Read post

Migrating to VICIdial: the complete guide

A calm, end-to-end plan for leaving a hosted dialer for VICIdial - what moves, what to export, how to rebuild, and how to cut over without downtime.

Read post

Rebuilding your call scripts in VICIdial

How to re-create your agent call scripts in VICIdial, use variable substitution from lead fields, attach scripts to campaigns and ingroups, and test them on a live agent screen.

Read post

How to migrate from Twilio Flex to VICIdial

Twilio Flex's consumption billing can spike unpredictably as your team scales. This guide covers exporting your Flex data, mapping it to VICIdial, and cutting over to a fixed-cost managed dialer.

Read post

How to migrate from Convoso to VICIdial

Convoso's per-minute and seat fees add up fast. This guide covers exporting your Convoso data, mapping it to VICIdial's structure, and running a clean cutover to your own managed dialer.

Read post

How to migrate from GoAutoDial to VICIdial

GoAutoDial and VICIdial share the same core Asterisk engine and a nearly identical database schema, making this migration mostly a config and data lift. Here is how to do it cleanly.

Read post

Moving your DNC list to VICIdial

Migrating your suppression list to VICIdial means exporting your existing DNC contacts, loading them into the internal DNC table, and verifying campaign-level settings before you dial a single number.

Read post

Keeping your leads and recordings on your own box

When you run VICIdial on a single-tenant server you own or supply, your lead data and call recordings stay on that machine — this post explains what that means in practice and how to protect it.

Read post

How to run VICIdial on DigitalOcean

DigitalOcean Droplets are a straightforward way to host VICIdial, but their firewall model, floating IPs, and thin default disk require a few deliberate choices before your dialer is production-ready.

Read post

How to run VICIdial on Azure

Microsoft Azure can host a VICIdial server, but the platform's NSG model, default outbound NAT, and storage options require more configuration steps than simpler cloud providers.

Read post

Why your VICIdial cloud box needs a public IP

A cloud VICIdial server without a routable public IP will fail to exchange SIP and RTP traffic with carriers, leaving agents with no audio.

Read post

Cloud IP reputation and your outbound calls

A fresh cloud IP address may carry a poor spam reputation from previous tenants, which can hurt your answer rates and STIR/SHAKEN attestation.

Read post

Bring-your-own-infrastructure (BYOI) VICIdial explained

BYOI lets you supply your own cloud server while a managed host installs and operates VICIdial on it, giving you control over the hardware without taking on the full installation burden.

Read post

Keeping carrier latency low from the cloud

Cloud region placement has a direct effect on RTP path length and call quality — here is how to reduce carrier latency for your VICIdial box.

Read post

Choosing a cloud region for your dialer

The cloud region where you deploy your VICIdial box affects call quality, data residency, and cost — here is how to pick the right one for your operation.

Read post

BYOI vs a fully managed VICIdial host

Comparing BYOI and a fully managed VICIdial host means weighing infrastructure control against operational simplicity — both models keep your data on a single-tenant server.

Read post

Opening the RTP port range on a cloud firewall

Cloud firewalls block inbound UDP by default, and a closed RTP port range is the most common reason VICIdial calls connect but carry no audio.

Read post

How to run VICIdial on Vultr

Vultr's global footprint and straightforward firewall groups make it a capable host for VICIdial, provided you size the instance correctly and open the full RTP UDP range before your first campaign.

Read post

How to run VICIdial on Linode/Akamai

Linode, now part of Akamai, offers solid dedicated-CPU instances and competitive pricing that suit a VICIdial deployment well, once you configure the firewall and Asterisk IP settings correctly.

Read post

Cloud security groups for a VICIdial server

Cloud security groups default to blocking everything — this guide lists every port VICIdial and Asterisk need open and explains why each one matters.

Read post

Snapshots and backups for a cloud VICIdial box

Cloud snapshots give you a fast path back to a known-good state, but they are not a substitute for off-box backup copies of your recordings and configuration.

Read post

Free TLS certificates for a cloud VICIdial box

Let's Encrypt provides free, auto-renewing TLS certificates that secure the VICIdial agent and admin web interfaces over HTTPS on any cloud server.

Read post

How to run VICIdial on OVH

OVH gives you bare-metal-class dedicated servers and affordable VPS options for VICIdial, but the network and firewall defaults need careful tuning before your first call lands cleanly.

Read post

Sizing cloud disk for call recordings

Call recordings are the biggest disk consumer on a VICIdial box, and undersizing storage is one of the most common mistakes when moving to the cloud.

Read post

Treating a cloud VICIdial box as rebuildable

The cloud mindset means designing your VICIdial setup so that destroying and recreating the server is a routine operation, not a crisis.

Read post

Cloud cost vs bare-metal for VICIdial

Choosing between cloud and bare-metal for VICIdial comes down to how predictable your load is and whether you can absorb upfront capital costs in exchange for lower long-term per-unit costs.

Read post

Pointing a subdomain at your cloud VICIdial box

Setting up a subdomain for your cloud VICIdial box is a straightforward DNS task, and getting it right unlocks a clean HTTPS agent URL and valid TLS certificates.

Read post

Scaling a cloud VICIdial box up for more agents

Vertical scaling on a cloud VICIdial box means resizing the VM to more vCPU and RAM, and understanding where VICIdial actually hits its limits before you resize.

Read post

The BYOI install checklist

Before a managed host can install VICIdial on your own cloud server, a handful of prerequisites need to be in place — this checklist walks through each one in order.

Read post

Managing the firewall on a cloud dialer

A VICIdial cloud server's firewall needs ongoing attention — carrier IP changes, agent network shifts, and OS upgrades can all silently break SIP or RTP.

Read post

Fixing NAT one-way audio in the cloud

One-way audio on a cloud VICIdial server almost always means Asterisk is advertising its private IP in SDP instead of the routable public address.

Read post

Cloud vs on-premise VICIdial

Choosing between a cloud VPS and an on-premise server for VICIdial comes down to who controls the hardware, who handles the ops work, and where your calls actually travel.

Read post

How to run VICIdial on Google Cloud

Running VICIdial on Google Cloud Compute Engine: machine type, an external static IP, VPC firewall rules for SIP 5060 and RTP 10000-20000, persistent disk, and NAT audio.

Read post

Personalizing VICIdial after a fresh install

A fresh VICIdial install boots generic. Set the timezone, server IP, passwords, branding, and a first campaign before you ever dial a live number.

Read post

Going from zero to a running dialer in under a minute

Pay, and in under 40 seconds you have a dedicated VPS running secured VICIdial on a branded HTTPS subdomain with root SSH. Bring your SIP carrier and start dialing.

Read post

Running the VICIdial database on its own server

Splitting MySQL onto a dedicated database server frees the telephony box for Asterisk and opens the door to replication. Here is when and how to do it.

Read post

Running SVN trunk vs a stable VICIdial release

Trunk gets the newest VICIdial fixes and features first, but a tagged release is tested and predictable. Here is how to pick the right one for a production dialer.

Read post

Why installing VICIdial yourself is harder than it looks

A clean VICIdial install means compiling Perl and Asterisk, sorting codecs and NAT, tuning MySQL, and wiring the keepalive cron. The 3am failure modes are where it bites.

Read post

How long a VICIdial install really takes

A clean VICIdial install runs 45 minutes if everything cooperates and a weekend if it doesn't. Here's where the time actually goes — and the managed alternative.

Read post

How to run VICIdial on AWS

Running VICIdial on AWS EC2: instance sizing, the Elastic IP for the public-IP requirement, security groups for SIP and the RTP UDP range, EBS for recordings, and the cost reality.

Read post

Web server vs telephony server roles

In a multi-server VICIdial, the web role runs Apache and PHP while the telephony role runs Asterisk. Here's what each does and why splitting them matters.

Read post

Running VICIdial in the cloud: the complete guide

Why teams move VICIdial to the cloud, the per-provider landscape, the universal gotchas, and how BYOI and managed hosting compare for a working dialer.

Read post

Sizing a VICIdial server for your agent count

VICIdial sizing comes down to concurrent calls, not just agents. Here is how to estimate cores, RAM, and disk from your dial ratio and agent count.

Read post

Rebuilding VICIdial conf files after changes

VICIdial regenerates Asterisk config from the database. Here is what the rebuild conf files step does, when it fires, and how to trigger it safely.

Read post

Setting up a VICIdial archive server

An archive server pulls old recordings and call logs off the dialer box so disk pressure never slows your live campaigns. Here is how to set one up.

Read post

Load balancing across VICIdial servers

Load balancing spreads agent and web traffic across telephony nodes in a VICIdial cluster. Here is what balances, what does not, and where the limits are.

Read post

Installing VICIdial on a VPS

A VPS is a fine home for VICIdial if you get three things right: a real public IP, an open RTP range, and NAT handled. Here's how each one bites.

Read post

How to upgrade VICIdial safely

Upgrading VICIdial is backup, then svn update, then the database upgrade script, then test. Do it in that order on a snapshot you can roll back to.

Read post

The VICIdial keepalive scripts and crontab

VICIdial keeps its dialer alive with a set of AST Perl scripts run from cron every minute. Here is what each one does and how the crontab holds the dialer up.

Read post

Self-installing VICIdial vs managed hosting

Self-install gives you full control and a real learning curve. Managed hosting gives you the same VICIdial in under 40 seconds. Here's the honest trade-off.

Read post

Running a VICIdial database schema upgrade

When VICIdial code expects new columns, you run the upgrade SQL script to bring the schema forward. Here is what the ALTER scripts do and how to run them safely.

Read post

Moving VICIdial to new server hardware

Migrating VICIdial to a new box is five jobs: dump the database, sync recordings, cut over the IP and DNS, rebuild the config, and re-register your trunks.

Read post

A backup strategy for a VICIdial server

A real VICIdial backup covers three things: the database, the recordings, and the config. Here is what to dump, how often, and where to keep it.

Read post

How to run VICIdial on Hetzner Cloud

A practical walkthrough of running VICIdial on a Hetzner Cloud VPS: instance type, public IPv4, the firewall rules for SIP and RTP, snapshots, and the audio caveats.

Read post

Installing audio codecs (g729 and friends) for VICIdial

G711 ships free with Asterisk; g729 and g723 are licensed. Here's what each codec costs in bandwidth, why g729 needs registration, and how to install it cleanly.

Read post

Setting the server time zone and NTP for VICIdial

VICIdial enforces call times and stamps every report by the server clock. Set the OS time zone, point at NTP, and match the GMT offset in System Settings.

Read post

Common VICIdial install errors and fixes

The install errors that actually stop a VICIdial build — missing Perl modules, Asterisk compile failures, MySQL grant problems, and SELinux — and how to clear each one.

Read post

Installing VICIdial: The Complete Guide

What installing VICIdial actually involves end to end: the software stack, install routes, hardware, registering the server in Admin, conf files, and going live.

Read post

Installing VICIdial from Scratch on Ubuntu

Prerequisites, pulling the source, compiling Asterisk, running the install script, and the Ubuntu-specific gotchas that trip up a from-scratch VICIdial build.

Read post

Modifying server settings in VICIdial Admin

The settings that matter most on the Modify Server page: max trunks, calls per second, active toggles, conf-file generation, and performance logging.

Read post

Operating System and Hardware Requirements for VICIdial

Which operating systems VICIdial supports, how to size CPU, RAM, and disk for your agent count, and why a dedicated box matters for a dialer.

Read post

Server conf file templates explained

How VICIdial conf file templates let you reuse one block of parameters across many phones and carriers, the Template ID rules, and the fields you must never put in one.

Read post

What Installing VICIdial Actually Involves

A plain tour of the moving parts a fresh VICIdial install needs: the telephony engine, the web app, the database, the keepalive crontab, and a carrier to dial out.

Read post

Installing VICIdial from Scratch on Debian

How a from-scratch Debian build differs from Ubuntu: package names, defaults, and the same compile-Asterisk-then-install flow, with the Debian-specific snags called out.

Read post

Single-server vs clustered VICIdial: when one box is enough

When a single VICIdial box handles your call volume, what a cluster of dialers adds, and the real tradeoffs in cost and complexity before you split things up.

Read post

Setting up MySQL/MariaDB for VICIdial

What VICIdial needs from its database: the asterisk database, the cron and DB users, MyISAM tables, basic tuning, and keeping the DB on the right box.

Read post

Adding a server in VICIdial Admin

How to add a new server record in VICIdial Admin: the five required fields, the rules for the server ID, and what happens after you submit the form.

Read post

Putting VICIdial behind HTTPS

Why the VICIdial agent and admin screens need TLS, how to get a certificate, why the browser webphone websocket demands a valid cert, and the basics of redirecting HTTP to HTTPS.

Read post

Installing VICIdial from the ViciBox ISO

The ViciBox ISO bundles the OS, Asterisk, and VICIdial into one prebuilt image. Here is what it includes, how the install flow works, and when the ISO is the right call.

Read post

First login to VICIdial Admin after install

Your first login to VICIdial Admin: signing in as 6666/1234, the Welcome and Initial Setup screens, setting your defaults, and enabling every admin page on user 6666.

Read post

Which Asterisk version VICIdial needs

How to pick an Asterisk version for a VICIdial build: supported branches, why the version field changes Local channel handling, and MeetMe versus ConfBridge.

Read post

The VICIdial install.pl Script, Step by Step

A walkthrough of what the VICIdial install script does: the prompts it asks, the database it builds, the scripts it copies, the crontab, and the conf files it writes.

Read post

The VICIdial post-install checklist

A practical did-it-actually-work checklist for a fresh VICIdial box: confirm Asterisk and keepalive are running, fix the clock, add a carrier, create a phone, load a list, place a test call.

Read post

Which ports to open for VICIdial

A plain-English firewall guide for VICIdial: the SIP and IAX signaling ports, the RTP media range, the web admin and agent ports, and why you almost never expose MySQL.

Read post

How to Call the VICIdial API From Your App (PHP, Python, Node)

The VICIdial Non-Agent and Agent APIs are plain HTTP GET requests — here is how to call them correctly from PHP, Python, and Node.js with real examples.

Read post

How to Push Leads From Your CRM Into VICIdial

Use the VICIdial Non-Agent API's add_lead function to push records from any CRM into a campaign list in real time, without touching the VICIdial admin panel.

Read post

How to Use the cm_dnc.agi Call Menu Script

cm_dnc.agi lets a VICIdial Call Menu mark an inbound caller's number as DNC or NI without agent involvement, then routes the call onward.

Read post

How to Use the CID_change.agi Script to Change Caller ID

CID_change.agi swaps the outbound caller ID on any call that passes through it, letting you pick a fixed number or pull from a CID group that matches the destination area code.

Read post

How to Write a Custom AGI Script for VICIdial

AGI scripts let you run any external program during a live call to look up data, change routing, or set variables — here is how to write one from scratch for VICIdial.

Read post

How to Use the cm_lookup.agi Call Menu Script

cm_lookup.agi searches your vicidial_list records from inside a Call Menu and routes the call based on whether a match is found.

Read post

How to Use the cm_phonesearch.agi Call Menu Script

cm_phonesearch.agi matches an inbound caller's phone number against vicidial_list and routes the call to the in-group tied to the best matching lead.

Read post

How to Use the cm_areacode.agi Call Menu Script

cm_areacode.agi reads the caller's area code, resolves it to a US state, and routes the call to the matching DID so inbound calls reach the right regional team.

Read post

How to Use the cm_send_url.agi Call Menu Script

cm_send_url.agi fires a URL defined in a VICIdial Settings Container from inside a Call Menu, letting you push call data to an external system without an agent.

Read post

How to Use the cm_fpg.agi Call Menu Script

cm_fpg.agi inserts a caller's phone number into a VICIdial Filter Phone Group from within a Call Menu, blocking future outbound dials to that number.

Read post

How to Build Click-to-Dial With the VICIdial Agent API

The VICIdial Agent API's external_dial function lets your web app or CRM trigger an outbound call on an agent's live session with a single HTTP request.

Read post

How to Sync Call Dispositions Out of VICIdial

Pull call outcome codes from VICIdial into your CRM or data warehouse using the Non-Agent API's update_log_entry export and direct database queries on vicidial_closer_log.

Read post

Listening to a phone with agi-phone_monitor.agi

Learn how agi-phone_monitor.agi lets managers silently monitor or barge into a live VICIdial agent session by dialing an extension and entering a user ID or phone extension.

Read post

Sending an agent a pop-up with the send_notification function

The send_notification Non-Agent API function pushes a customizable text message and optional confetti animation to one agent or an entire campaign at once.

Read post

Detecting answering machines with VD_amd.agi

VD_amd.agi runs after Asterisk's AMD application on outbound calls, routing the call to an agent if a human answered or dropping it cleanly if a machine was detected.

Read post

Setting a pause reason with the pause_code function

The pause_code Agent API function lets your system stamp a reason code on a paused agent's session, giving supervisors accurate break and wrap-up data in their reports.

Read post

What AGI is and how VICIdial uses it

AGI — Asterisk Gateway Interface — gives VICIdial application-level control over selected call features. This guide explains what AGI is and how the agi-*.agi script family works.

Read post

Changing the agent's active lead with switch_lead

Learn how the switch_lead Agent API function swaps the lead record on an agent's screen during a live inbound call without losing associated logs.

Read post

Setting channel variables with agi-set_variables.agi

Learn how agi-set_variables.agi exposes every vicidial_list field as a dialplan channel variable before an outbound call hits the trunk.

Read post

What agi-VDAD_ALL_inbound.agi does with an inbound call

agi-VDAD_ALL_inbound.agi consolidates thirteen separate inbound closer scripts into one, routing inbound calls to available agents based on caller ID handling method and in-group.

Read post

How to attach an AGI script to a call menu

VICIdial call menus accept AGI scripts as actions, letting you add database-driven routing and custom logic without editing extensions.conf directly.

Read post

IVR-driven verification surveys with agi-IVR_recording_verification.agi

agi-IVR_recording_verification.agi runs a fully automated third-party verification IVR — collecting yes/no key presses, recording the session, and logging to vicidial_ivr.

Read post

Pulling a fronter off a 3-way with force_fronter_leave_3way

The force_fronter_leave_3way Agent API function lets a closer's system command the original fronter to drop out of a three-way transfer call without any manual action.

Read post

Queueing a voicemail with the vm_message function

The vm_message Agent API function lets you pre-load a custom voicemail audio file for an agent to drop with one click when a call reaches an answering machine.

Read post

Stopping a fronter's audio with force_fronter_audio_stop

Learn how the force_fronter_audio_stop Non-Agent API function stops audio playback on a fronter's active agent session during a transferred call.

Read post

What agi-VDAD_ALL_outbound.agi does on the outbound side

agi-VDAD_ALL_outbound.agi consolidates eight separate outbound transfer scripts, routing answered outbound calls to agents or running survey, broadcast, and reminder campaigns.

Read post

Letting agents dial in with agi-AGENT_dial_in.agi

Understand how agi-AGENT_dial_in.agi lets VICIdial agents establish their phone connection by dialing in and entering their user ID and passcode.

Read post

Per-area-code caller ID with agi-VDADselective_CID.agi

agi-VDADselective_CID.agi runs before each outbound call is placed and selects a caller ID number based on the lead's area code, improving local-number matching for outbound campaigns.

Read post

Capturing key presses with agi-dtmf.agi

agi-dtmf.agi plays DTMF tones or signals stored in the callerid field, supporting digits, letters translated to dialpad equivalents, pauses, and a signal-only mode.

Read post

How agi-DID_route.agi sends inbound calls where they belong

Learn how agi-DID_route.agi reads the dialed number on an inbound call and routes it to the right in-group, call menu, or destination based on per-DID settings.

Read post

Reading the inbound queue depth with calls_in_queue_count

The calls_in_queue_count Agent API function returns the number of inbound calls waiting that could be routed to a specific agent, giving external systems a real-time queue signal.

Read post

Looking up the calling number with VDL_CID_lookup.agi

VDL_CID_lookup.agi looks up an inbound caller's number against vicidial_list to find the matching lead before routing the call, so agents see existing lead data immediately.

Read post

Recording non-agent calls with agi-NVA_recording.agi

agi-NVA_recording.agi records calls that bypass the VICIdial agent screen, logging them to user_call_log or call_log and optionally searching vicidial_list for the dialed number.

Read post

Least-cost routing of outbound calls with agi-LCR-Route.agi

Learn how agi-LCR-Route.agi looks up the cheapest carrier for each outbound call by NPANXX prefix and sets the LCRTRUNK dialplan variable before dialing.

Read post

Silent agent monitoring with agent_monitor.agi

agent_monitor.agi lets supervisors silently listen to a live VICIdial agent session by dialing an extension — no agent interaction needed.

Read post

Recording IVR prompts over the phone with agi-record_prompts.agi

agi-record_prompts.agi lets you record audio prompts by dialing a phone extension, choosing the format, and saving files that IVR dialplans can play back immediately.

Read post

Routing inbound calls to a logged-in agent with agi-AGENT_route.agi

Learn how agi-AGENT_route.agi routes inbound calls directly to a specific logged-in VICIdial agent using a call menu or custom dialplan entry.

Read post

Reading one agent's live status with agent_status

How the agent_status non-agent API returns one agent's real-time state, current call, and sub-status in a single line you can poll.

Read post

Updating the agent form remotely with update_fields

How the update_fields Agent API function rewrites the customer information panel on a logged-in VICIdial agent's screen and reloads panels.

Read post

Listing logged-in agents with logged_in_agents

Pull a live roster of every agent currently logged in to VICIdial, with status and session details, using the logged_in_agents API call.

Read post

Adding and dialing a lead with external_add_lead

How the external_add_lead Agent API function drops a new lead into a logged-in agent's manual dial list, with optional DNC checks.

Read post

Listing audio prompts with the sounds_list API

How the sounds_list non-agent API outputs the audio files in your VICIdial audio store, with format and sort options.

Read post

Ringing an agent's phone with the call_agent function

How the call_agent agent-api function places a call from a VICIdial agent session to the agent's own phone.

Read post

Playing audio to a caller with the audio_playback function

How the audio_playback agent-api function plays, stops, pauses, and resumes an audio file in a live VICIdial agent session.

Read post

Launching the agent's webphone with webphone_url

How the webphone_url agent-api function displays or launches the configured webphone URL for a live VICIdial agent session.

Read post

Click-to-dial from your app with external_dial

Trigger a manual dial on a logged-in agent's screen from your own app using the external_dial Agent API function and its lead-search options.

Read post

Seeing an agent's inbound groups with agent_ingroup_info

How the agent_ingroup_info non-agent API shows the in-group and outbound auto-dial settings a logged-in agent currently has.

Read post

How to drive the agent screen with the Agent API

The Agent API acts on a live, logged-in agent's screen. Here is the function, user, pass, source pattern and the plain-text responses you'll get back.

Read post

Switching an agent's inbound groups with change_ingroups

How the change_ingroups Agent API function adds, removes, or replaces the in-groups a logged-in VICIdial agent takes calls from.

Read post

Starting a silent listen with the blind_monitor API

How the blind_monitor non-agent API dials a supervisor's phone and drops them into an agent's live session to monitor, barge or swap.

Read post

Reading the agent's current lead with st_get_agent_active_lead

Look up the lead a logged-in agent has on their screen using a CRM AgentID, returning lead_id, phone, and a few key fields.

Read post

Agent-controlled stereo recording with stereo_recording

How the stereo_recording agent-api function begins, ends, and reports a two-channel recording on a live VICIdial agent session.

Read post

Sending DTMF tones from the agent screen with send_dtmf

Push a string of touch-tones into an agent's live session to drive an IVR menu, with pound, star, and silence encoded as P, S, and Q.

Read post

Pausing and resuming an agent with external_pause

How the external_pause Agent API function pauses or resumes a logged-in VICIdial agent from an outside system, and what happens mid-call.

Read post

Pulling a disposition report with call_dispo_report

Get a disposition breakdown by campaign, ingroup, or DID over a date range with the call_dispo_report Non-Agent API function.

Read post

Ending an agent's call with external_hangup

How the external_hangup Agent API call drops the live customer call on a logged-in agent's screen from an outside system.

Read post

Setting a disposition from outside with external_status

Disposition a call on a logged-in agent's screen from your own app with external_status, including scheduled callbacks and their options.

Read post

Reading an inbound group's live state with in_group_status

How the in_group_status non-agent API returns calls waiting and agent counts for one or more inbound groups in a single line.

Read post

Starting and stopping recordings with the recording function

How the recording agent-api function starts, stops, and reports call recordings against a logged-in VICIdial agent session.

Read post

Controlling a remote agent's call with ra_call_control

Hang up or transfer a call that a remote agent is handling, with optional disposition and status, using three supported stages.

Read post

Parking and unparking a call with the park_call function

Send a customer or a third party to the park extension and grab them back, including IVR park and swap options, from a logged-in agent session.

Read post

Driving transfers and conferences with transfer_conference

Hang up, blind-transfer, send to voicemail, dial another agent, or build a 3-way call from an agent session through one flexible API function.

Read post

Validating a number before dialing with check_phone_number

Check that a phone number is the right length, in a dialable area code, and not on a DNC list before you dial it.

Read post

How to create a calling list with the add_list API

Create a new VICIdial calling list over HTTP with the add_list function. Required fields, optional settings, copying custom fields, and responses.

Read post

Exporting agent stats with agent_stats_export

Pull agent activity statistics for a date range with the agent_stats_export API — talk time, pauses, sessions, and per-campaign grouping.

Read post

How to feed the dial hopper with hopper_bulk_insert

Push a batch of lead_ids straight into the dial hopper from one API call, with priority and local-time checks.

Read post

Changing a DID's routing with update_did

Edit an inbound DID's description, routing target, recording flag, and more from a single API call with update_did.

Read post

Unblocking a number with delete_fpg_phone

Call delete_fpg_phone to pull a number out of a Filter Phone Group so the dialer stops skipping it.

Read post

Editing a phone group with update_phone_alias

Change or delete an existing phone alias over HTTP with update_phone_alias. Required fields, the delete_alias flag, permissions, and responses.

Read post

Grouping phones with add_phone_alias

Create a phone alias that maps one login to several phones using the add_phone_alias Non-Agent API call. Fields, permissions, and example responses.

Read post

Reading live call-status counts with call_status_stats

Get per-campaign and per-ingroup call counts with hourly and status breakdowns from the call_status_stats API — fields, filters, and output format.

Read post

Changing list settings with update_list

Edit, reset, or delete a VICIdial calling list over HTTP with update_list. Required fields, the reset and delete flags, custom fields, and responses.

Read post

Finding a call recording with the recording_lookup API

Use the recording_lookup function on the Non-Agent API to find call recording URLs by agent, date, or lead id, with format and permission notes.

Read post

Listing your campaigns with campaigns_list

Dump every campaign's ID, dial method, dial level and dial prefix in one read-only call with the VICIdial campaigns_list API.

Read post

How to change campaign settings with update_campaign

Change dial level, dial method, hopper level and more on a live VICIdial campaign over HTTP with the update_campaign API.

Read post

Exporting inbound-call logs with did_log_export

Pull a single day of inbound calls to a DID with the did_log_export API function — required fields, output format, permissions, and errors.

Read post

Changing a registered phone with update_phone

Edit or delete an existing extension over HTTP with the update_phone Non-Agent API function, including required fields, permissions, and responses.

Read post

How to add a number to the DNC list with add_dnc_phone

Use the add_dnc_phone API to push a phone number onto a campaign or internal DNC list without opening the admin screen.

Read post

Reading the dial hopper with hopper_list

Pull the live contents of a campaign's dial hopper, lead by lead, with the hopper_list API call.

Read post

How to create an inbound DID with the add_did API

Create an inbound DID and route it to an in-group, extension or call menu over HTTP with the VICIdial add_did API function.

Read post

Cloning a DID with copy_did

Duplicate an existing inbound DID's routing onto one or more new numbers in a single API call with copy_did.

Read post

Editing campaign dial presets with update_presets

Add, edit, list or delete a campaign's quick-dial presets over HTTP using the VICIdial update_presets API function.

Read post

How to register a SIP phone with the add_phone API

Use the add_phone API to create a SIP extension on your VICIdial server from code instead of clicking through the admin screen.

Read post

Reading a list's details with list_info

Pull a lead list's name, campaign, active flag and lead counts straight from VICIdial with the list_info API function.

Read post

Pulling every call to a number with phone_number_log

Export every inbound and outbound call placed to one or more phone numbers with the phone_number_log API — fields, filters, and the indexing caveat.

Read post

Blocking a number with the add_fpg_phone API

Use add_fpg_phone to push a phone number into a Filter Phone Group so the dialer skips it without touching your DNC lists.

Read post

Removing a number from DNC with delete_dnc_phone

Call the delete_dnc_phone API to pull a phone number back off a campaign or internal DNC list when it was added by mistake.

Read post

Stopping duplicate leads with add_lead duplication checks

How the add_lead duplicate_check options keep the same number from landing in your dialer twice, with the scope flags and X-day variants explained.

Read post

The Non-Agent API vs the Agent API: which one you need

VICIdial ships two HTTP APIs that look alike but do different jobs. Here is how to tell them apart and pick the right endpoint for your task.

Read post

How to push a lead into VICIdial with the add_lead API

A walkthrough of the add_lead Non-Agent API call: required fields, an example HTTP request, and how to drop a new lead into a dialing list.

Read post

How to create an agent account with the add_user API

A step-by-step guide to the add_user non-agent API, which creates a new VICIdial agent account from your own application.

Read post

Cloning an agent account with copy_user

How to use the copy_user non-agent API to clone an existing VICIdial agent account to a new login in one call.

Read post

How to call the VICIdial Non-Agent API over HTTP

A plain walkthrough of building your first VICIdial Non-Agent API call: the URL, the required parameters, and a working example you can paste into a browser.

Read post

Pulling a full lead record with lead_all_info

How to use the lead_all_info non-agent API to read every field of a VICIdial lead, including custom fields, from your own app.

Read post

How to change an existing lead with the update_lead API

Use the update_lead Non-Agent API call to edit a lead in place, match it by lead ID, vendor code, or phone number, and write back changed fields.

Read post

Moving a lead back from the archive with lead_dearchive

A walkthrough of the lead_dearchive non-agent API, which pulls one lead out of the VICIdial archive table and back into the active list.

Read post

How to change a call's status with update_log_entry

A short guide to using the update_log_entry non-agent API to correct the status on a single call log record in VICIdial.

Read post

How to change agent settings with the update_user API

A walkthrough of the update_user non-agent API call, the fields it can change, the permissions it needs, and the responses it returns.

Read post

How to secure the VICIdial API with HTTPS and a dedicated user

Two simple steps protect your VICIdial API: serve it over HTTPS so credentials are not exposed, and call it from a narrow, purpose-built user account.

Read post

The VICIdial API and AGI guide: every way to integrate VICIdial with outside systems

A beginner map of how VICIdial talks to outside systems: the non-agent API, the agent API, and AGI dialplan scripts, with links to deeper guides.

Read post

Deleting and resetting leads with update_lead options

The update_lead call does more than edit fields: it can delete a lead, wipe its custom data, or reset its called flag so the campaign dials it again.

Read post

API user levels and permissions explained

Why some VICIdial API calls return a permission error and others do not, and how user_level plus a few checkboxes decide what each account can do.

Read post

Reading an agent's settings with user_details

A short guide to the user_details non-agent API call: what it returns, the permissions it needs, and when to use it over agent_status.

Read post

How to read VICIdial API SUCCESS and ERROR responses

VICIdial API replies are plain text starting with SUCCESS, ERROR, or NOTICE. Here is how to parse them so your code knows what happened.

Read post

Looking up leads from your app with lead_search

How to use the lead_search non-agent API to find lead IDs by phone number from your own application or CRM.

Read post

How to set custom fields when you add a lead by API

Turn on custom_fields in the add_lead call and pass your own list-specific data alongside the standard name and phone fields.

Read post

What the API source parameter is for

Every VICIdial API call takes a source parameter. It does not change behavior, but it is the label that makes your API logs readable.

Read post

Adjusting remote-agent lines with update_remote_agent

How to use the update_remote_agent non-agent API call to change a remote agent's line count, campaign, and active status from a script.

Read post

How to update many leads at once with batch_update_lead

The batch_update_lead call applies one set of field values to a comma-separated list of lead IDs in a single request, ideal for bulk changes.

Read post