📢 No Limits. No Restrictions! The Cheapest Calling Rates—Guaranteed!

Login
Help Center

Connect LiveKit to Bitcall (Outbound SIP Trunk)

AI Voice Agents

Connect LiveKit to Bitcall (Outbound SIP Trunk)

Use Bitcall as the outbound SIP trunk for a LiveKit voice agent. Create a SIP outbound trunk (address, numbers, auth), then dial out with createsipparticipant.

June 4, 2026

4 min read

Share:
Connect LiveKit to Bitcall (Outbound SIP Trunk)

Before you begin

💡 Heads-up: Bitcall is outbound-only today — a clean fit for LiveKit agents that place calls. Works with self-hosted LiveKit or LiveKit Cloud. Inbound numbers (DIDs) are coming soon.


"LiveKit runs your real-time agent. Bitcall is the outbound trunk it dials through." 🤖📞

🧰 What You'll Need

  • A LiveKit project (self-hosted or LiveKit Cloud) with the lk CLI installed, or dashboard access
  • A Bitcall SIP account (username + password) — see Set Up Your First SIP Account
  • An outbound Caller ID (CLI) you're allowed to present, in E.164
  • A little Bitcall balance (prepaid)

🔑 Step 1: Get Your Bitcall SIP Details

Setting Value
SIP address (trunk domain) gateway.bitcall.io
Port 5060
Auth SIP username + password

➕ Step 2: Create a SIP Outbound Trunk

LiveKit dials out through a SIP outbound trunk that holds your provider endpoint and credentials. Create outbound-trunk.json:

{
  "trunk": {
    "name": "Bitcall Outbound Trunk",
    "address": "gateway.bitcall.io",
    "numbers": ["YOUR_OUTBOUND_CALLER_ID"],
    "auth_username": "YOUR_BITCALL_SIP_USERNAME",
    "auth_password": "YOUR_BITCALL_SIP_PASSWORD"
  }
}

Then create it with the CLI:

lk sip outbound create outbound-trunk.json

📋 Copy the returned Trunk ID — you'll need it to place calls.

  • address is your Bitcall SIP host (gateway.bitcall.io).
  • numbers is the outbound Caller ID you present (not a Bitcall DID — Bitcall is outbound-only).
  • On LiveKit Cloud, you can do the same from Telephony → SIP trunks → Create new trunk → JSON editor → Outbound.
  • Optional: set destination_country to originate from a region close to where you're calling.

🎭 Step 3: Set Your Caller ID (CLI)

Caller-ID behavior depends on the destination country and operator rules: Change or Manage Your Caller ID.


🚀 Step 4: Place an Outbound Call

Dial a number into a room using the trunk (CLI shown; the same exists in the SDKs via create_sip_participant):

lk sip participant create \
  --room "my-room" \
  --trunk "YOUR_TRUNK_ID" \
  --call "NUMBER_YOU_ARE_CALLING" \
  --identity "outbound-caller"

For an AI agent, dispatch your LiveKit Agent into the room, then create the SIP participant to dial the user — see LiveKit's "outbound calls" agent guide. 📞🎉


🛠️ Troubleshooting Table

Problem Likely cause & fix
CreateSIPParticipant fails immediately The trunk's auth was rejected by Bitcall — re-check auth_username / auth_password and address.
Connected but no audio / one-way Media-path / NAT issue. Verify your LiveKit SIP service networking and firewall. See AI voice calls dropping after 30 seconds.
Call drops after ~30–60 seconds RTP inactivity during the agent's thinking gaps → RTP keepalives + raise the timeout. See AI voice calls dropping after 30 seconds.
Caller ID wrong / missing CLI rules vary by destination. See Change or Manage Your Caller ID.
Can't dial a country Ensure the number is +E.164, your balance is funded, and the route is enabled.

🧠 TL;DR Recap

✅ Create a SIP outbound trunk: address = gateway.bitcall.io, numbers = [your CLI], plus your SIP username/password ✅ lk sip outbound create (or LiveKit Cloud JSON editor) → copy the Trunk ID ✅ Dial with lk sip participant create / create_sip_participant, agent dispatched into the room ☕


Related: SIP trunking for AI voice agents (full explainer) · AI voice calls dropping after 30 seconds · Set Up Your First SIP Account


Previous Post

Connect ElevenLabs to Bitcall (Outbound SIP Trunk)

Next Post

No next post

On This Page

Before you begin

🧰 What You'll Need

🔑 Step 1: Get Your Bitcall SIP Details

➕ Step 2: Create a SIP Outbound Trunk

🎭 Step 3: Set Your Caller ID (CLI)

🚀 Step 4: Place an Outbound Call

🛠️ Troubleshooting Table

🧠 TL;DR Recap

Still need help?

Can't find what you're looking for? Our support team is here to help.

Contact us