Skip to content

Connect Your ElevenLabs Agent to a Czech Number via SIP

September 2, 2026 · 7 min read

Already running your own ElevenLabs Conversational AI agent and want to give it a Czech phone number? There is no special trick to it: you point a volai number at your agent platform's SIP trunk. Inbound is the easy part - one PATCH request on the number's routing. Outbound works a little differently, because ElevenLabs (like most voice AI platforms) cannot keep a phone line permanently registered as a SIP client - it only fires off a single authenticated call, so the call travels through a short-lived relay connection instead. The big difference from the built-in volai agent: for outbound calls you skip the agent surcharge of 2.50 CZK/min (~EUR 0.10) completely - you run (and pay for) the agent yourself, on your own ElevenLabs workspace.

When does your own agent make more sense than the built-in one?

Both routes bill against the same volai number and the same credit balance - what changes is who drives the conversation and what it costs on top:

CriterionBuilt-in volai agentYour own agent (ElevenLabs and others)
Who drives the conversationWe do - a single systemPrompt, on our own ElevenLabs workspace, using our voice.You do - any platform you like, your prompt, your voice, your tools.
Call price0.92 CZK/min (~EUR 0.04) outbound, 0.50 CZK/min (~EUR 0.02) inboundsame - 0.92 CZK/min (~EUR 0.04) outbound, 0.50 CZK/min (~EUR 0.02) inbound
Agent surcharge+ 2.50 CZK/min (~EUR 0.10)none (0 CZK) - you only pay for the minutes
Transcript, summary, voicemail detectionYes, on every call, automatically.No - whatever your own platform does or doesn't do.

You are off the hook for the volai agent surcharge, but that does not make it free - you pay your own platform (ElevenLabs Conversational AI and similar) directly, at its own rates. We only charge for call minutes on the volai line, the same as with a SIP client or the built-in agent. Rates exclude VAT, like the rest of the volai price list.

Put differently: your own agent pays off once you already have an ElevenLabs agent running, with its own prompt, tools and voice, and just need a Czech number attached to it. Starting from zero with nothing more than one system prompt, and no separate ElevenLabs workspace to manage? The faster route is the built-in volai agent - one API call sets it up, and the transcript and summary come bundled in with the agent surcharge, with no separate setup.

What will you need?

  • A volai account with a Czech number already on it, plus an API key (vk_...) - grab it from the portal, under API and MCP.
  • An ElevenLabs Conversational AI agent already built in YOUR OWN workspace - this guide wires it up to a number, it does not build the agent for you.
  • Credit on your volai account - calls draw down from it exactly like they would with the built-in agent.

Step 1: Connect inbound calls

Point the number's routing at mode: "sip" with the sipUri set to the address ElevenLabs expects calls on for a SIP-trunk import:

bash
curl -X PATCH "https://volai.cz/v1/numbers/+420601234567" \
  -H "Authorization: Bearer vk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"routing": {"mode": "sip", "sipUri": "sip:+420601234567@sip.rtc.elevenlabs.io"}}'

Then, on the ElevenLabs side (Settings → Phone Numbers → Import → SIP trunk), register the number with an inbound_trunk_config:

json
{
  "provider": "sip_trunk",
  "phone_number": "+420601234567",
  "label": "My own agent",
  "inbound_trunk_config": {
    "allowed_addresses": ["0.0.0.0/0"],
    "media_encryption": "allowed"
  }
}

Only the inbound minute is billed (0.50 CZK/min (~EUR 0.02)), no surcharge on top - the same rule the built-in agent and a plain softphone both follow.

Step 2: Connect outbound calls through the relay

This direction runs the other way - your agent dials out on its own. The phone network will not forward a call from a foreign SIP address straight to its destination, so it travels through a short-lived relay instead - a one-time SIP slot volai opens right before the call and tears down again once it is over. For the full mechanics of why it works this way, and how it looks for platforms other than ElevenLabs, see the Bring your own agent page - here are just the three steps you need:

2.1 Point ElevenLabs at your line

Grab the number's SIP credentials:

