🇪🇺 Fixed egress for agent API calls

🇪🇺 Static IP for LiveKit

LiveKit Cloud agents call your backend APIs, but LiveKit confirmed it has no fixed CIDR range for hosted agents. Your WAF blocks them. Route those outbound calls through two fixed EU IPs with one env var, so agents stop getting blocked.

agent_api.py

# Self-hosted agent env var

HTTPS_PROXY=https://user:pass@eu-01.outboundgateway.com:8443

import requests

r = requests.post(

  "https://backend.your-app.eu/api/handle",

  json={"text": transcript})

)

Why LiveKit agents get blocked by your WAF

LiveKit staff confirmed: there is no fixed CIDR range for hosted agents. Agent requests come from dynamic IPs that your firewall can't predict.

No fixed CIDR range for agents

LiveKit staff confirmed on their forum: "We do not currently have a fixed CIDR range for LiveKit-hosted agents." Even the EU IPs in the docs don't cover all outbound calls from agents. Your WAF can't allowlist what it can't predict.

Agent API calls come from dynamic IPs

When an agent in LiveKit Cloud calls your backend API to look up data, trigger a function, or hand off context, that request comes from whatever IP the cloud infra assigned at that moment. Your WAF sees an unknown source and blocks it.

Token auth alone isn't enough

LiveKit suggests using token auth instead of IP allowlisting, but many enterprises require both. Security policies mandate IP allowlisting for backend APIs behind a WAF, and token auth doesn't satisfy that requirement on its own.

Self-hosting agents adds ops burden

LiveKit suggests self-hosting agents as a workaround to control the IP, but that means managing infrastructure, scaling, and uptime yourself. You wanted the simplicity of LiveKit Cloud, not a deployment project.

When your WAF blocks the agent's API call

"The agent tried to call our backend API, but the WAF blocked it because we don't know what IP it will come from."

You need a fixed address the agent always calls from, so your WAF can allowlist it once.

The Solution

Route agent outbound API calls through a fixed EU IP pair

LiveKit agent

HTTPS Proxy

(Static EU IP)

Your backend API

Every outbound call your LiveKit agent makes to your backend API leaves from the same pair of EU addresses. Your WAF allowlists both once, and every future agent call passes. Two IPs with automatic failover.

Works for self-hosted agents. If you run your LiveKit agents outside LiveKit Cloud (as LiveKit recommends for IP control), set HTTPS_PROXY in the agent runtime and every API call routes through your fixed IPs.
No need to chase LiveKit's dynamic IPs. Your WAF sees a predictable, known source for every agent request.
TLS passthrough. Your API tokens, transcripts, and agent payloads stay unreadable at the proxy.

What this gives a LiveKit agent deployment

Two fixed EU addresses your WAF can allowlist once. No more dynamic IPs to chase, no more blocks mid-conversation.
Keeps you on LiveKit Cloud for WebRTC. You don't have to self-host the whole platform, just route the agent's outbound API calls through the proxy.
Satisfies enterprise security policies that require IP allowlisting alongside token auth. Your WAF gets a known source; your API gets the token.
EU egress for agent traffic. If your backend runs in the EU, the agent's calls stay within European infrastructure.
No agent rewrite. Set one env var in the agent runtime and your existing API call code starts routing through the proxy.

Who it's built for

Voice AI developers

Building LiveKit agents that call backend APIs behind a WAF, who are tired of dynamic IP blocks breaking conversations mid-call.

Enterprise IT teams

Managing the WAF that protects backend APIs, who need a predictable IP to allowlist for LiveKit agent access.

EU voice AI teams

Running LiveKit agents for EU-regulated workloads who need agent API calls to leave from European infrastructure.

Security architects

Designing zero-trust access for backend APIs, who need IP allowlisting to work alongside token auth for LiveKit agents.

Implementation

Set HTTPS_PROXY in your self-hosted LiveKit agent runtime. Outbound API calls to your backend then leave through your fixed EU IP.

Python (LiveKit agent)

If your agent uses requests to call backend APIs, setting HTTPS_PROXY is all you need.

# env var in agent runtime
HTTPS_PROXY=https://user:pass@eu-01.outboundgateway.com:8443
BACKEND_API_TOKEN=your_token

import os
import requests

