Set to VoIP
Configure your FlyNumber to forward calls directly to VoIP. This allows you to integrate with any VoIP provider, PBX system, or AI voice platform while maintaining unlimited incoming minutes.
With the growing adoption of AI voice agents, many businesses are connecting their FlyNumbers to platforms like VAPI, ElevenLabs, Retell, and others for automated customer interactions, appointment scheduling, and support services.
Configuration Steps​
- Log in to your FlyNumber account at My Account.
- Navigate to My FlyNumbers.
- Find the FlyNumber you want to configure and click Details.
- Click Change forwarding to access the forwarding options.
- Select VoIP from the forwarding options.

Figure 1: Configuration options for setting the FlyNumber directly to VoIP from the My FyNumbers page.

Figure 2: Configuration options for setting the FlyNumber directly to VoIP from the Signup/ Add FlyNumber page.
Understanding VoIP Fields​
When setting up VoIP forwarding, you'll need to configure three main fields:
1. Protocol​
- Default: SIP (Session Initiation Protocol)
- Options:
- SIP: Most common protocol for VoIP communications
- H.323: Legacy protocol for real-time audio/video communication
- IAX2: Inter-Asterisk eXchange protocol, primarily used with Asterisk systems
- Best Practice: Use SIP unless your system specifically requires another protocol
IAX2 will be decommissioned by the end of 2025. If you're currently using IAX2, please migrate to SIP before then.
Transport Protocol​
When using SIP, calls are sent using UDP by default. We also support:
- TCP: For environments where UDP is blocked or unreliable
- TLS: For encrypted signaling (recommended for security-sensitive deployments)
To change your transport protocol, open a support ticket. A self-service option is in development.
Many AI voice platforms have specific transport requirements. For example, ElevenLabs requires TLS transport (UDP is not supported). Platforms like VAPI and Twilio support UDP, TCP, and TLS. If you're connecting your FlyNumber to an AI voice agent, check your provider's documentation and contact support to configure the appropriate transport protocol.
2. Host​
- For VoIP Providers:
- The part after @ in your SIP address
- Example: If your SIP address is john@sip.acme.com, enter
sip.acme.com
- For PBX Systems:
- Your server's public IP address or hostname
- Example: If your Asterisk server is at 12.34.45.7, enter
12.34.45.7
3. Username/extension​
- For VoIP Providers:
- The part before @ in your SIP address
- Example: If your SIP address is john@sip.acme.com, enter
john
- For PBX Systems:
- Your extension number (e.g.,
101) - The username configured in your PBX
- Your extension number (e.g.,
SIP Registration​
Some VoIP providers and AI platforms require your FlyNumber to register with their SIP server using credentials (username/password authentication) rather than IP-based authentication.
If your provider requires SIP registration, open a support ticket with the following information:
- Your FlyNumber
- SIP server address (domain/host)
- Authentication username
- Authentication password
- Any additional details from your provider (e.g., auth domain, contact user)
Our team will configure the registration settings for you. A self-service option for SIP registration is in development.
SIP registration is often needed when connecting to:
- AI voice agent platforms (VAPI, ElevenLabs, Retell, Bland AI)
- Hosted PBX systems that require authenticated connections
- VoIP providers without IP whitelisting options
Technical Specifications​
IP Addresses​
Calls originate from the following endpoints:
- 46.19.209.14:5060 (New York POP)
- 46.19.210.14:5060 (Frankfurt POP)
- 46.19.212.14:5060 (Los Angeles POP)
- 46.19.213.14:5060 (Miami POP)
- 46.19.214.14:5060 (Singapore POP)
RTP traffic subnet:
- 46.19.208.0/21
- Port range: 1024-65535
Supported Codecs​
- G.711 A-law/U-law
- G.729
- G.723.1
- L16
- G.726-16/G.726-40/G.726-32/G.726-24
- G.721
- GSM
- Speex
DTMF Transport​
- Telephone-event RFC2833 (default)
- SIP INFO draft-kaplan-dispatch-info-dtmf-package-00
RTCP Support​
- Transmits and receives on port = rtp_port + 1 (RFC3550)
- Supports RTCP conflict avoidance payloads (72-76)
Popular Integration Examples​
AI Voice Platforms​
AI voice agents are increasingly popular for handling customer calls, scheduling appointments, and providing 24/7 support. Here are common platforms:
| Platform | Transport | Registration | Notes |
|---|---|---|---|
| VAPI | UDP, TCP, TLS | Not required | UDP is default; see VAPI example below |
| LiveKit | UDP, TCP, TLS | Not required | Open-source agent runtime; see LiveKit example below |
| ElevenLabs | TLS required | Not required | UDP not supported; TLS is a requirement |
| Retell AI | TCP, TLS | Varies | Check provider docs |
| Bland AI | TCP, TLS | Varies | Check provider docs |
For AI platform integration, you'll typically need:
- Configure your FlyNumber to forward to the platform's SIP address
- Request the appropriate transport protocol (TCP/TLS) via support ticket
- Set up SIP registration if required by the platform
VAPI Example​
VAPI uses a SIP trunk model where each trunk gets a unique credential ID (a UUID). Calls are routed to VAPI using a SIP URI in this format:
+{your_flynumber}@{credential_id}.sip.vapi.ai
To connect your FlyNumber to a VAPI AI assistant:
- In your VAPI dashboard, create a BYO SIP Trunk (not a standard credential — choose the "Bring Your Own" option)
- Add all 5 FlyNumber gateway IPs as separate gateways in the trunk configuration:
46.19.209.1446.19.210.1446.19.212.1446.19.213.1446.19.214.14
- For each gateway, enable Inbound Calls and Options Ping — this allows VAPI to accept and monitor incoming calls from FlyNumber
- VAPI will generate a credential ID (a UUID) for the trunk
- Add your FlyNumber as a phone number resource in VAPI and link it to your assistant
- In your FlyNumber VoIP settings, configure the fields as follows:
| Field | Value |
|---|---|
| Protocol | SIP |
| Host | {credential_id}.sip.vapi.ai (replace with your actual credential ID) |
| Username/Extension | Your FlyNumber in E.164 format (e.g., +13025551234) |
- Contact support to set the transport protocol — VAPI supports UDP (default), TCP, and TLS
A standard VAPI SIP trunk credential won't work with FlyNumber. You must use the BYO (Bring Your Own) SIP Trunk option and add all FlyNumber gateway IPs as gateways with inbound calls enabled. Without this, calls will return "Service Unavailable."
VAPI does not require SIP registration. Calls are authenticated through the credential ID embedded in the SIP URI itself, so no username/password registration setup is necessary on the FlyNumber side.
LiveKit Example​
LiveKit is an open-source realtime platform commonly used to build voice AI agents. Calls from your FlyNumber are delivered to a LiveKit room where one or more agents can answer and interact with the caller. Each LiveKit Cloud project exposes its own SIP URI, shown on the Project settings page — it looks like:
{project}.sip.livekit.cloud
The LiveKit side needs three pieces in place before a call completes: an inbound trunk that lists your DID, a dispatch rule that routes matching calls into a room, and an agent subscribed to that room. Skip any of these and the call fails even if FlyNumber is pointed correctly.
Step 1 — Grab your SIP URI
In the LiveKit Cloud dashboard, open Project settings and copy the SIP URI (for example, abcd1234.sip.livekit.cloud). Strip the sip: prefix if present — what's left is the host you'll hand to FlyNumber.
Step 2 — Create the inbound trunk
Navigate to Telephony → SIP trunks → Create new trunk. On the Trunk details tab, set Trunk direction to Inbound, enter your FlyNumber in E.164 under Numbers (comma-separated if you're attaching more than one), and leave Allowed addresses empty unless you actually want to IP-restrict the trunk.

Figure 3: Inbound trunk configuration in the LiveKit Cloud dashboard. The Numbers field must contain the FlyNumber that will forward into this trunk.
Prefer the JSON editor?
Switch to the JSON editor tab on the same Create trunk dialog and paste:
{
"trunk": {
"name": "FlyNumber inbound",
"numbers": ["+17185301799"]
}
}
If numbers is empty and you haven't set allowedAddresses or auth credentials, LiveKit rejects the trunk. A wildcard trunk needs one of those guard rails in place.
Step 3 — Create the dispatch rule
Head to Telephony → Dispatch rules → Create new dispatch rule. Pick Individual as the rule type and set a room prefix (for example, call-). Each incoming call lands in a freshly generated room with that prefix. Leave Inbound routing on Phone numbers / all trunks unless you want to scope the rule to specific DIDs or trunks.

Figure 4: Dispatch rule creation. Without at least one dispatch rule, LiveKit accepts the INVITE but drops the call because no room is assigned.
Dispatch rule via JSON
{
"name": "FlyNumber dispatch",
"rule": {
"dispatchRuleIndividual": {
"roomPrefix": "call-"
}
}
}
Step 4 — Point FlyNumber at LiveKit
In your FlyNumber VoIP settings, configure the fields as follows:
| Field | Value |
|---|---|
| Protocol | SIP |
| Host | {project}.sip.livekit.cloud (the SIP URI from your Project settings, without the sip: prefix) |
| Username/Extension | Your FlyNumber in E.164 format (e.g., +17185301799) |
LiveKit accepts UDP on port 5060 by default, so no transport change is needed to start receiving calls. If you've turned on secure trunking on the LiveKit side, contact support to switch the FlyNumber side to TLS.
Step 5 — Attach an agent
Even with the trunk and dispatch rule published, a call that lands in a LiveKit room with no agent subscribed will just sit in silence. Make sure an agent (your own, or one deployed via LiveKit Agents) is configured to pick up rooms created by your dispatch rule before you test.
LiveKit's inbound trunk matches incoming calls against the To: user in the SIP INVITE. If the username field holds a friendly name — something like agent1 or john instead of +17185301799 — LiveKit replies with 404 Not Found and your FlyNumber call log shows status fail, reason not found. No connection attempt appears on the LiveKit side either, because the trunk rejects the INVITE before any dispatch rule runs.
The inbound trunk decides whether to accept a given DID. The dispatch rule decides which room the call goes into. A valid trunk with no dispatch rule will still fail the call, so publish both before testing.
LiveKit only enforces IP-level restrictions when allowedAddresses is set on the inbound trunk. If you've added that restriction, list our outbound IPs there — otherwise LiveKit will accept traffic from any source that presents the right DID.
PBX Systems​
- Asterisk: Configure extensions and SIP trunks
- FreePBX: Set up inbound routes and trunks
- 3CX: Create SIP trunk with FlyNumber credentials
- FreeSWITCH: Set up SIP profiles and dialplans
VoIP Providers​
- Twilio: Forward to SIP domains
- Callcentric: Use SIP URI forwarding
- Telnyx: Configure SIP trunking
- Flowroute: Set up inbound routes
- OnSIP: Use inbound bridge configuration
Set "host" to iptel.org and "user/extension" to music to quickly test your FlyNumber. You'll hear music when you call the number.
Troubleshooting​
Common Call Responses​
Check your call logs for these responses:
- Time Out: No response from VoIP server
- Proxy Authentication Error: Check IP whitelist settings
- Forbidden: Registration required or configuration issue
- OK: Call successfully connected
Best Practices​
- Whitelist FlyNumber IP addresses in your system's ACL
- Verify your VoIP system accepts incoming calls
- Test configuration with a test call
- Monitor call logs for any issues
- Ensure proper codec support
If using systems like Asterisk or FreePBX, you may need to whitelist our IP addresses in your system's Access Control List (ACL).
What's Next?​
After configuring VoIP forwarding:
- Make a test call to your FlyNumber
- Check your call logs for successful connection
- Verify audio quality and connection stability
- Configure any additional features in your VoIP system
For advanced call handling features like auto-attendants, time-based routing, or call recording, consider using our cloud phone system.