Release phone number
curl --request DELETE \
--url https://app.voxial.pt/api/user/phone-numbers/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.voxial.pt/api/user/phone-numbers/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.voxial.pt/api/user/phone-numbers/{id}', 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://app.voxial.pt/api/user/phone-numbers/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.voxial.pt/api/user/phone-numbers/{id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://app.voxial.pt/api/user/phone-numbers/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.voxial.pt/api/user/phone-numbers/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"message": "Phone number released successfully. It will be removed at the end of the billing period."
}
{
"message": "Phone number deleted successfully."
}
{
"error": "Phone number is already scheduled for release."
}
{
"error": "Phone number not found."
}
{
"error": "Failed to release phone number. Please try again or contact support."
}
Phone Numbers
Release phone number
Release a phone number and cancel its subscription
DELETE
/
user
/
phone-numbers
/
{id}
Release phone number
curl --request DELETE \
--url https://app.voxial.pt/api/user/phone-numbers/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.voxial.pt/api/user/phone-numbers/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.voxial.pt/api/user/phone-numbers/{id}', 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://app.voxial.pt/api/user/phone-numbers/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "DELETE",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.voxial.pt/api/user/phone-numbers/{id}"
req, _ := http.NewRequest("DELETE", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.delete("https://app.voxial.pt/api/user/phone-numbers/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.voxial.pt/api/user/phone-numbers/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Delete.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"message": "Phone number released successfully. It will be removed at the end of the billing period."
}
{
"message": "Phone number deleted successfully."
}
{
"error": "Phone number is already scheduled for release."
}
{
"error": "Phone number not found."
}
{
"error": "Failed to release phone number. Please try again or contact support."
}
This endpoint releases a phone number from your account. For dedicated numbers with subscriptions, this cancels the subscription and the number will be released at the end of the current billing period.
Path Parameters
integer
required
The unique identifier of the phone number to release
Response
string
Success message indicating the release status
{
"message": "Phone number released successfully. It will be removed at the end of the billing period."
}
{
"message": "Phone number deleted successfully."
}
{
"error": "Phone number is already scheduled for release."
}
{
"error": "Phone number not found."
}
{
"error": "Failed to release phone number. Please try again or contact support."
}
Release Behavior
The release behavior depends on the phone number type:| Type | Behavior |
|---|---|
| Dedicated (normal) | Subscription is cancelled. Number remains active until the end of the billing period, then is released. |
| SIP | Immediately deleted from your account. |
| Caller ID | Immediately deleted from your account and removed from the telephony provider. |
Once a phone number is released, you may not be able to get the same number back. Make sure to update any assistants or campaigns using this number before releasing it.
What Happens to Attached Resources
When you release a phone number:- Any inbound assistants attached to this number will have their phone number unassigned
- Any campaigns using this number will have it removed from their phone number rotation
- Call history is preserved and remains accessible
⌘I