# requests honours HTTPS_PROXY from the environment
r = requests.post(
    "https://backend.your-app.eu/api/handle",
    headers={"Authorization": f"Bearer {os.environ['BACKEND_API_TOKEN']}"},
    json={"text": transcript},
)

print(r.status_code)  # 200, from your fixed EU IP

Node.js (fetch)

In Node, pass the proxy explicitly with https-proxy-agent.

// env var set in the agent runtime
HTTPS_PROXY=https://user:pass@eu-01.outboundgateway.com:8443

const { HttpsProxyAgent } = require('https-proxy-agent');

const agent = new HttpsProxyAgent(process.env.HTTPS_PROXY);

// Every backend API call leaves through your fixed EU IP
const res = await fetch('https://backend.your-app.eu/api/handle', {
  method: 'POST',
  headers: { 'Authorization': 'Bearer ..' },
  body: JSON.stringify({ text: transcript }),
  agent,
});

Two IPs, no WAF chasing

Your account comes with two static IP addresses (for example 51.xx.xx.10 and 51.xx.xx.11). Allowlist both on your WAF. If one proxy node is briefly unavailable, traffic shifts to the other. Your LiveKit agent never sees a disruption.

📖 Want the longer version? Worked examples, error handling, and other languages are in the Python SSL Proxy Guide, Node.js Guide, and the rest of the docs.

EU egress for voice agent traffic

If your backend runs in the EU, your LiveKit agent's API calls should stay in Europe too.

European infrastructure

The proxy runs in EU data centres, so your LiveKit agent's outbound API calls leave from European infrastructure.

GDPR-conscious by design

Because TLS passes straight through, the proxy never decodes transcripts, API tokens, or agent payloads. It forwards encrypted bytes; it doesn't read them.

No transatlantic detours

Agent API traffic doesn't bounce through US infrastructure on its way to your backend, keeping the data path inside the EU.

An egress you can name

When your WAF team asks what IP the agent calls from, the answer is two fixed EU addresses that never change.

Why teams route LiveKit agents through OutboundGateway

A pair of fixed IPs

Two addresses for your WAF to allowlist, with automatic failover. No dynamic IP chasing.

No agent rewrite

Set one env var in the agent runtime and your existing API call code starts routing through the proxy.

EU-hosted

European data centres and a GDPR-conscious setup, giving your agents a predictable EU address.

Keeps LiveKit Cloud

Stay on LiveKit Cloud for WebRTC. Only route the agent's outbound API calls through the proxy.

Encrypted end to end

TLS passthrough means the proxy can't read your traffic. Transcripts and tokens stay private.

Flexible plans

Starting from €19/month. Flexible plans for every scale. Cancel anytime.

Give your LiveKit agents a fixed EU egress

Stop letting LiveKit's dynamic IPs break your WAF rules. Give your agents one stable pair of EU IPs for outbound API calls.

€19/month starter plan • 7-day refund policy • Direct founder support

Frequently asked questions

Doesn't LiveKit have static IPs for agents?

No. LiveKit staff confirmed on their community forum: "We do not currently have a fixed CIDR range for LiveKit-hosted agents." Agent requests come from dynamic IP ranges. Even the EU IPs in the firewall documentation don't cover all outbound calls from agents. They're working on it, but it's not available today. OutboundGateway fills the gap with a fixed pair of EU IPs.

Does this work with LiveKit Cloud or do I need to self-host?

The proxy works in the agent's outbound code, so it applies to self-hosted agents that you run alongside LiveKit Cloud (which is what LiveKit recommends for IP control). You keep LiveKit Cloud for WebRTC and room management, and route the agent's outbound HTTPS API calls through OutboundGateway. Set HTTPS_PROXY in the agent runtime and the standard HTTP clients pick it up.

Why not just use token auth instead of IP allowlisting?

Token auth is good practice, but many enterprises require both token auth AND IP allowlisting for backend APIs behind a WAF. If your security policy mandates IP allowlisting, token auth alone doesn't satisfy it. OutboundGateway gives you the IP control LiveKit Cloud agents lack, so your WAF sees a known source on every request.

Still weighing it up?

Happy to talk through how a two-IP EU egress fits your LiveKit agent setup, whether it's a voice bot, a customer support agent, or an internal assistant.

Contact Our Founders →