> ## Documentation Index
> Fetch the complete documentation index at: https://www.bolna.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# SIP trunks: connect your own carrier to Bolna

> Connect your own SIP carrier to Bolna with a SIP trunk, then answer and place AI agent calls on your own numbers at your own carrier rates.

A SIP trunk connects the carrier you already use to Bolna. Your numbers stay with your carrier, your carrier bills you for the minutes, and Bolna's agents answer the calls that arrive on those numbers and place calls from them.

You configure each direction once:

* **Inbound.** Your carrier sends calls for your numbers to Bolna's SIP edge. Bolna accepts a call only from the carrier IP addresses you list on the trunk, then hands it to the agent assigned to the number that was called.
* **Outbound.** Bolna sends calls to your carrier's gateway, presenting one of your trunk numbers as the caller ID. Your carrier authenticates Bolna by its IP address, by a username and password it issued to you, or both.

## How a call flows

```mermaid theme={"system"}
sequenceDiagram
    participant Carrier as Your carrier
    participant Edge as Bolna SIP edge (trunk.bolna.ai)
    participant Agent as Bolna agent
    Carrier->>Edge: INVITE for one of your numbers
    Note over Edge: Source IP is on the trunk's carrier IPs?<br/>Called number is on the trunk?
    Edge->>Agent: Call handed to the number's agent
    Agent-->>Carrier: Two-way audio, relayed through the edge
    Agent->>Edge: Outbound call (POST /call)
    Edge->>Carrier: INVITE to your gateway, caller ID = your trunk number
```

Signalling and audio both pass through Bolna's edge. Your carrier never needs to reach Bolna's internal media servers, so the addresses below are the only ones to configure.

| | Value |
| - | - |
| Point your numbers at (inbound) | `sip:trunk.bolna.ai:5060` |
| Transport | UDP or TCP on port `5060` |
| Bolna IPs to allowlist at your carrier | `15.252.21.46` and `13.206.230.198` |
| Audio (RTP) | UDP `30000`-`40000`, to and from `15.252.21.46` |
| Codecs | G.711 μ-law (`PCMU`) and A-law (`PCMA`) |
| DTMF | RFC 2833 telephone events |

<Note>
  Allowlist both Bolna IPs now. `13.206.230.198` is reserved for a second edge, and listing it today means no carrier change when it starts carrying calls. The dashboard shows these values on every trunk, and [`GET /trunk/pop`](/docs/api-reference/trunks/connection_details) returns them.
</Note>

## Supported carriers

Any carrier that speaks standard SIP over UDP or TCP works. The dashboard has presets for **Plivo**, **Telnyx**, **Twilio**, **Exotel**, **Vobiz** and **Vonage**, plus **Custom** for any other carrier. A preset fills in the carrier's gateway, port and transport where they are the same for every account, and shows a short checklist of what to set in that carrier's console. The Plivo and Exotel presets also prefill the signalling IPs those carriers publish.

## Limits

| | Limit |
| - | - |
| Channels (simultaneous calls) per trunk | 1 to 1,000, default 10. Inbound, outbound, transfer and test calls all count. |
| Gateways per trunk | 8 |
| Carrier IPs per trunk | 32 IPv4 addresses or ranges, each `/16` or narrower and public |
| Numbers | Each number can be on one trunk at a time, across all of Bolna |
| Inbound SIP headers passed to the agent | `P-Asserted-Identity` and `Diversion` |
| Transport | UDP or TCP |
| Codecs | `PCMU` and `PCMA` only |
| Call setup | The INVITE must carry an SDP offer. Delayed offer is refused. |

When every channel is in use, a new inbound call is refused with a `486` response, and a new outbound call waits in the queue until a channel frees up. See [Troubleshooting](/docs/sip-trunking/troubleshooting) for every SIP response Bolna can send.

A trunk belongs to your account, which is your organization if you are in one, or to a sub-account when you create it with that sub-account's API key. Its numbers can only be assigned to agents in the same scope. Organization members can view trunks; owners and admins can change them.

## Get started

<CardGroup cols={2}>
  <Card title="Connect your carrier" icon="plug" href="/docs/sip-trunking/connect-carrier">
    Create a trunk, give your carrier Bolna's values, add numbers and place a test call.
  </Card>

  <Card title="Receive inbound calls" icon="phone-arrow-down-left" href="/docs/sip-trunking/inbound-calls">
    Assign agents to your numbers and read caller details in the prompt.
  </Card>

  <Card title="Make outbound calls" icon="phone-arrow-up-right" href="/docs/sip-trunking/outbound-calls">
    Switch an agent to the trunk and call from your own numbers.
  </Card>

  <Card title="SIP headers" icon="tag" href="/docs/sip-trunking/sip-headers">
    Read carrier headers on inbound calls and send your own on outbound calls.
  </Card>

  <Card title="Call transfer" icon="phone-arrow-right" href="/docs/sip-trunking/call-transfer">
    Hand a live trunk call to a person through the same trunk.
  </Card>

  <Card title="Troubleshooting" icon="stethoscope" href="/docs/sip-trunking/troubleshooting">
    SIP responses, audio problems and failed calls.
  </Card>
</CardGroup>

<Info>
  Already on a legacy SIP trunk? Those trunks keep working. See [Migrate to SIP trunks](/docs/migrating-to-sip-trunks/overview) for what changes and how to move.
</Info>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.