Cancel scheduled VPS change

DELETE /api/v2/vps/{id}/actions/upgrade

Cancel the open next-period plan change, resource decrease, or PAYG conversion returned as scheduledChange by GET /api/v2/vps/{id}/actions/upgrade.

The VPS remains on its current fixed plan and configuration.

When the scheduled change had already replaced a renewal invoice, the current-plan renewal is restored and returned as renewalInvoice.

Cancellation is blocked after renewal payment has started or while the change is actively being applied.

VPS Services Plans & Billing

Authentication

Required API scope: write:billing

Authenticate with an API key in the Authorization: Bearer <token> header.

Context

Path Parameters

id string required Example: vps_01hxa3b4c5d6e7f8g9h0j1k2m3

Public VPS ID from GET /api/v2/vps data[].id. Do not invent this value; use the exact ID returned by the referenced API response.

Headers

Authorization Bearer <token>
Accept application/json

Responses

200 Scheduled VPS change cancelled.
cancelled boolean · enum required
true
scheduledChange object required
scheduledChange.status string · enum required
preview
scheduled
awaiting_payment
paid
applying
applied
needs_attention
cancelling
cancelled
scheduledChange.effectiveAt string · nullable required

Nullable: may be null when not applicable.

scheduledChange.invoiceIssueAt string · nullable required

Nullable: may be null when not applicable.

scheduledChange.target object required
scheduledChange.target.productSlug string
scheduledChange.target.resources object

Server-verified allocation after the scheduled change is applied. For VPS plan changes, storageGb can exceed the selected plan's included disk because provisioned primary storage cannot be reduced in place.

scheduledChange.target.billing object required
scheduledChange.target.billing.amount number · nullable required

Nullable: may be null when not applicable.

scheduledChange.target.billing.currencyCode string required
scheduledChange.target.billing.billingCycle string · enum required
monthly
quarterly
semiannually
annually
biennially
triennially
free
scheduledChange.actions object required
scheduledChange.actions.canCancel object required
scheduledChange.actions.canCancel.allowed boolean required
scheduledChange.actions.canCancel.reason string · nullable required

Nullable: may be null when not applicable.

renewalInvoice null required
400 Invalid request. The response body is an RFC 7807 Problem Details document.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
401 Unauthorized. Authentication is required.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
403 Forbidden. The caller lacks a required scope or does not own the resource.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
404 No open scheduled VPS change exists.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
409 The scheduled change cannot be cancelled automatically because payment or application has started.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
429 Rate limited. Retry after the limit resets. 429 responses include Retry-After seconds plus X-RateLimit-* headers.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
500 Internal error. Retry later or contact support if the issue persists.
type string · Example: https://developer.hostup.se/errors/invalid_request
title string · Example: Validation failed
status integer · Example: 400
detail string · Example: The request body failed validation.
code string · Example: invalid_request

Stable machine-readable code. Branch on this field, not on detail.

instance string · Example: /api/v2/orders
requestId string · Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3
timestamp string · Example: 2026-04-27T12:34:56.000Z
errors array<object>

Field-level validation errors when code is invalid_request.

errors[].pointer string required · Example: /items/0/eppCode
errors[].detail string required · Example: `eppCode` is required for this transfer.
errors[].code string required · Example: missing_required
extensions object
DELETE https://cloud.hostup.se/api/v2/vps/{id}/actions/upgrade
For AI assistants
View as Markdown
cURL
curl -X DELETE "https://cloud.hostup.se/api/v2/vps/vps_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/upgrade" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Response
{
  "cancelled": true,
  "scheduledChange": {
    "status": "cancelled",
    "effectiveAt": "2026-08-11T00:00:00.000Z",
    "invoiceIssueAt": "2026-07-28T00:00:00.000Z",
    "target": {
      "productSlug": "vps-xs",
      "billing": {
        "amount": 39,
        "currencyCode": "SEK",
        "billingCycle": "monthly"
      }
    },
    "actions": {
      "canCancel": {
        "allowed": false,
        "reason": "This change has already been cancelled."
      }
    }
  },
  "renewalInvoice": null
}