# SIP Termination Trunk

> Connect Vapi, Retell, or LiveKit to Edesy over SIP. Point their custom SIP trunk at your Edesy trunk URI under trunk.edesy.com with credentials or IP auth.

Source: https://edesy.in/docs/sip-trunk-for-ai-voice-agents/connect/sip-termination-trunk

If your voice platform already speaks SIP — Vapi, Retell, and LiveKit all support a **custom / bring-your-own SIP trunk** — this is the simplest way to connect. Edesy gives you a **termination trunk**: a SIP endpoint your platform dials through to reach the Indian PSTN. Your platform sends the call to Edesy over SIP, Edesy terminates it to the carrier.

## Provisioning the trunk

Termination trunks are provisioned from the **[Edesy trunk portal dashboard](https://voice-app.edesy.in/)** (`voice-app.edesy.in`). Create a trunk there and the dashboard issues you a unique SIP URI under the `trunk.edesy.com` domain, along with the auth method you choose (SIP credentials or an IP allowlist). Copy those connection settings into your voice platform.

> The trunk portal dashboard is where you create and manage termination trunks and read back their SIP URI and credentials. Bring your own carrier instead of using Edesy's? See [BYOC](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/connect/byoc).

## Connection settings

Enter these values into your platform's SIP trunk configuration:

| Setting | Value / options |
|---------|-----------------|
| **SIP URI / domain** | Your unique trunk URI under `trunk.edesy.com` (from the trunk portal) |
| **Authentication** | **Credentials** (SIP username + password) or **IP-based** (allowlist your platform's egress IPs) |
| **SIP username / password** | Provided by the trunk portal when you choose credentials auth |
| **IP allowlist** | If using IP auth, the source IPs Edesy accepts SIP from |
| **Transport** | `UDP`, `TCP`, or `TLS` |
| **Codecs** | `PCMU`, `PCMA` (G.711 µ-law / A-law), or `Opus` |
| **DTMF** | `rfc2833` |

Choose **credentials** auth when your platform's outbound IP is dynamic, and **IP-based** auth when you can pin a stable set of egress IPs.

## For Vapi

Vapi supports a custom SIP trunk (its "BYO SIP trunk" / SIP provider credential). Create a SIP trunk credential in Vapi and enter your Edesy trunk's SIP URI (`…@trunk.edesy.com`), the transport, and either the SIP username/password or your IP allowlist. Assign your Edesy DID as the phone number on that trunk, then place calls through it.

## For Retell

Retell's custom telephony / elastic SIP trunking accepts an external termination SIP endpoint. Point Retell's trunk at your Edesy SIP URI under `trunk.edesy.com` and supply the same credentials-or-IP auth and codec settings from the table above. Attach your Edesy number to the trunk to make and receive calls.

## For LiveKit

LiveKit SIP connects to external trunks through its outbound (and inbound) trunk configuration. Configure a LiveKit SIP outbound trunk with the Edesy SIP URI as the address, credentials or an allowed-IP setup, and a matching codec/transport, then dial through it from your LiveKit agent.

## Notes on what Edesy provisions vs. what you configure

You configure the trunk endpoint (SIP URI, auth, transport, codecs) in **your** platform. On the Edesy side the termination trunk is created and managed from the trunk portal dashboard — this documentation intentionally does not describe a REST endpoint to create a termination trunk, because that provisioning is done through the dashboard.

## Next

- [WebSocket Streaming](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/connect/websocket-streaming) — for custom agents that want raw audio
- [BYOC](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/connect/byoc) — route calls over your own SIP carrier
- [Phone Numbers](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/api-reference/phone-numbers) — provision and wire the DID you attach to the trunk
