Get region change options
curl --request GET \
--url https://rdp.sh/api/v1/servers/{server}/region-changes \
--header 'Authorization: <api-key>'import requests
url = "https://rdp.sh/api/v1/servers/{server}/region-changes"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://rdp.sh/api/v1/servers/{server}/region-changes', 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://rdp.sh/api/v1/servers/{server}/region-changes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$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://rdp.sh/api/v1/servers/{server}/region-changes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://rdp.sh/api/v1/servers/{server}/region-changes")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://rdp.sh/api/v1/servers/{server}/region-changes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": true,
"available": true,
"price": {
"amount": 2.5,
"net": 2.1,
"vat_rate": 19,
"currency": "EUR"
},
"regions": [
{
"id": 1,
"region": "nl",
"location": "Amsterdam",
"in_stock": true,
"ipv6": true
}
],
"unavailable_reason": "This server is suspended, so it cannot be moved to another location.",
"current_region": {
"id": 1,
"region": "nl",
"location": "Amsterdam"
},
"latest_region_change": {
"id": 17,
"server_id": 123,
"status": "running",
"mode": "transfer",
"step": "Copying the disk",
"progress": 46,
"from_region": {
"id": 1,
"region": "nl",
"location": "Amsterdam"
},
"to_region": {
"id": 1,
"region": "nl",
"location": "Amsterdam"
},
"distro": "Ubuntu 24.04",
"old_ip": "45.138.16.20",
"new_ip": "147.90.219.31",
"new_server_id": 123,
"deployment_id": 123,
"invoice_id": 123,
"refunded": true,
"error": "<string>",
"created_at": "2026-10-21T12:00:00+00:00",
"finished_at": "<string>"
}
}{
"status": false,
"error": "This action is unauthorized"
}Servers
Get Region Change Options
Lists the locations a server can be moved to, whether each has room for the server’s plan, the price of a move, and the latest move of the server. A server cannot be moved while it is suspended, expired, being installed, or busy with an IP change, another move or a backup.
GET
/
servers
/
{server}
/
region-changes
Get region change options
curl --request GET \
--url https://rdp.sh/api/v1/servers/{server}/region-changes \
--header 'Authorization: <api-key>'import requests
url = "https://rdp.sh/api/v1/servers/{server}/region-changes"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://rdp.sh/api/v1/servers/{server}/region-changes', 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://rdp.sh/api/v1/servers/{server}/region-changes",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$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://rdp.sh/api/v1/servers/{server}/region-changes"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://rdp.sh/api/v1/servers/{server}/region-changes")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://rdp.sh/api/v1/servers/{server}/region-changes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"status": true,
"available": true,
"price": {
"amount": 2.5,
"net": 2.1,
"vat_rate": 19,
"currency": "EUR"
},
"regions": [
{
"id": 1,
"region": "nl",
"location": "Amsterdam",
"in_stock": true,
"ipv6": true
}
],
"unavailable_reason": "This server is suspended, so it cannot be moved to another location.",
"current_region": {
"id": 1,
"region": "nl",
"location": "Amsterdam"
},
"latest_region_change": {
"id": 17,
"server_id": 123,
"status": "running",
"mode": "transfer",
"step": "Copying the disk",
"progress": 46,
"from_region": {
"id": 1,
"region": "nl",
"location": "Amsterdam"
},
"to_region": {
"id": 1,
"region": "nl",
"location": "Amsterdam"
},
"distro": "Ubuntu 24.04",
"old_ip": "45.138.16.20",
"new_ip": "147.90.219.31",
"new_server_id": 123,
"deployment_id": 123,
"invoice_id": 123,
"refunded": true,
"error": "<string>",
"created_at": "2026-10-21T12:00:00+00:00",
"finished_at": "<string>"
}
}{
"status": false,
"error": "This action is unauthorized"
}Authorizations
Path Parameters
Response
The locations the server can move to, and the price.
Example:
true
Whether the server can be moved right now.
Example:
true
Show child attributes
Show child attributes
Every other location that offers the server's plan.
Show child attributes
Show child attributes
Why the server cannot be moved right now, or null.
Example:
"This server is suspended, so it cannot be moved to another location."
Show child attributes
Show child attributes
A move of a server to another location.
Show child attributes
Show child attributes