numbers.byo_requires_trunk
Adding a customer-owned number requires an active SIP trunk first.
numbers.byo_requires_trunk means POST /v1/numbers/byo was refused because the workspace does not have a proven, working SIP trunk yet.
A BYO number rides the workspace's own trunk for both signalling and billing, so the trunk has to exist — and be provably working — before a number can be attached to it. This error covers two situations:
PUT /v1/sip-trunk was never called).active: a registration trunk still probing or that failed its REGISTER, or a signaling (ip_allowlist) trunk still waiting on Sautikit's approval review.A pending or pending_approval trunk is deliberately not enough — see Numbers concepts — the lock fires only once the trunk is confirmed working.
Connect a trunk if you have not:
curl -X PUT "https://api.sautikit.com/v1/sip-trunk" \
-H "Authorization: Bearer $SAUTIKIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"label": "Head office trunk", "auth_mode": "registration", "proxy": "sip.example-carrier.com", "transport": "udp", "username": "sautikit_100", "password": "…"}'Then check its status before retrying:
curl "https://api.sautikit.com/v1/sip-trunk" \
-H "Authorization: Bearer $SAUTIKIT_API_KEY"For a registration trunk, status moves from pending to active synchronously during the PUT call itself — a pending/failed result there means the registrar rejected the credentials or was unreachable; correct them and re-PUT. For a signaling trunk, status stays at pending_approval until Sautikit's operations team reviews and approves it — no customer action speeds this up beyond making sure the submitted signalling IPs, media IPs and country code are correct.
{
"error": {
"code": "numbers.byo_requires_trunk",
"message": "connect an active SIP trunk before adding your own numbers",
"request_id": "req_01900000abc"
}
}