# Vapi, Retell and Bolna

> Connect Vapi, Retell AI and Bolna to Edesy over SIP - point their bring-your-own SIP trunk at your Edesy termination trunk, and route your Edesy number to their SIP URI for inbound calls.

Source: https://edesy.in/docs/sip-trunking/guides/vapi-retell-bolna

Vapi, Retell and Bolna all accept a bring-your-own SIP trunk. For outbound calls, enter your Edesy termination trunk host (`tk-<id>.trunk.edesy.in`, port `5070`) and its credentials in the platform. For inbound calls, route your Edesy number to the platform's SIP URI, adding credentials or a secret header if the platform requires them.

The trunk page in the Edesy portal shows ready-made snippets for all three under **Integration snippets**.

## Outbound settings

| Setting | Value |
|---|---|
| SIP server / gateway | `tk-<id>.trunk.edesy.in` |
| Port | `5070` |
| Transport | UDP or TCP |
| Username / password | From your credentials trunk |
| Caller ID | An Edesy number you own |

## Vapi

**Outbound.** Create a BYO SIP trunk credential in Vapi with these values:

| Vapi field | Value |
|---|---|
| Provider | `byo-sip-trunk` |
| Gateway IP / host | `tk-1a2b3c4d.trunk.edesy.in` |
| Gateway port | `5070` |
| Outbound auth username | `user-1a2b3c4d` |
| Outbound auth password | Your trunk password |

Then add your Edesy number to Vapi on that credential. The trunk page's Vapi snippet shows these values as JSON; check Vapi's current docs for the exact request shape.

**Inbound.** Route your Edesy number to the SIP URI Vapi gives you. Vapi challenges unauthenticated INVITEs, so on the number's inbound routing add either:

- **SIP authentication** with the username and password Vapi expects, or
- a **custom SIP header** `X-Vapi-Secret` set to your Vapi secret.

Do not put the secret in the URI; URI header parameters are dropped. See [Route a Number to SIP](https://edesy.in/docs/sip-trunking/inbound/route-a-number-to-sip).

## Retell AI

**Outbound.** In the Retell dashboard, add a SIP trunk under telephony and enter:

```text
sip_address: tk-1a2b3c4d.trunk.edesy.in:5070
username: user-1a2b3c4d
password: YOUR_TRUNK_PASSWORD
```

Import your Edesy number into Retell on that trunk.

**Inbound.** Route your Edesy number to `sip:<number>@sip.retellai.com`, using the number in E.164 without `+` (such as `sip:91XXXXXXXXXX@sip.retellai.com`) or the format Retell shows for your number. Add SIP authentication on the number if Retell asks for it.

## Bolna

**Outbound.** In Bolna's custom telephony settings, enter:

```text
sip_endpoint: tk-1a2b3c4d.trunk.edesy.in:5070
username: user-1a2b3c4d
password: YOUR_TRUNK_PASSWORD
```

**Inbound.** Route your Edesy number to the SIP URI Bolna provides for your agent.

## Test

1. Use the outbound test on the trunk page to check the Edesy side.
2. Save the platform's inbound URI as a [SIP destination](https://edesy.in/docs/sip-trunking/inbound/sip-destinations) and click **Test call**.
3. Place a real call each way.

## FAQ

### Inbound calls to Vapi drop within a second.

Vapi answered with `401 Unauthorized` and no credentials were sent. Add SIP authentication or the `X-Vapi-Secret` header on the number.

### Retell or Vapi says the number is not found.

The SIP URI has no user part, or the number format does not match what the platform registered. Use `sip:<number>@host`.

### Should I use IP allowlist instead of credentials?

Only if the platform publishes fixed egress IPs for SIP. Otherwise use a credentials trunk.

### Outbound calls get `403 Caller ID Not Authorized`.

The platform is sending a caller ID that is not your Edesy number. Set the Edesy number as the caller ID in the platform.

For the API side of building an AI agent on Edesy numbers, see [SIP Trunking for AI Voice Agents](https://edesy.in/docs/sip-trunk-for-ai-voice-agents).
