For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Connect
BlogHelp CenterAPI PricingSign up
OverviewElevenCreativeElevenAgentsElevenAPIReception AIAPI referenceChangelog
OverviewElevenCreativeElevenAgentsElevenAPIReception AIAPI referenceChangelog
  • Get started
    • Overview
    • Quickstart
  • Configure
    • Overview
    • Voice & language
    • Knowledge base
    • Tools
    • Personalization
    • Authentication
  • Deploy
    • Overview
    • Environment variables
      • SIP trunk
        • Vonage
        • Telnyx
        • Plivo
    • WhatsApp
    • Batch calls
  • Monitor
    • Overview
    • Users
    • Testing
    • Experiments
    • Versioning
    • Conversation Analysis
    • Analytics
    • Real-time monitoring
    • OpenTelemetry traces
    • Privacy
    • Cost optimization
    • CLI
  • Advanced
    • Events
    • Custom models
    • LLM cascading
    • Post-call webhooks
  • Resources
    • UI components
  • Guides
    • Chat Mode
    • Burst pricing
    • ElevenLabs' docs agent
    • Scaling user interviews
    • Simulate Conversations
LogoLogo
Login
Login
Connect
BlogHelp CenterAPI PricingSign up
On this page
  • Overview
  • How it works
  • Setup
  • Cloud deployment
DeployTelephonyTelephony providers

Vonage integration

Integrate ElevenAgents with Vonage voice calls using a WebSocket connector.
Was this page helpful?
Previous

Telnyx SIP trunking

Connect Telnyx SIP trunks with ElevenLabs Agents.
Next
Built with

Overview

Connect ElevenLabs Agents to Vonage Voice API or Video API calls using a WebSocket connector application. This enables real-time, bi-directional audio streaming for use cases like PSTN calls, SIP trunks, and WebRTC clients.

How it works

The Node.js connector bridges Vonage and ElevenLabs:

  1. Vonage initiates a WebSocket connection to the connector for an active call.
  2. The connector establishes a WebSocket connection to the ElevenLabs Agents endpoint.
  3. Audio is relayed: Vonage (L16) -> Connector -> ElevenLabs (base64) and vice-versa.
  4. The connector manages conversation events (user_transcript, agent_response, interruption).

Setup

1

1. Get ElevenLabs credentials

  • API Key: API keys are located in the API Keys tab on the Developers page which can be found linked in the sidebar.
  • Agent ID: Find the agent in the ElevenAgents dashboard. Once you have selected the agent click on the settings button and select “Copy Agent ID”.
2

2. Configure the connector

Clone the repository and set up the environment file.

$git clone https://github.com/nexmo-se/elevenlabs-agent-ws-connector.git
$cd elevenlabs-agent-ws-connector
$cp .env.example .env

Add your credentials to .env:

.env
$ELEVENLABS_API_KEY = YOUR_API_KEY;
$ELEVENLABS_AGENT_ID = YOUR_AGENT_ID;

Install dependencies: npm install.

3

3. Expose the connector (local development)

Use ngrok, or a similar service, to create a public URL for the connector (default port 6000).

$ngrok http 6000

Note the public Forwarding URL (e.g., xxxxxxxx.ngrok-free.app). Do not include https:// when configuring Vonage.

4

4. Run the connector

Start the application:

$node elevenlabs-agent-ws-connector.cjs
5

5. Configure Vonage voice application

Your Vonage app needs to connect to the connector’s WebSocket endpoint (wss://YOUR_CONNECTOR_HOSTNAME/socket). This is the ngrok URL from step 3.

  • Use Sample App: Configure the sample Vonage app with PROCESSOR_SERVER set to your connector’s hostname.
  • Update Existing App: Modify your Nexmo Call Control Object to include a connect action targeting the connector’s WebSocket URI (wss://...) with content-type: audio/l16;rate=16000. Pass necessary query parameters like peer_uuid and webhook_url.
6

6. Test

Make an inbound or outbound call via your Vonage application to interact with the ElevenLabs agent.

Cloud deployment

For production, deploy the connector to a stable hosting provider (e.g., Vonage Cloud Runtime) with a public hostname.