Skip to main content

Telephony Connections

Use V2 telephony connections when a partner needs more than one carrier account, trunk, or DID set for the same provider. Each connection has its own connection_id, editable name, credentials, and phone numbers.
The provider-specific PUT /api/v2/config/telephony/* endpoints remain backward compatible and update that provider’s default connection. For new BYOP builds, prefer POST /api/v2/telephony/connections so every connection is named and addressable.

Supported providers

MCube connections take jwt_token and exe_number instead of account credentials — see MCube Setup. The exenumber is stored as the connection’s default phone number and may be in national format (no + required).

Create a connection

Create a connection by passing a provider, a human-readable name, and the provider credentials. The response returns the stable connection_id to store in your own system.

List connections

Use GET /api/v2/telephony/connections to retrieve the connections available to the authenticated partner. Pass provider to narrow the list.

Retrieve a single connection

Use GET /api/v2/telephony/connections/{connection_id} to fetch one connection by its ID, including every active DID on the connection and the agent linked to each. This is the endpoint to poll when you want to keep your own system in sync with the numbers and agent assignments shown in the Vocobase dashboard.
Only active DIDs are returned, each with its linked agent ({ id, name }) or null when the number is unassigned. The connection must be active and owned by the authenticated partner, otherwise the API returns 404 NOT_FOUND.
The list endpoint returns this same connection shape for every connection at once. Use the single-connection endpoint when you already hold the connection_id and want the current DID → agent mapping for just that one connection.

Start calls with a connection

When a partner has one active connection for a provider, existing calls that pass only provider continue to work:
When a partner has multiple active connections for the same provider, pass connection_id so routing is deterministic:
POST /api/v2/calls/start does not accept a per-call from_number override. The caller ID is resolved from the selected connection: Twilio uses the connection default number, Exotel uses the saved caller ID, and Plivo, Vobiz, Tata Smartflo, SIP, and VoiceLink prefer an agent-bound active number before the connection default. The resolved value is returned as from_number in the response. If connection_id is omitted while multiple active connections exist for that provider, the API returns CONNECTION_AMBIGUOUS.

Rename a connection

Only the display name is editable through this endpoint. To rotate credentials, create a new connection or use the provider-specific config endpoint for the default connection.

Disconnect a connection

Disconnecting a connection disables it for new outbound calls and inbound routing. Existing completed call records remain available.

Phone-number ownership

A phone number can be active on multiple connections for outbound caller ID reuse. Vocobase only rejects a duplicate when more than one active row for the same DID is enabled for inbound routing. For Plivo, Vobiz, and MCube inbound DIDs, pass connection_id when syncing numbers for a specific connection. Vobiz and MCube accept an explicit numbers array; MCube DIDs must use E.164 format:
Use GET /api/v2/phone-numbers?provider=MCUBE&connection_id=... to retrieve the new row IDs, then PUT /api/v2/phone-numbers/{id} with agent_id and inbound_enabled: true to make a DID inbound-ready.

Dashboard visibility

Connections created through the V2 API appear in the Vocobase dashboard telephony settings with their connection name and ID. Use the same connection_id from the dashboard or API response when starting calls from partner systems.

Next steps

Bring Your Own Phone

Review the BYOP provider overview.

Inbound Calls

Assign inbound numbers to agents.