Cloud Panel

Change the plan

POST/api/v1/vms/{vm_uuid}/resize

Moves the server to another plan on the same hardware. Between a plan and its -dedicated twin the change is live; a plan with other vCPU or memory stops the server and starts it again, usually within a minute. The disk and the addresses stay, and the new price applies from the next hour.

Parameters

NameInDescription
vm_uuidpath, stringrequiredServer id, from Create a VM or List VMs

Request body

FieldTypeDescription
vm_class_idintegerrequiredThe new plan, from List plans, on the same hardware

Example request

curl -X POST "https://platform.serverscamp.com/api/v1/vms/$VM_UUID/resize" \
  -H "Authorization: Bearer $API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "vm_class_id": 50
  }'

Answer

Status 202 with this body.

FieldTypeDescription
vm_uuidstringrequired
from_class_namestring, optionalPlan before
to_class_namestring, optionalPlan after
needs_restartbooleanrequiredThe server restarts: the vCPU or memory change. Shared to dedicated of the same size does not restart it
stepstringrequiredqueued, applying, done or failed
started_atstringrequired
completed_atstring, optional
errorstring, optionalWhat went wrong, when step is failed
{
  "vm_uuid": "6f1c2a9e-4b3d-4e8a-9c71-2d5e8f0a1b34",
  "from_class_name": "basic-4g",
  "to_class_name": "basic-4g-dedicated",
  "needs_restart": false,
  "step": "queued",
  "started_at": "2026-11-01T10:02:11+00:00",
  "completed_at": null,
  "error": null
}

Wait until it is ready

The answer comes at once and the work runs in the background. The job's own status shows how far it got.

Check the status

Ask Plan change status with the server's id; the field to watch is step:

curl "https://platform.serverscamp.com/api/v1/vms/$VM_UUID/resize/status" \
  -H "Authorization: Bearer $API_TOKEN"
stepWhat it means
queuedWaiting for its turn
applyingThe change runs
doneFinished
failedSomething went wrong; the error field says what

Wait in a loop

Ask every few seconds until it gets there, and stop on an error.

# VM_UUID: vm_uuid of the server, from the answer above
while true; do
  JOB=$(curl -s "https://platform.serverscamp.com/api/v1/vms/$VM_UUID/resize/status" -H "Authorization: Bearer $API_TOKEN")
  STEP=$(echo "$JOB" | jq -r .step)
  echo "$STEP"
  [ "$STEP" = done ] && break
  [ "$STEP" = failed ] && { echo "$JOB" | jq -r .error; exit 1; }
  sleep 5
done

The bash version needs jq.

Errors

StatusWhen
400A plan on other hardware, or one the account may not have
401No token, or a token that is not valid
404No such server in your account
409The server is busy with another operation
422The body or a parameter is not what the operation takes

Every operation can also answer 401 without a valid token. All errors