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.
The transfer-conf frame on the VICIdial agent screen is where most call routing happens, and transfer_conference is the Agent API function that drives that frame from outside the screen. One endpoint covers hangups, blind transfers, voicemail drops, routing to another agent, and full Three-way call conferences. For how it sits among the other call-control endpoints, see the VICIdial API overview.
When you'd use it
Reach for it whenever a custom button needs to move or join a call. A Cold transfer to a fixed number is a BLIND_TRANSFER; a Warm transfer where the agent talks to a colleague first is a LOCAL_CLOSER or a consultative DIAL_WITH_CUSTOMER. It also handles dropping a voicemail, leaving two parties in conference, and parking the customer while you dial out. Because it mirrors the on-screen frame, anything an agent can do with those buttons you can script here.
How the call works
sequenceDiagram
participant App
participant API as api.php
participant V as VICIdial
participant Third as Third Party
App->>API: transfer_conference (agent_user, value, opts)
API->>V: validate value and options
V->>Third: dial number or in-group
V->>V: bridge or release the leg
V-->>API: SUCCESS function set
API-->>App: result lineYou pick the action in value and add the options that action needs. For routing to a colleague the call lands in an Ingroup; for a 3-way the new leg is bridged onto the existing call so customer and third party hear each other. Which actions a user can fire depends on their level, as covered in VICIdial API user-level permissions.
Parameters
- value — REQUIRED. HANGUP_XFER, HANGUP_BOTH, BLIND_TRANSFER, LEAVE_VM, LOCAL_CLOSER, DIAL_WITH_CUSTOMER, PARK_CUSTOMER_DIAL, or LEAVE_3WAY_CALL.
- phone_number — OPTIONAL/REQUIRED, needed for any transfer or dial value.
- ingroup_choices — OPTIONAL/REQUIRED, needed for LOCAL_CLOSER and consultative transfers; a single active in-group, or DEFAULTINGROUP for the originating campaign's in-group.
- consultative — OPTIONAL, YES or NO, only with DIAL_WITH_CUSTOMER or PARK_CUSTOMER_DIAL.
- dial_override — OPTIONAL, YES or NO; dials exactly the number with no campaign phone code or prefix.
- group_alias and cid_choice — OPTIONAL, set the caller ID for DIAL_WITH_CUSTOMER or PARK_CUSTOMER_DIAL; cid_choice takes CAMPAIGN, AGENT_PHONE, CUSTOMER, or CUSTOM_CID.
- multi_dial_phones, md_check, tw_check — OPTIONAL, for Agent 3-way Press-1 calls and active-call checks.
An example call
http://server/agc/api.php?source=test&user=6666&pass=1234&agent_user=1000&function=transfer_conference&value=LOCAL_CLOSER&ingroup_choices=SALESLINEA blind transfer would be value=BLIND_TRANSFER&phone_number=8500, and a consultative 3-way would be value=DIAL_WITH_CUSTOMER&ingroup_choices=TEST_IN3&consultative=YES. A clean run returns a line like SUCCESS: transfer_conference function set - LOCAL_CLOSER|SALESLINE||YES|6666|M2141842580000000044|. Watch for ERROR: agent_user does not have a live call - 6666, ERROR: ingroup is not valid - XYZINGROUP, and ERROR: value is not valid - XYZFUNCTION|6666.
The gotcha
The required-but-optional fields catch everyone. phone_number is listed as optional in general but is mandatory for any dial or transfer value, and ingroup_choices is mandatory for LOCAL_CLOSER and consultative transfers, so leaving them off returns an ingroup or value error rather than doing nothing quietly. If you're firing repeated 3-way calls, set tw_check=YES so VICIdial refuses to start a new one while a previous 3-way is still live, which is how you avoid stacking ghost legs onto an agent. For controlling a remote agent's call, which is a separate and narrower path, see ra_call_control for remote agents.
Building custom transfer and conference controls is far easier on a dialer you own outright. VICIfast gives you a single-tenant VICIdial server with the agent API exposed, ready in under 40 seconds. See the plans to get a box to build on.
About VICIfast LLC
VICIfast LLC operates a managed VICIdial hosting + BYOI service for outbound and inbound call centers. We run the dialers, the carriers, the recordings pipeline, and the compliance plumbing so operators don’t have to.
Citing this article
VICIfast Engineering. “Driving transfers and conferences with transfer_conference”. VICIfast LLC, June 28, 2026. Retrieved from https://vicifast.com/blog/use-transfer-conference-api
Have questions?
Related posts
Guides & tutorials
Parking and unparking a call with the park_call function
Guides & tutorials
Controlling a remote agent's call with ra_call_control
Guides & tutorials
Starting and stopping recordings with the recording function
Guides & tutorials
Reading an inbound group's live state with in_group_status
You might be interested in
VICIfast newsletter
Liked this? Get the next one in your inbox.
We ship the kind of stuff you just read — concrete, numbers-first, no drip. One email when a new post goes live. Unsubscribe in one click.
Comments
No comments yet — be the first.