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 postHaving 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 postRebuilding 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 postWhat 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 postWhy 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 postWhy 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 postHow 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 postRunning 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 postHow 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 postMoving 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 postHow 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 postHow 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 postBringing 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 postRetraining 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 postHow 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 postPlanning 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 postMapping 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 postPorting 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 postManaged 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 postHow 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 postClosing 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 postHow 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 postHow 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 postHow 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 postHow 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 postMigrating 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 postRebuilding 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 postHow 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 postHow 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 postHow 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 postMoving 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 postKeeping 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 postHow 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 postHow 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 postWhy 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 postCloud 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 postBring-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 postKeeping 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 postChoosing 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 postBYOI 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 postOpening 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 postHow 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 postHow 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 postCloud 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 postSnapshots 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 postFree 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 postHow 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 postSizing 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 postTreating 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 postCloud 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 postPointing 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 postScaling 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 postThe 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 postManaging 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 postFixing 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 postCloud 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 postHow 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 postPersonalizing 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 postGoing 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 postRunning 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 postRunning 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 postWhy 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 postHow 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 postHow 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 postWeb 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 postRunning 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 postSizing 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 postRebuilding 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 postSetting 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 postLoad 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 postInstalling 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 postHow 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 postThe 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 postSelf-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 postRunning 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 postMoving 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 postA 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 postHow 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 postInstalling 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 postSetting 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 postCommon 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 postInstalling 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 postInstalling 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 postModifying 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 postOperating 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 postServer 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 postWhat 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 postInstalling 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 postSingle-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 postSetting 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 postAdding 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 postPutting 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 postInstalling 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 postFirst 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 postWhich 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 postThe 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 postThe 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 postWhich 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 postHow 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 postHow 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 postHow 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 postHow 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 postHow 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 postHow 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 postHow 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 postHow 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 postHow 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 postHow 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 postHow 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 postHow 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 postListening 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 postSending 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 postDetecting 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 postSetting 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 postWhat 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 postChanging 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 postSetting 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 postWhat 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 postHow 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 postIVR-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 postPulling 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 postQueueing 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 postStopping 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 postWhat 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 postLetting 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 postPer-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 postCapturing 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 postHow 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 postReading 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 postLooking 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 postRecording 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 postLeast-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 postSilent 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 postRecording 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 postRouting 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 postReading 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 postUpdating 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 postListing 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 postAdding 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 postListing 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 postRinging 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 postPlaying 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 postLaunching 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 postClick-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 postSeeing 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 postHow 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 postSwitching 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 postStarting 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 postReading 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 postAgent-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 postSending 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 postPausing 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 postPulling 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 postEnding 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 postSetting 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 postReading 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 postStarting 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 postControlling 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 postParking 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 postDriving 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 postValidating 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 postHow 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 postExporting 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 postHow 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 postChanging 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 postUnblocking 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 postEditing 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 postGrouping 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 postReading 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 postChanging 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 postFinding 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 postListing 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 postHow 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 postExporting 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 postChanging 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 postHow 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 postReading 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 postHow 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 postCloning 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 postEditing 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 postHow 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 postReading 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 postPulling 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 postBlocking 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 postRemoving 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 postStopping 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 postThe 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 postHow 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 postHow 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 postCloning 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 postHow 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 postPulling 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 postHow 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 postMoving 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 postHow 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 postHow 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 postHow 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 postThe 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 postDeleting 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 postAPI 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 postReading 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 postHow 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 postLooking 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 postHow 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 postWhat 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 postAdjusting 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 postHow 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