Skip to main content

VoiceLink Setup

This guide walks you through connecting your VoiceLink account to Vocobase for inbound and outbound calling.
Configure VoiceLink with the V2 API (PUT /api/v2/config/telephony/voicelink) for the default connection. To create multiple named VoiceLink connections, use POST /api/v2/telephony/connections. Once VoiceLink is configured, start calls programmatically using POST /calls/start with "provider": "voicelink".

Prerequisites

  • A VoiceLink account with a panel username and password
  • At least one VoiceLink DID (phone number) provisioned for voice
  • An approved Vocobase account with "voicelink" present in allowed_telephony_providers (check GET /config)
If "voicelink" is not yet listed in your account config’s allowed_telephony_providers, contact your Vocobase account manager to enable it.
1

Find your VoiceLink panel sign-in

Use the same username and password you use to sign in to the VoiceLink panel. Vocobase logs in with these to obtain a short-lived access token when it calls the VoiceLink API on your behalf — your password is stored encrypted and never sent back to you.
These credentials grant full access to your VoiceLink account. Treat them like any other production secret.
2

Identify the DID you will call from

Copy the VoiceLink number you plan to use as the caller ID.The number must be in E.164 format (e.g., +918011223344) and must be enabled for outbound voice.
Send the credentials through the V2 API. username, password, and from_number are required. base_url is accepted for backwards compatibility but ignored — the VoiceLink host is configured by Vocobase.
This endpoint updates your default VoiceLink connection. To create multiple named VoiceLink connections, use POST /api/v2/telephony/connections and store the returned connection_id.
A successful response confirms credentials were stored:
Your password is encrypted at rest and never returned in API responses.

About base_url

base_url is still accepted so existing integrations keep working, but the value is ignored. Vocobase sets the VoiceLink host itself.
Sending base_url has no effect. Omit it.
VoiceLink only accepts API connections originating from Indian IP addresses, so Vocobase routes all outbound VoiceLink calls through its own India-based egress. An account-supplied host would bypass that and the connection would be unable to place calls at all. base_url is returned in responses as an origin only (scheme and host, no path), which is why it may not match anything you sent. To rotate credentials later, send the same request again with the new values. Every field is required on each call — the endpoint replaces the stored credential set rather than patching it.

Confirm it is configured

GET /api/v2/config reports VoiceLink under allowed_telephony_providers and shows telephony.voicelink.configured: true once your credentials are saved. See Check provider access.

Make a test call

Start an outbound call with "provider": "voicelink".
VoiceLink uses a Generic WebSocket media model — Vocobase manages the media path.
Inbound calling is configured per DID through the guided dashboard workflow or POST /api/v2/voicelink/inbound-ready. Call transfer support depends on the active VoiceLink media integration and remains outside this setup guide.
If your account has more than one active VoiceLink connection, also pass connection_id — omitting it returns CONNECTION_AMBIGUOUS. See Bring Your Own Phone for the full request and response shape.

Managing DIDs

The from_number you send is stored as the default outbound DID. To manage multiple VoiceLink DIDs, create named V2 telephony connections and select the desired one with connection_id when starting outbound calls. For inbound setup, client and DID mapping, sync, and readiness checks, use the VoiceLink Management guide. It documents the safe inbound/outbound composers under /api/v2/voicelink/*, including connection_id support for multiple active VoiceLink connections.

Troubleshooting

  • Confirm "voicelink" is in allowed_telephony_providers from GET /config. If it is not, contact your Vocobase account manager.
  • Confirm username, password, and a from_number were saved (telephony.voicelink.configured: true).
  • Re-check the credentials against the VoiceLink panel sign-in. Re-send PUT /config/telephony/voicelink with the correct values.

Inbound calls are never answered, but setup reported success

Inbound resolution is scoped to the connection the call arrives on. A DID imported onto several VoiceLink connections only answers on the one whose bot VoiceLink is actually dialling, and only if the agent is assigned on that same connection.
  • List your connections: GET /api/v2/telephony/connections?provider=voicelink. If more than one is active, standardise on a single connection and remove the rest.
  • Re-run POST /api/v2/voicelink/inbound-ready against that connection, passing both connection_id and agent_id.
  • Confirm the result has data.ready: true and data.readiness.inbound.ready: true. A response whose steps contain assign_agent with status skipped is not a working setup.
If the DID was routed to a WebSocket bot directly in the VoiceLink panel rather than through inbound-ready, the bot URL is missing the signed connection token and every call is rejected. Re-run inbound-ready to regenerate it.

Calls ring but drop immediately

  • Confirm the destination number is reachable from your VoiceLink account.
  • Check the VoiceLink panel call logs for the exact drop reason.

Caller ID shows the wrong number

  • The from_number saved on your Vocobase VoiceLink connection must match a number VoiceLink has provisioned for your account, in E.164 format. Update it via PUT /config/telephony/voicelink if it does not.

Next steps

Telephony Connections

Create and manage multiple named connections.

VoiceLink Management

Manage clients, DIDs, mapping, and readiness.

Bring Your Own Phone

Overview of all supported BYOP providers.

Quick Start

Create an agent and make your first call.