---
title: "Create a SIP trunk"
method: POST
path: "/v1/phone-numbers/sip-trunks"
tags: ["Voice"]
---

# Create a SIP trunk

`POST /v1/phone-numbers/sip-trunks`

Creates a SIP trunk an external voice platform (Retell, ElevenLabs,
Vapi, or any SIP endpoint) can import your Zernio numbers into. The
trunk carries both directions: inbound calls on attached numbers are
delivered to `sipHost`, and the platform originates outbound calls
through `termination.uri` with the digest credentials.

The `digestPassword` is returned only by this call (and by
rotate-credentials); store it immediately. Attach any number of numbers
to a trunk. Several trunks may point at the same host — each carries its
own credentials and spend cap, so separate destination workspaces (e.g.
an agency's clients) stay isolated.

## Request body

- object
  - `label` string, required — Display name for the trunk.
  - `sipHost` string, required — Fully-qualified hostname inbound calls are delivered to (e.g. sip.rtc.elevenlabs.io, sip.retellai.com).
  - `sipPort` integer — Defaults to 5061 for tls, 5060 otherwise.
  - `transport` 'tls' | 'tcp' | 'udp' — Signaling transport toward sipHost. Default tls (with SRTP media).

## Response `201`

Trunk created. The digest password is shown only here and on rotate.

- object
  - `id` string
  - `label` string
  - `sipHost` string
  - `sipPort` integer
  - `transport` 'tls' | 'tcp' | 'udp'
  - `termination` object
    - `uri` string — Telnyx termination host the platform dials for outbound (sip.telnyx.com).
    - `username` string — SIP digest username.
  - `numbersAttached` integer
  - `createdAt` string, date-time, nullable
  - `digestPassword` string — SIP digest password, shown only in this response.

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `403` — SIP trunking is not enabled for this workspace, or the workspace is on legacy (non-usage-based) billing, which cannot invoice trunk call costs (code feature_not_available).
- `409` — The workspace trunk limit was reached (code invalid_resource_state).
- `422` — The host cannot be used as a trunk destination (e.g. a Zernio or carrier host).

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/revisions/1307bc21beec/schema)
