Prerequisites
Before creating a trunk in Bolna, configure the following on your SIP trunk provider’s portal.1. Whitelist Bolna’s IP Address
Bolna’s SIP media server IP is:ip-based authentication, this is the IP you will add as your identifier — Bolna will be recognized solely by its source IP.
2. Set the Origination URL (for inbound calls)
If you want calls to your DID numbers to ring through to Bolna, point your SIP trunk’s origination URI to:- Origination URI or Origination URL
- Inbound SIP URI
- SIP Termination Point
- Route to / Forward to
If your provider uses a domain-based origination URI rather than an IP, contact Bolna support for an alternative hostname.
3. Codec Configuration
Bolna’s SIP layer uses G.711 u-law (ulaw) audio by default. Ensure your trunk allows ulaw, or at minimum alaw, in its codec preferences. G.729 and other compressed codecs are not recommended.4. Disable SRTP
SRTP (Secure RTP) is not currently supported by Bolna. Media is transmitted over standard (unencrypted) RTP. If your provider has SRTP enabled by default or as a mandatory setting, disable it before connecting the trunk to Bolna.Create a SIP Trunk
Use the Create SIP Trunk API to register your trunk with Bolna.Example — Username/Password Authentication
Example — IP-Based Authentication (e.g. Plivo Elastic SIP)
Add Phone Numbers to Your Trunk
After creating a trunk, add your DID phone numbers using the Add Phone Number API.Phone number format: Bolna stores the number exactly as provided. When matching inbound calls, the platform performs a flexible lookup that checks both the number with and without a
+ prefix. Use a consistent format across your trunk and inbound DID configuration.Create Trunk field reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | Yes | — | Human-readable label. Must be unique per account. |
provider | string | Yes | — | SIP provider name (e.g. "twilio", "plivo", "zadarma", "telnyx", "vonage", "custom"). |
description | string | No | null | Optional description for internal reference. |
auth_type | string | Yes | — | "userpass" or "ip-based". |
auth_username | string | Conditional | null | Required when auth_type is "userpass". |
auth_password | string | Conditional | null | Required when auth_type is "userpass". |
gateways | array | Yes | — | At least one gateway. Each has gateway_address (required), port (default 5060), priority (default 1). |
ip_identifiers | array | Conditional | [] | Required when auth_type is "ip-based". List of { "ip_address": "..." } objects. |
allow | string | No | "ulaw,alaw" | Comma-separated codecs to allow. Always include ulaw. |
disallow | string | No | "all" | Comma-separated codecs to disallow. |
inbound_enabled | boolean | No | false | Set true to receive inbound calls. |
outbound_leading_plus_enabled | boolean | No | true | Prepend + to outbound dialed numbers. |
transport | string | No | "transport-udp" | SIP transport protocol. |
direct_media | boolean | No | false | Set up RTP directly between caller and callee. Keep false. |
rtp_symmetric | boolean | No | true | Symmetric RTP. Required for NAT. |
force_rport | boolean | No | true | Force responses to source port. Required for NAT. |
ice_support | boolean | No | true | ICE for media negotiation. |
qualify_frequency | integer | No | 60 | SIP OPTIONS ping interval in seconds. 0 to disable. |
phone_numbers | array | No | [] | Optional phone numbers to add at creation time. |
Next steps
- Set up inbound calls to route incoming calls to your AI agents
- Make outbound calls from your SIP trunk numbers
- Manage your trunk using the full SIP Trunk API

