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

# Register your PBX on Devotel Orbit: trunk endpoint, transport, and registration health

> Point your own PBX or SBC at Orbit — set the SIP endpoint (host/port) and transport (UDP/TCP/TLS) for the trunk URI, learn what registration actually means, and read the rankings the health dashboard puts on your trunk.

# Register your PBX on Orbit

Your PBX (Asterisk, FreeSWITCH, 3CX — anything that speaks SIP) connects to
Orbit through a **BYO-PBX trunk**: an outgoing-direction entry whose host and
port are the SIP endpoint Orbit registers against. Once it registers, the
registration story never resets — when it stops, the platform tells you what
changed. The setup guide's **Step 1 — Pick the direction** names this the
**outgoing** trunk.

## The trunk URI

A BYO-PBX trunk carries its destination as a host, port, and transport — the
termination URI. Angle dialing to `host:port` over UDP, TCP, or TLS, with the
TLS option for an encrypted control path. In the console the list cards render
that URI from the trunk row itself, so a URL-safe display never lies about the
deployed endpoint.

Point the endpoint **at the Orbit edge** only if your provider requires it —
the trunk registers against your own PBX, so `host` is the public hostname (or
IP) of your PBX's SIP endpoint. A NAT rewriting source addresses between
register attempts trips TLS handback; prefer TLS where supported if the trunk
carries sensitive files.

## Registration vs. inbound acceptance

Registration is what turns a BYO-PBX trunk into the path Orbit uses for
outgoing dispatch: while `status === "registered"`, routing decisions prefer
it; when it drops, the console honors your designated failover trunk or the
platform default rather than failing outright. That's different from the
incoming direction — your PBX originate calls straight into Orbit and
**readiness is a config check, not a REGISTER** (see **Settings → SIP trunks →
Incoming**). Don't dispatch outbound through a trunk the console reports
`unregistered` on until you've fixed registration, since the dispatch gate
refuses to launch it.

## Reading registration health

Every outgoing trunk shows registration status on every list card plus a
health snapshot on the detail page. The snapshot threads through
`GET /voice/sip-trunks/health` — a ranked endpoint that buckets trunks by
severity:

* **down** — `status === "unregistered"`: cannot carry outbound calls.
* **degraded** — registered, but a failing streak is in progress
  (`registrationFailureCount > 0`), e.g., a REGISTER that keeps erroring on
  retry.
* **active** — registered, streak-free.
* **unknown** — no probe verdict stamped yet (new trunks, blipped probes).

The same endpoint folds the consecutive-failure streak into
`consecutiveFailures` and stamps `failingSince`, so the operational summary
can say "N failed registration checks since T" rather than only the last
error. Validate your trunk before you save it — the dialog runs a pre-save
probe — and re-run it from the detail page afterward if the registered status
lags.

See [Connect a SIP trunk](sip-trunk-setup) for the full lifecycle walk, and
[SIP trunks troubleshooting](/channels/voice/sip-trunks-troubleshooting) for
registration-specific causes to chase first.
