{
"PhoneNumber": "+12345678901",
"AccountId": "AID-8f3c2a91b4d7"
}curl -X POST https://api.telegent.com/v1.0/numbers/reactivate \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"PhoneNumber": "+12345678901",
"AccountId": "AID-8f3c2a91b4d7"
}'import requests
url = "https://api.telegent.com/v1.0/numbers/reactivate"
payload = {
"PhoneNumber": "<string>",
"AccountId": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({PhoneNumber: '<string>', AccountId: '<string>'})
};
fetch('https://api.telegent.com/v1.0/numbers/reactivate', 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.telegent.com/v1.0/numbers/reactivate",
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' => '<string>',
'AccountId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.telegent.com/v1.0/numbers/reactivate"
payload := strings.NewReader("{\n \"PhoneNumber\": \"<string>\",\n \"AccountId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.telegent.com/v1.0/numbers/reactivate")
.header("Content-Type", "application/json")
.body("{\n \"PhoneNumber\": \"<string>\",\n \"AccountId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telegent.com/v1.0/numbers/reactivate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"PhoneNumber\": \"<string>\",\n \"AccountId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"PhoneNumber": "+12345678901",
"AccountId": "AID-8f3c2a91b4d7",
"Status": "Success",
"StatusMessage": "Number reactivated. A $5 recovery fee has been charged."
}Numbers - Reactivate
Beta — now live in production. Self-service reactivation is live and currently in beta.
Reactivation window: A cancelled number can be reactivated within 30 days of cancellation — while it is in the
Cancelled - Pending Deletestatus. After 30 days it moves toCancelledand is permanently released.
Restore a cancelled phone number back to active status on your account. Reactivation preserves the original MSISDN ↔ ICCID relationship, so the number and SIM do not need to be reprovisioned.
Recovery fee: a $5 recovery fee per number is billed on a successful reactivation. If the carrier refuses the reactivation, the number stays Cancelled - Pending Delete and nothing is charged.
Eligibility: only numbers in Cancelled - Pending Delete can be reactivated. Once a number is Cancelled (after the 30-day window), the request is rejected: Number '<MSISDN>' is not eligible for reactivation. Only numbers with status 'Cancelled - Pending Delete' can be reactivated. A new provision is required instead — POST /v1.0/numbers/provision.
See the Cancelling Numbers guide for how numbers enter the 30-day window.
Error responses (all HTTP 400, nothing is reactivated). Business errors come back as plain text with a trailing TransactionLogId line; model validation errors come back as a JSON object.
- Not eligible / wrong status (plain text):
Number '<MSISDN>' is not eligible for reactivation. Only numbers with status 'Cancelled - Pending Delete' can be reactivated. - Number not found (plain text):
Number not found! - Missing
AccountIdon a multi-account token (plain text):AccountId is required for distributors with multiple accounts. - Validation error — for example a missing
PhoneNumber(JSON object):StatusMessagereadsOne or more validation errors occurred. The PhoneNumber field is required.
{
"PhoneNumber": "+12345678901",
"AccountId": "AID-8f3c2a91b4d7"
}curl -X POST https://api.telegent.com/v1.0/numbers/reactivate \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"PhoneNumber": "+12345678901",
"AccountId": "AID-8f3c2a91b4d7"
}'import requests
url = "https://api.telegent.com/v1.0/numbers/reactivate"
payload = {
"PhoneNumber": "<string>",
"AccountId": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({PhoneNumber: '<string>', AccountId: '<string>'})
};
fetch('https://api.telegent.com/v1.0/numbers/reactivate', 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.telegent.com/v1.0/numbers/reactivate",
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' => '<string>',
'AccountId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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.telegent.com/v1.0/numbers/reactivate"
payload := strings.NewReader("{\n \"PhoneNumber\": \"<string>\",\n \"AccountId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.telegent.com/v1.0/numbers/reactivate")
.header("Content-Type", "application/json")
.body("{\n \"PhoneNumber\": \"<string>\",\n \"AccountId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telegent.com/v1.0/numbers/reactivate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"PhoneNumber\": \"<string>\",\n \"AccountId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"PhoneNumber": "+12345678901",
"AccountId": "AID-8f3c2a91b4d7",
"Status": "Success",
"StatusMessage": "Number reactivated. A $5 recovery fee has been charged."
}Body
ReactivateNumber_Request object