Phone Numbers
Link a SIP Trunk
deprecated
Link a bring-your-own phone number to SIP trunk credentials.
POST
/
organization-phone-numbers
/
sip-trunks
Link a BYOC phone number with SIP trunk credentials (V1 alias)
curl --request POST \
--url https://api.dialnexa.com/organization-phone-numbers/sip-trunks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-organization-id: <x-organization-id>' \
--data '
{
"phoneNumber": "+14155552671",
"terminationUri": "31974861099010243.zt.plivo.com:5060",
"sipTrunkUserName": "<string>",
"sipTrunkPassword": "<string>",
"nickname": "<string>"
}
'import requests
url = "https://api.dialnexa.com/organization-phone-numbers/sip-trunks"
payload = {
"phoneNumber": "+14155552671",
"terminationUri": "31974861099010243.zt.plivo.com:5060",
"sipTrunkUserName": "<string>",
"sipTrunkPassword": "<string>",
"nickname": "<string>"
}
headers = {
"x-organization-id": "<x-organization-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-organization-id': '<x-organization-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
phoneNumber: '+14155552671',
terminationUri: '31974861099010243.zt.plivo.com:5060',
sipTrunkUserName: '<string>',
sipTrunkPassword: '<string>',
nickname: '<string>'
})
};
fetch('https://api.dialnexa.com/organization-phone-numbers/sip-trunks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dialnexa.com/organization-phone-numbers/sip-trunks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'phoneNumber' => '+14155552671',
'terminationUri' => '31974861099010243.zt.plivo.com:5060',
'sipTrunkUserName' => '<string>',
'sipTrunkPassword' => '<string>',
'nickname' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-organization-id: <x-organization-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dialnexa.com/organization-phone-numbers/sip-trunks"
payload := strings.NewReader("{\n \"phoneNumber\": \"+14155552671\",\n \"terminationUri\": \"31974861099010243.zt.plivo.com:5060\",\n \"sipTrunkUserName\": \"<string>\",\n \"sipTrunkPassword\": \"<string>\",\n \"nickname\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-organization-id", "<x-organization-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.dialnexa.com/organization-phone-numbers/sip-trunks")
.header("x-organization-id", "<x-organization-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phoneNumber\": \"+14155552671\",\n \"terminationUri\": \"31974861099010243.zt.plivo.com:5060\",\n \"sipTrunkUserName\": \"<string>\",\n \"sipTrunkPassword\": \"<string>\",\n \"nickname\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dialnexa.com/organization-phone-numbers/sip-trunks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-organization-id"] = '<x-organization-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phoneNumber\": \"+14155552671\",\n \"terminationUri\": \"31974861099010243.zt.plivo.com:5060\",\n \"sipTrunkUserName\": \"<string>\",\n \"sipTrunkPassword\": \"<string>\",\n \"nickname\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyLegacy endpoint - deprecated. Unversioned endpoints are scheduled for removal on July 31, 2026. Use the
/v1 version for new integrations. This endpoint remains available for existing integrations until then.Related endpoints
- SIP Trunking: configure BYOC routing in the dashboard.
- Create a Phone Number Order: purchase a provider number instead.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
RSA encrypted organization ID (base64 format)
Example:
"BASE64_ENCRYPTED_ORG_ID_HERE"
Body
application/json
E.164 phone number
Example:
"+14155552671"
SIP termination host[:port]; must not use a sip: URI prefix
Example:
"31974861099010243.zt.plivo.com:5060"
SIP authentication username
SIP authentication password (stored encrypted)
Display nickname for this trunk
Response
SIP trunk linked and registered with media server.
Was this page helpful?
Previous
Update Phone NumberChange the agent assigned to a phone number, set or clear the display nickname, or unassign routing without releasing the number.
Next
⌘I
Link a BYOC phone number with SIP trunk credentials (V1 alias)
curl --request POST \
--url https://api.dialnexa.com/organization-phone-numbers/sip-trunks \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'x-organization-id: <x-organization-id>' \
--data '
{
"phoneNumber": "+14155552671",
"terminationUri": "31974861099010243.zt.plivo.com:5060",
"sipTrunkUserName": "<string>",
"sipTrunkPassword": "<string>",
"nickname": "<string>"
}
'import requests
url = "https://api.dialnexa.com/organization-phone-numbers/sip-trunks"
payload = {
"phoneNumber": "+14155552671",
"terminationUri": "31974861099010243.zt.plivo.com:5060",
"sipTrunkUserName": "<string>",
"sipTrunkPassword": "<string>",
"nickname": "<string>"
}
headers = {
"x-organization-id": "<x-organization-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-organization-id': '<x-organization-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
phoneNumber: '+14155552671',
terminationUri: '31974861099010243.zt.plivo.com:5060',
sipTrunkUserName: '<string>',
sipTrunkPassword: '<string>',
nickname: '<string>'
})
};
fetch('https://api.dialnexa.com/organization-phone-numbers/sip-trunks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.dialnexa.com/organization-phone-numbers/sip-trunks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'phoneNumber' => '+14155552671',
'terminationUri' => '31974861099010243.zt.plivo.com:5060',
'sipTrunkUserName' => '<string>',
'sipTrunkPassword' => '<string>',
'nickname' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"x-organization-id: <x-organization-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.dialnexa.com/organization-phone-numbers/sip-trunks"
payload := strings.NewReader("{\n \"phoneNumber\": \"+14155552671\",\n \"terminationUri\": \"31974861099010243.zt.plivo.com:5060\",\n \"sipTrunkUserName\": \"<string>\",\n \"sipTrunkPassword\": \"<string>\",\n \"nickname\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-organization-id", "<x-organization-id>")
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.dialnexa.com/organization-phone-numbers/sip-trunks")
.header("x-organization-id", "<x-organization-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phoneNumber\": \"+14155552671\",\n \"terminationUri\": \"31974861099010243.zt.plivo.com:5060\",\n \"sipTrunkUserName\": \"<string>\",\n \"sipTrunkPassword\": \"<string>\",\n \"nickname\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.dialnexa.com/organization-phone-numbers/sip-trunks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-organization-id"] = '<x-organization-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phoneNumber\": \"+14155552671\",\n \"terminationUri\": \"31974861099010243.zt.plivo.com:5060\",\n \"sipTrunkUserName\": \"<string>\",\n \"sipTrunkPassword\": \"<string>\",\n \"nickname\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body