bash
curl "https://volai.cz/v1/numbers/+420601234567/sip" \
  -H "Authorization: Bearer vk_YOUR_KEY"
json
{
  "server": "sip.volai.cz",
  "username": "123456",
  "password": "a1b2c3d4e5f6"
}

The same credentials work for a plain softphone too, see the SIP page.

Then set them as that number's outbound_trunk_config on ElevenLabs (Settings → Phone Numbers → your number → Outbound calling), in exactly this shape:

json
{
  "outbound_trunk_config": {
    "address": "sip.volai.cz",
    "transport": "udp",
    "media_encryption": "allowed",
    "credentials": {
      "username": "123456",
      "password": "a1b2c3d4e5f6"
    }
  }
}

2.2 Open a relay connection

Just before you place the call - the connection is short-lived, see the limits further down - call:

bash
curl -X POST https://volai.cz/v1/relay \
  -H "Authorization: Bearer vk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to": "+420777123456", "from": "+420601234567"}'
json
{
  "id": "rl_4f2a91cd",
  "sipName": "volai_relay_2",
  "sipUri": "sip:volai_relay_2@sip.volai.cz",
  "expiresAt": 1756111760000,
  "callId": "c_9d4e2b7f"
}

2.3 Tell the agent to dial the sipName, not the full SIP URI

The bare name, not the full SIP URI

ElevenLabs rejects a full SIP URI with the error “SipCallTo should be a phone number or SIP user, not a full SIP URI” - which is why the response above hands back sipName (the bare volai_relay_2) and sipUri (the full sip:volai_relay_2@sip.volai.cz) as two separate fields. Only sipName belongs in to_number.

For ElevenLabs, that means calling /v1/convai/sip-trunk/outbound-call with to_number set directly to the sipName:

json
{
  "agent_id": "agent_...",
  "agent_phone_number_id": "phnum_...",
  "to_number": "volai_relay_2"
}

What happens once the call goes out

On the network side, the call goes out under the name volai_relay_2, gets handed off to your to and shows your from number as the caller ID - whoever picks up sees your volai line on their screen, never the relay slot's throwaway name. Once the call wraps up, the lease is freed automatically and you are billed the normal outbound rate - 0.92 CZK/min (~EUR 0.04), no agent surcharge tacked on.

Limits and security

WhatValue
Lease waiting for the first call (pending)120 s default, 15 to 300 s
Call in progress (active)15 minutes at most
Active leases per one of your numbersat most 1
Active leases per accountat most 2
  • from must be your own volai number - otherwise from_number_not_owned. Without that check, anyone could spoof someone else's line as their caller ID.
  • Same gates as a regular call - the do-not-call list (calls only, SMS is exempt), an automatic 30-day block after three failed attempts to one number within 24 hours, and the standard call rate limit. None of that can be routed around through the relay.
  • The lease is one-time - a second call attempt on the same lease gets rejected, so spin up a fresh one for the next call.
  • A full relay pool answers with 503 capacity_busy - it is a concurrency cap shared across the ENTIRE volai platform, not just your account. Nothing gets billed when that happens; just retry shortly after.

The full REST reference (error codes, GET/DELETE over leases) is in the REST API reference; the complete walkthrough - covering inbound and outbound calls for any platform, not only ElevenLabs - lives on the Bring your own agent page.

When should you stick with the built-in agent?

To be blunt about it: running your own agent means more moving parts - a separate ElevenLabs account and bill, no automatic transcript or summary showing up in the volai portal, and an extra step before every outbound call (spinning up a relay lease). If one solid system prompt covers what you need and you would rather be done in minutes than manage a second platform account, the built-in volai agent gets you there with a single API call - and that 2.50 CZK/min (~EUR 0.10) surcharge buys you an automatic transcript, summary and voicemail detection on every call, with no extra setup.

For the full price comparison against Twilio and other providers, see the pricing page; the ElevenLabs integration walkthrough, with links to their own docs, is on the Integrations page.

Try volai - first 50 CZK on us

Sign up in a minute and your account already has starter credit for calls, SMS and a number.

Try it for free