Skip to content
SIP trunk

A Czech number for your own ElevenLabs agent

Your own ElevenLabs Conversational AI agent on a real Czech number - inbound and outbound calls over SIP, with no agent surcharge.

Don't have a number yet? Compare the ways to get a Czech or Slovak number.

1Route inbound calls to ElevenLabs

Switch your volai number into SIP mode and set the destination to the address ElevenLabs listens on for inbound calls (sip:<your number>@sip.rtc.elevenlabs.io) - ElevenLabs's own SIP domain, not ours.

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

2Register the number in ElevenLabs as a SIP trunk

In ElevenLabs (Settings → Phone Numbers → Import → SIP trunk), register the same number with an inbound_trunk_config - put our signalling range (81.31.45.0/24) into allowed_addresses. The universal 0.0.0.0/0 lets an INVITE in from anywhere, and since the import carries no credentials, the allowlist is the only check.

json
{
  "provider": "sip_trunk",
  "phone_number": "+420601234567",
  "label": "volai cislo",
  "inbound_trunk_config": {
    "allowed_addresses": ["81.31.45.0/24"],
    "media_encryption": "allowed"
  }
}

3Fetch your line's SIP credentials

For the outbound direction you need the number's login details. The GET /v1/numbers/{e164}/sip response returns server (softphone registration, today sip.volai.cz) and outboundTrunkAddress (the platform's outbound trunk address, today sip.volai.cz) separately - ElevenLabs needs the latter, see the next step.

bash
curl "https://volai.cz/v1/numbers/+420601234567/sip" \
  -H "Authorization: Bearer vk_TVUJ_KLIC"

4Configure the outbound trunk in ElevenLabs

On your number in ElevenLabs (Settings → Phone Numbers → your number → Outbound calling), set outbound_trunk_config with the details from the previous step - `outboundTrunkAddress` (NOT server) as address, username and password as credentials. The outbound trunk address must be exactly this value. With a different address (such as server) the call is not routed on the network and the platform reports 1011 sip request timed out, leaving no trace in the call history.

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

5Create a relay connection before the call, dial the sipName

Most voice AI platforms (ElevenLabs included) can't register a phone line as a permanent SIP client - they only send an authenticated call. So right before the call, create a short-lived relay connection and give ElevenLabs the bare sipName from the response (not the full sipUri) as to_number in the ElevenLabs API /v1/convai/sip-trunk/outbound-call - otherwise ElevenLabs rejects the call with a format error. The called party's display shows your volai number if the number has its own relay names (otherwise it shows volai's number - contact support); the minutes are billed like a regular outbound call, with no agent surcharge.

bash
curl -X POST https://volai.cz/v1/relay \
  -H "Authorization: Bearer vk_TVUJ_KLIC" \
  -H "Content-Type: application/json" \
  -d '{"to": "+420777123456", "from": "+420601234567"}'

What you can do with it

Your own agent on a real Czech number

ElevenLabs Conversational AI in your own workspace, with your own prompt, voice, and tools - but on a portable Czech number, with call history, credit, and an invoice in one portal.

Switch platforms without losing your number

The number stays yours regardless of whether ElevenLabs, Vapi, Retell, or your own Asterisk sits behind it today - just point the SIP routing at a different address.

Your own agent for outbound, the built-in one for reception

Combine both worlds on the same account: outbound reminders and campaigns through your own ElevenLabs agent with no surcharge, inbound reception on volai's built-in agent with automatic transcripts.

Frequently asked questions

Do I pay the agent surcharge with my own ElevenLabs agent too?
No, the $0.177/min surcharge only applies to volai's built-in agent. With your own agent you pay just the call minutes ($0.0648/min outbound) and ElevenLabs separately.
ElevenLabs says 1011 sip request timed out - what now?
outbound_trunk_config.address holds server instead of outboundTrunkAddress. Fix that one value in ElevenLabs; with another address the call isn't routed and leaves no record.
ElevenLabs says max auth retry attempts reached for SIP invite - what now?
ElevenLabs failed to log in: either the outbound trunk's username and password don't match, or to_number isn't the sipName from POST /v1/relay. Start the call through the ElevenLabs API, not a form that only takes phone numbers.
Why can't ElevenLabs register on the number permanently, like a normal SIP client?
Most voice AI platforms can't register permanently over SIP; they only send a one-off call. That call goes through a short-lived relay connection, POST /v1/relay.
What does the ElevenLabs SIP address format error mean?
ElevenLabs rejects a full SIP URI and wants a bare name instead - that's why POST /v1/relay returns sipName and sipUri SEPARATELY. Only sipName belongs in ElevenLabs's to_number.
How long does a relay connection last?
It waits up to 120 seconds for the first call (configurable 15 to 300), and the call itself can run for up to 15 minutes. At most one active connection per number, at most two per account, and each one is used exactly once.
Does this work with a platform other than ElevenLabs, like Vapi or Retell?
Yes, the principle is the same: find where your platform expects the inbound SIP address and the outbound trunk credentials. A general walkthrough is on /en/docs/bring-your-own-agent.

Try it now

Sign up and get $4 in credit on top.