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

Login
Help Center

Connect Vapi to Bitcall (Outbound SIP Trunk)

AI Voice Agents

Connect Vapi to Bitcall (Outbound SIP Trunk)

Use Bitcall as the outbound SIP trunk for your Vapi voice agent. Step-by-step: create credentials, add a BYO SIP trunk in Vapi, set caller ID, and test an outbound call.

June 4, 2026

5 min read

Share:
Connect Vapi to Bitcall (Outbound SIP Trunk)

Before you begin (outbound-only today)

💡 Heads-up: Bitcall is outbound-only today — perfect for Vapi agents that make calls (sales, reminders, surveys, notifications). Inbound numbers (DIDs) are coming soon, and we'll add inbound steps here when they land.

Your Vapi agent does the talking. Bitcall makes sure the call actually reaches a phone. Let's connect them — the outbound way.

🧰 What you'll need

  • A Vapi account with access to the dashboard and a private API key
  • A Bitcall account with a SIP account (username + password) — see Set Up Your First SIP Account
  • An outbound Caller ID (CLI) you're allowed to present (number rules depend on the destination country and operator)
  • A little Bitcall balance (prepaid — top up with card, PayPal, or crypto)

🔑 Step 1: Get your Bitcall SIP details

From your Bitcall SIP account, you'll use:

Setting Value
SIP domain (gateway) gateway.bitcall.io
Port 5060
Transport UDP (TCP/TLS also supported, via the domain)
Auth Your SIP username and password

⚠️ Use username/password authentication, not IP auth. Vapi's own docs note that IP-based auth can misroute on shared SIP servers and is only reliable when a provider gives a dedicated SIP server or unique termination URI. Username/password is the clean path for Bitcall.

➕ Step 2: Create a BYO SIP trunk in Vapi

Vapi connects to outside carriers using a credential of type byo-sip-trunk. Create it with your Bitcall details (API method shown — there's also a SIP Trunk section in the Vapi dashboard):

curl -X POST "https://api.vapi.ai/credential" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_VAPI_PRIVATE_KEY" \
  -d '{
    "provider": "byo-sip-trunk",
    "name": "Bitcall Outbound Trunk",
    "gateways": [{
      "ip": "gateway.bitcall.io",
      "inboundEnabled": false
    }],
    "outboundLeadingPlusEnabled": true,
    "outboundAuthenticationPlan": {
      "authUsername": "YOUR_BITCALL_SIP_USERNAME",
      "authPassword": "YOUR_BITCALL_SIP_PASSWORD"
    }
  }'

📋 Save the returned Credential ID — you'll need it in the next step.

Note: inboundEnabled is set to false because Bitcall handles outbound today. outboundLeadingPlusEnabled keeps numbers in +E.164 format on the way out.

📇 Step 3: Register your outbound Caller ID

Vapi needs a "phone number" resource to use as the caller ID (from-number) on outbound calls. Since Bitcall is outbound-only, this is the CLI you want to display — not a Bitcall DID.

curl -X POST "https://api.vapi.ai/phone-number" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_VAPI_PRIVATE_KEY" \
  -d '{
    "provider": "byo-phone-number",
    "name": "Bitcall Outbound CLI",
    "number": "YOUR_OUTBOUND_CALLER_ID",
    "numberE164CheckEnabled": false,
    "credentialId": "YOUR_CREDENTIAL_ID"
  }'

📋 Save the returned Phone Number ID for your test call.

🎭 Step 4: Set your Caller ID rules

Caller ID on outbound calls depends on the destination country and operator rules — some routes pass your CLI through, some override or sanitize it. Set and manage your CLI here: Change or Manage Your Caller ID.

🎲 Want to rotate caller IDs across a campaign? You can present different CLIs per call from your agent logic.

🚀 Step 5: Place a test outbound call

From the Vapi dashboard, or via the API:

curl -X POST "https://api.vapi.ai/call/phone" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_VAPI_PRIVATE_KEY" \
  -d '{
    "assistantId": "YOUR_ASSISTANT_ID",
    "customer": { "number": "NUMBER_YOU_ARE_CALLING", "numberE164CheckEnabled": false },
    "phoneNumberId": "YOUR_PHONE_NUMBER_ID"
  }'

📞 Ring… ring… your Vapi agent is now dialling out through Bitcall. 🎉

🛠️ Troubleshooting

Problem Likely cause & fix
401 Unauthorized on outbound Wrong SIP username/password, or the trunk is set to IP auth. Use username/password and re-check credentials.
Call connects but agent is silent / one-way audio RTP isn't reaching Vapi's media server — usually a NAT/firewall or SDP issue.
Call drops after ~30–60 seconds RTP inactivity during the agent's "thinking" gaps. Enable RTP keepalives / comfort noise and raise the RTP timeout.
Caller ID not showing or rejected CLI rules vary by destination/operator. Check Change or Manage Your Caller ID.
Can't dial a country Make sure the number is in +E.164 format, your balance is funded, and the route is enabled for that destination.

🧠 TL;DR recap

✅ Get your Bitcall SIP username/password (gateway.bitcall.io:5060)

✅ Create a byo-sip-trunk credential in Vapi (username/password auth, inboundEnabled: false)

✅ Register your outbound Caller ID as a byo-phone-number

✅ Set CLI rules, top up, and place a test outbound call ☕

Related: SIP trunking for AI voice agents (full guide) · Set Up Your First SIP Account · Change or Manage Your Caller ID


Previous Post

No previous post

Next Post

AI Voice Calls Dropping After 30 Seconds? The RTP Keepalive Fix

On This Page

Before you begin (outbound-only today)

🧰 What you'll need

🔑 Step 1: Get your Bitcall SIP details

➕ Step 2: Create a BYO SIP trunk in Vapi

📇 Step 3: Register your outbound Caller ID

🎭 Step 4: Set your Caller ID rules

🚀 Step 5: Place a test outbound call

🛠️ Troubleshooting

🧠 TL;DR recap

Still need help?

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

Contact us