numbers.byo_requires_trunk
Adding a customer-owned number requires an active SIP trunk first.
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 working carrier trunk yet.
A number you bring from your own carrier is carried on the workspace's SIP trunk, so the trunk has to be active before a number can be added to it. One of two things is true:
PUT /v1/sip-trunk was never called).active: a registration trunk whose registration failed, or an ip_allowlist trunk still waiting for Sautikit's review.A pending or pending_approval trunk is not enough. See Bring your own carrier.
Connect a trunk if you have not:
await fetch("https://api.sautikit.com/v1/sip-trunk", {
method: "PUT",
headers: {
Authorization: `Bearer ${process.env.SAUTIKIT_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
label: "Head office trunk",
auth_mode: "registration",
proxy: "sip.example-carrier.com",
transport: "udp",
username: "sautikit_100",
password: process.env.CARRIER_SIP_PASSWORD,
}),
});Then read status from GET /v1/sip-trunk before you retry.
registration trunk becomes active during the PUT itself. A failed result means your carrier rejected the credentials or could not be reached. Correct them and PUT again.ip_allowlist trunk stays at pending_approval until Sautikit reviews it. Make sure the signalling IPs, media IPs and country code you submitted are correct.{
"error": {
"code": "numbers.byo_requires_trunk",
"message": "connect an active SIP trunk before adding your own numbers",
"request_id": "req_01900000abc"
}
}