curl --request POST \
--url https://console.advinservers.com/api/v1/client/servers/{server}/upgrades \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"plan_key": "84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc",
"resize_disk": true,
"acknowledge_ip_replacement": false,
"quote_token": "eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0="
}
'import requests
url = "https://console.advinservers.com/api/v1/client/servers/{server}/upgrades"
payload = {
"plan_key": "84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc",
"resize_disk": True,
"acknowledge_ip_replacement": False,
"quote_token": "eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0="
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
plan_key: '84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc',
resize_disk: true,
acknowledge_ip_replacement: false,
quote_token: 'eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0='
})
};
fetch('https://console.advinservers.com/api/v1/client/servers/{server}/upgrades', 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://console.advinservers.com/api/v1/client/servers/{server}/upgrades",
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([
'plan_key' => '84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc',
'resize_disk' => true,
'acknowledge_ip_replacement' => false,
'quote_token' => 'eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0='
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://console.advinservers.com/api/v1/client/servers/{server}/upgrades"
payload := strings.NewReader("{\n \"plan_key\": \"84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc\",\n \"resize_disk\": true,\n \"acknowledge_ip_replacement\": false,\n \"quote_token\": \"eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0=\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://console.advinservers.com/api/v1/client/servers/{server}/upgrades")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"plan_key\": \"84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc\",\n \"resize_disk\": true,\n \"acknowledge_ip_replacement\": false,\n \"quote_token\": \"eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0=\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://console.advinservers.com/api/v1/client/servers/{server}/upgrades")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"plan_key\": \"84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc\",\n \"resize_disk\": true,\n \"acknowledge_ip_replacement\": false,\n \"quote_token\": \"eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0=\"\n}"
response = http.request(request)
puts response.read_body{
"uuid": "2946b7c6-1b8d-4279-880f-629c9dd8f48c",
"status": "pending_payment",
"status_label": "Paying from account credit",
"stage": "awaiting_billing",
"progress": 0,
"progress_message": "Paying for the change from your account credit.",
"location_change_fee": "0.00",
"billing": {
"service_id": null,
"invoice_id": null,
"invoice_url": null,
"checkout_uuid": null,
"invoice_status": null,
"amount": "6.00",
"currency": "USD",
"billing_cycle": null,
"payment_due_at": "2026-09-14T17:12:09+00:00",
"payment_window_minutes": null,
"paid_at": null
},
"source_location": "Kansas City, MO",
"target_location": "Kansas City, MO",
"requires_migration": false,
"crosses_location": false,
"requires_ip_replacement": false,
"resize_disk": true,
"plan_name": "Standard 8 GB",
"product_group_name": "Standard VPS",
"source_cpu": 4,
"source_memory": 4294967296,
"source_disk": 85899345920,
"source_bandwidth": 5497558138880,
"target_cpu": 6,
"target_memory": 8589934592,
"target_disk": 171798691840,
"target_bandwidth": 10995116277760,
"transferred_bytes": null,
"total_bytes": null,
"can_cancel": true,
"error": null,
"support_reference": null,
"created_at": "2026-09-14T16:42:09+00:00",
"started_at": null,
"completed_at": null
}{
"message": "Unauthenticated."
}{
"message": "This API key is not allowed to do that in this team. It needs the \"snapshot.delete\" permission."
}{
"message": "Not found."
}{
"message": "The name field is required.",
"errors": {}
}{
"message": "Too Many Attempts."
}Buy a plan change
Overview
Reserves capacity and creates an invoice for a plan change. Payment is required. Send the quote_token with the same plan_key and resize_disk used for the quote. Include acknowledge_ip_replacement if the quote requires an IP address change.
The server changes only after payment. Payment details are in billing. The reservation expires if payment is not received by billing.payment_due_at. Use the current-upgrade endpoint to track progress.
Permissions
Requires the billing.purchase (Make purchases) permission for the selected team. Resources outside that team return 404.
curl --request POST \
--url https://console.advinservers.com/api/v1/client/servers/{server}/upgrades \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"plan_key": "84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc",
"resize_disk": true,
"acknowledge_ip_replacement": false,
"quote_token": "eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0="
}
'import requests
url = "https://console.advinservers.com/api/v1/client/servers/{server}/upgrades"
payload = {
"plan_key": "84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc",
"resize_disk": True,
"acknowledge_ip_replacement": False,
"quote_token": "eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0="
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
plan_key: '84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc',
resize_disk: true,
acknowledge_ip_replacement: false,
quote_token: 'eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0='
})
};
fetch('https://console.advinservers.com/api/v1/client/servers/{server}/upgrades', 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://console.advinservers.com/api/v1/client/servers/{server}/upgrades",
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([
'plan_key' => '84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc',
'resize_disk' => true,
'acknowledge_ip_replacement' => false,
'quote_token' => 'eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0='
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://console.advinservers.com/api/v1/client/servers/{server}/upgrades"
payload := strings.NewReader("{\n \"plan_key\": \"84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc\",\n \"resize_disk\": true,\n \"acknowledge_ip_replacement\": false,\n \"quote_token\": \"eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0=\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://console.advinservers.com/api/v1/client/servers/{server}/upgrades")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"plan_key\": \"84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc\",\n \"resize_disk\": true,\n \"acknowledge_ip_replacement\": false,\n \"quote_token\": \"eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0=\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://console.advinservers.com/api/v1/client/servers/{server}/upgrades")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"plan_key\": \"84ee2bf7fc22f495e76aead064154e1d5ae66fee1ac71cda7cf48d9e607a60bc\",\n \"resize_disk\": true,\n \"acknowledge_ip_replacement\": false,\n \"quote_token\": \"eyJpdiI6InZVUENaRU81VXMyL1psak9tNS8xTGc9PSIsInZhbHVlIjoib2JiS0ZkbXVmREY0OXBHeXorZEx5Wi81Z3F1UzF0L3RENFBnNTFIZHJ6YUl3RGZYclUrbWoydFpOYkkyT1Q2SklmbVlYdGU4WEVHaWlPRHBQbExSUnp4VkdZbk1ZY0JRZ0U4d0NNbDB1eFVSbVFIZ0xkdkxLdDZzZTZodkFZdEFqV3dBTk1HaTVPNWRpTmpJdjlQSEVNNjZjYWV1UnhGUW1pTEovY2VSQUdPMEg3MDRldWxEN2tBc0Rzd1VEK2pNa01uNEx1bXlLSExZUldobUw0ODVWbWlNZjlKRWIvTFJlaThQd1A0S2kwY3dFejgrZ2NmczZlWGdLVENRL1VoelBJczJ0LzgxMTBXZnlOaFRHSEplRk0zWTQ5cXZHRXhlUGFyV292ZGRHN0FpaWtVVzZhUnFBOGRLcm40TUx3TFIiLCJtYWMiOiJhNmViM2NiYTY0OWI5ZTUxMDkzNGQxYjBkMjRmMWIzZTg2NWE4MWMzYjk2YjIxZDc1NTAyMThjMTliYWQzZGM2IiwidGFnIjoiIn0=\"\n}"
response = http.request(request)
puts response.read_body{
"uuid": "2946b7c6-1b8d-4279-880f-629c9dd8f48c",
"status": "pending_payment",
"status_label": "Paying from account credit",
"stage": "awaiting_billing",
"progress": 0,
"progress_message": "Paying for the change from your account credit.",
"location_change_fee": "0.00",
"billing": {
"service_id": null,
"invoice_id": null,
"invoice_url": null,
"checkout_uuid": null,
"invoice_status": null,
"amount": "6.00",
"currency": "USD",
"billing_cycle": null,
"payment_due_at": "2026-09-14T17:12:09+00:00",
"payment_window_minutes": null,
"paid_at": null
},
"source_location": "Kansas City, MO",
"target_location": "Kansas City, MO",
"requires_migration": false,
"crosses_location": false,
"requires_ip_replacement": false,
"resize_disk": true,
"plan_name": "Standard 8 GB",
"product_group_name": "Standard VPS",
"source_cpu": 4,
"source_memory": 4294967296,
"source_disk": 85899345920,
"source_bandwidth": 5497558138880,
"target_cpu": 6,
"target_memory": 8589934592,
"target_disk": 171798691840,
"target_bandwidth": 10995116277760,
"transferred_bytes": null,
"total_bytes": null,
"can_cancel": true,
"error": null,
"support_reference": null,
"created_at": "2026-09-14T16:42:09+00:00",
"started_at": null,
"completed_at": null
}{
"message": "Unauthenticated."
}{
"message": "This API key is not allowed to do that in this team. It needs the \"snapshot.delete\" permission."
}{
"message": "Not found."
}{
"message": "The name field is required.",
"errors": {}
}{
"message": "Too Many Attempts."
}Authorizations
Your API key, sent as a bearer token. Create one in the control panel under API Keys, give it only the permissions the integration needs, and copy it when it is created. It cannot be shown again. Each key is restricted to one owned team. The key determines the team for every request.
Path Parameters
The server UUID
"ecc6f4f1"
Body
Send a JSON object containing the fields below. Required fields are marked in the schema.
Response
The record, as a JSON object. There is no envelope.
A plan change, as the customer who bought it is shown one.
The uuid UUID.
"2946b7c6-1b8d-4279-880f-629c9dd8f48c"
The value of status.
pending_payment, queued, stopping, migrating, resizing, networking, finalizing, completed, failed, expired, payment_review, cancelled "pending_payment"
The value of status_label.
"Paying from account credit"
The value of stage.
"awaiting_billing"
The value of progress.
0
The value of progress_message.
"Paying for the change from your account credit."
The value of location_change_fee.
"0.00"
The value of billing.
Show child attributes
Show child attributes
{
"service_id": null,
"invoice_id": null,
"invoice_url": null,
"checkout_uuid": null,
"invoice_status": null,
"amount": "6.00",
"currency": "USD",
"billing_cycle": null,
"payment_due_at": "2026-09-14T17:12:09+00:00",
"payment_window_minutes": null,
"paid_at": null
}
The value of source_location.
"Kansas City, MO"
The value of target_location.
"Kansas City, MO"
Whether this action requires migration.
false
The value of crosses_location.
false
Whether this action requires ip replacement.
false
The value of resize_disk.
true
The value of plan_name.
"Standard 8 GB"
The value of product_group_name.
"Standard VPS"
The plan the customer bought, spelled out against what the server has today. These are the snapshot taken at checkout, so they keep describing the change even after the feed moves on.
4
The value of source_memory.
4294967296
The value of source_disk.
85899345920
The value of source_bandwidth.
5497558138880
The value of target_cpu.
6
The value of target_memory.
8589934592
The value of target_disk.
171798691840
The value of target_bandwidth.
10995116277760
The value of transferred_bytes.
null
The value of total_bytes.
null
Whether the customer can cancel.
true
A customer-safe explanation of the failure. Internal billing diagnostics are never published here.
null
The value of support_reference.
null
The date and time for created at, in UTC.
"2026-09-14T16:42:09+00:00"
The date and time for started at, in UTC.
null
The date and time for completed at, in UTC.
null