Get VPS upgrade options

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

Return available plan changes, current configurable resource options, and any next-period change already scheduled for one VPS.

Get {id} from GET /api/v2/vps data[].id.

Use availablePlans[].slug with POST /api/v2/vps/{id}/actions/upgrade when changing plan.

Use configurableOptions[].key with POST /api/v2/vps/{id}/actions/config when changing only options such as bandwidthGb, backupSlots, snapshotSlots, ipv4Count, or additionalStorageGb.

A non-null scheduledChange blocks another plan, resource, or PAYG conversion change until it is applied or cancelled with DELETE /api/v2/vps/{id}/actions/upgrade.

Snapshot endpoints do not sell snapshot capacity directly; if GET /api/v2/vps/{id}/snapshots or /snapshot-schedules reports available: false or limits.totalSnapshots: 0, add snapshot slots here through snapshotSlots or change to a plan that includes snapshots.

VPS Services Plans & Billing

Authentication

Required API scope: read:services

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 VPS plan and configurable-option change options.
vpsId string · Example: vps_01hxa3b4c5d6e7f8g9h0j1k2m3
currentProduct null
configurableOptions array<object>

Current product configurable options such as bandwidthGb, backupSlots, ipv4Count, or additionalStorageGb. To change only these values, use POST /api/v2/vps/{id}/actions/config, not actions/upgrade.

configurableOptions[].key string required · Example: bandwidthGb

Canonical resource option key accepted under resources by POST /api/v2/vps/{id}/actions/config.

configurableOptions[].label string required · Example: Bandwidth
configurableOptions[].type string · enum required · Example: slider
slider
quantity
toggle
input
select
configurableOptions[].min number · Example: 1024
configurableOptions[].max number · Example: 10240
configurableOptions[].step number · Example: 1024
configurableOptions[].default number | string | boolean · nullable · Example: 2048

Nullable: may be null when not applicable.

configurableOptions[].currentValue number | string | boolean · nullable required · Example: 2048

Nullable: may be null when not applicable.

configurableOptions[].unit string · nullable · Example: GB

Nullable: may be null when not applicable.

configurableOptions[].pricing array<object>
configurableOptions[].pricing[].billingCycle string required
configurableOptions[].pricing[].amount number required
configurableOptions[].pricing[].currencyCode string required
configurableOptions[].includedAtBase number · nullable · Example: 2048

Option amount included by the current VPS plan before paid adjustments.

configurableOptions[].required boolean
configurableOptions[].choices array<object>
configurableOptions[].choices[].value string required
configurableOptions[].choices[].label string required
configurableOptions[].choices[].osTemplateId string
configurableOptions[].constraints object

Runtime constraints. For bandwidth this can raise the effective minimum above the product minimum based on current usage.

configurableOptions[].constraints.min number · nullable required · Example: 2048

Nullable: may be null when not applicable.

configurableOptions[].constraints.max number · nullable required · Example: 10240

Nullable: may be null when not applicable.

configurableOptions[].constraints.step number · nullable required · Example: 1024

Nullable: may be null when not applicable.

configurableOptions[].constraints.unit string · nullable required · Example: GB

Nullable: may be null when not applicable.

configurableOptions[].constraints.currentValue number | string | boolean · nullable required · Example: 2048

Nullable: may be null when not applicable.

configurableOptions[].constraints.effectiveMin number · nullable required · Example: 2048

Nullable: may be null when not applicable.

configurableOptions[].constraints.effectiveMax number · nullable required · Example: 10240

Nullable: may be null when not applicable.

configurableOptions[].constraints.usage object
configurableOptions[].constraints.usage.bandwidthUsedGb number required · Example: 193.483

Current-period bandwidth already used, when it affects the minimum orderable bandwidth.

configurableOptions[].constraints.actions object required
configurableOptions[].constraints.actions.canDecrease object required
configurableOptions[].constraints.actions.canDecrease.allowed boolean required
configurableOptions[].constraints.actions.canDecrease.reason string · nullable required

Nullable: may be null when not applicable.

configurableOptions[].constraints.actions.canIncrease object required
configurableOptions[].constraints.actions.canIncrease.allowed boolean required
configurableOptions[].constraints.actions.canIncrease.reason string · nullable required

Nullable: may be null when not applicable.

configurableOptions[].actions object
configurableOptions[].actions.canDecrease object required
configurableOptions[].actions.canDecrease.allowed boolean required
configurableOptions[].actions.canDecrease.reason string · nullable required

Nullable: may be null when not applicable.

configurableOptions[].actions.canIncrease object required
configurableOptions[].actions.canIncrease.allowed boolean required
configurableOptions[].actions.canIncrease.reason string · nullable required

Nullable: may be null when not applicable.

availablePlans array<object>
availablePlans[].id string · nullable required · Example: vpsprod_01hxa3b4c5d6e7f8g9h0j1k2m3

Nullable: may be null when not applicable.

availablePlans[].slug string · nullable required · Example: vps-sm

Canonical plan slug to send as productSlug when changing plan.

availablePlans[].tier string required · Example: sm
availablePlans[].name string · nullable required · Example: VPS SM

Nullable: may be null when not applicable.

availablePlans[].resources object required
availablePlans[].resources.cpuCores number · nullable required · Example: 2

Nullable: may be null when not applicable.

availablePlans[].resources.memoryGb number · nullable required · Example: 4

Nullable: may be null when not applicable.

availablePlans[].resources.storageGb number · nullable required · Example: 80

Nullable: may be null when not applicable.

availablePlans[].bandwidth object required
availablePlans[].bandwidth.limitGb number · nullable required · Example: 2048

Nullable: may be null when not applicable.

availablePlans[].billing object required
availablePlans[].billing.amount number required · Example: 149
availablePlans[].billing.currencyCode string required · Example: SEK
availablePlans[].billing.billingCycle string required · Example: monthly
availablePlans[].billingCycles array<object> required · Example: [{"billingCycle":"monthly","amount":149,"currencyCode":"SEK","isPrimary":true,"setupAmo...
availablePlans[].billingCycles[].billingCycle string required · Example: monthly
availablePlans[].billingCycles[].amount number required · Example: 149
availablePlans[].billingCycles[].currencyCode string required · Example: SEK
availablePlans[].billingCycles[].isPrimary boolean required · Example: true
availablePlans[].billingCycles[].setupAmount number · nullable required · Example: null

One-time setup fee for this billing cycle. Null when no setup fee applies.

availablePlans[].availabilityStatus string · enum required · Example: available
available
hidden
out_of_stock
availablePlans[].available boolean required · Example: true
availablePlans[].reason string · nullable required · Example: null

Nullable: may be null when not applicable.

availablePlans[].actions object required
availablePlans[].actions.canApply object required
availablePlans[].actions.canApply.allowed boolean required
availablePlans[].actions.canApply.reason string · nullable required

Nullable: may be null when not applicable.

actions object
actions.canChangeProduct object required
actions.canChangeProduct.allowed boolean required
actions.canChangeProduct.reason string · nullable required

Nullable: may be null when not applicable.

scheduledChange null
blocker object
blocker.code string · enum required
pending_order_blocking
existing_invoice_blocking
blocker.reason string required
blocker.blockingInvoice object
blocker.blockingInvoice.id string required · Example: inv_01hxa3b4c5d6e7f8g9h0j1k2m3
blocker.blockingInvoice.number string · nullable required · Example: 202600001

Nullable: may be null when not applicable.

blocker.blockingInvoice.amount number required · Example: 12.99
blocker.blockingInvoice.currencyCode string required · Example: EUR
blocker.blockingInvoice.dueAt string · nullable required

Nullable: may be null when not applicable.

blocker.blockingInvoice.status string · enum required
draft
unpaid
partially_paid
paid
cancelled
refunded
blocker.blockingInvoice.paymentUrl string · nullable required

Customer-facing URL for opening the invoice.

blocker.blockingInvoice.paymentMethods object
blocker.blockingInvoice.paymentMethods.card object required
blocker.blockingInvoice.paymentMethods.card.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
blocker.blockingInvoice.paymentMethods.card.label string required · Example: Card
blocker.blockingInvoice.paymentMethods.card.available boolean required · Example: true
blocker.blockingInvoice.paymentMethods.card.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

blocker.blockingInvoice.paymentMethods.card.reason string · nullable required · Example: null

Human-readable blocker when available is false.

blocker.blockingInvoice.paymentMethods.card.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
blocker.blockingInvoice.paymentMethods.card.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

blocker.blockingInvoice.paymentMethods.card.requirements.invoiceCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.card.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
blocker.blockingInvoice.paymentMethods.card.requirements.accountCountryCode string · Example: SE
blocker.blockingInvoice.paymentMethods.card.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

blocker.blockingInvoice.paymentMethods.card.requirements.accountType string · enum · Example: private
private
organisation
blocker.blockingInvoice.paymentMethods.card.requirements.accountCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.card.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

blocker.blockingInvoice.paymentMethods.card.requirements.availableBalance object
blocker.blockingInvoice.paymentMethods.card.requirements.availableBalance.amount number required · Example: 100
blocker.blockingInvoice.paymentMethods.card.requirements.availableBalance.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.card.requirements.minimumAmount object
blocker.blockingInvoice.paymentMethods.card.requirements.minimumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.card.requirements.minimumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.card.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.card.requirements.maximumAmount object
blocker.blockingInvoice.paymentMethods.card.requirements.maximumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.card.requirements.maximumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.card.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.accountCredit object required
blocker.blockingInvoice.paymentMethods.accountCredit.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
blocker.blockingInvoice.paymentMethods.accountCredit.label string required · Example: Card
blocker.blockingInvoice.paymentMethods.accountCredit.available boolean required · Example: true
blocker.blockingInvoice.paymentMethods.accountCredit.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

blocker.blockingInvoice.paymentMethods.accountCredit.reason string · nullable required · Example: null

Human-readable blocker when available is false.

blocker.blockingInvoice.paymentMethods.accountCredit.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
blocker.blockingInvoice.paymentMethods.accountCredit.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

blocker.blockingInvoice.paymentMethods.accountCredit.requirements.invoiceCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.accountCountryCode string · Example: SE
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

blocker.blockingInvoice.paymentMethods.accountCredit.requirements.accountType string · enum · Example: private
private
organisation
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.accountCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

blocker.blockingInvoice.paymentMethods.accountCredit.requirements.availableBalance object
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.availableBalance.amount number required · Example: 100
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.availableBalance.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.minimumAmount object
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.minimumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.minimumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.maximumAmount object
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.maximumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.maximumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.accountCredit.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.swish object required
blocker.blockingInvoice.paymentMethods.swish.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
blocker.blockingInvoice.paymentMethods.swish.label string required · Example: Card
blocker.blockingInvoice.paymentMethods.swish.available boolean required · Example: true
blocker.blockingInvoice.paymentMethods.swish.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

blocker.blockingInvoice.paymentMethods.swish.reason string · nullable required · Example: null

Human-readable blocker when available is false.

blocker.blockingInvoice.paymentMethods.swish.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
blocker.blockingInvoice.paymentMethods.swish.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

blocker.blockingInvoice.paymentMethods.swish.requirements.invoiceCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.swish.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
blocker.blockingInvoice.paymentMethods.swish.requirements.accountCountryCode string · Example: SE
blocker.blockingInvoice.paymentMethods.swish.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

blocker.blockingInvoice.paymentMethods.swish.requirements.accountType string · enum · Example: private
private
organisation
blocker.blockingInvoice.paymentMethods.swish.requirements.accountCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.swish.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

blocker.blockingInvoice.paymentMethods.swish.requirements.availableBalance object
blocker.blockingInvoice.paymentMethods.swish.requirements.availableBalance.amount number required · Example: 100
blocker.blockingInvoice.paymentMethods.swish.requirements.availableBalance.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.swish.requirements.minimumAmount object
blocker.blockingInvoice.paymentMethods.swish.requirements.minimumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.swish.requirements.minimumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.swish.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.swish.requirements.maximumAmount object
blocker.blockingInvoice.paymentMethods.swish.requirements.maximumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.swish.requirements.maximumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.swish.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.bankgiro object required
blocker.blockingInvoice.paymentMethods.bankgiro.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
blocker.blockingInvoice.paymentMethods.bankgiro.label string required · Example: Card
blocker.blockingInvoice.paymentMethods.bankgiro.available boolean required · Example: true
blocker.blockingInvoice.paymentMethods.bankgiro.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

blocker.blockingInvoice.paymentMethods.bankgiro.reason string · nullable required · Example: null

Human-readable blocker when available is false.

blocker.blockingInvoice.paymentMethods.bankgiro.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
blocker.blockingInvoice.paymentMethods.bankgiro.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

blocker.blockingInvoice.paymentMethods.bankgiro.requirements.invoiceCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.accountCountryCode string · Example: SE
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

blocker.blockingInvoice.paymentMethods.bankgiro.requirements.accountType string · enum · Example: private
private
organisation
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.accountCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

blocker.blockingInvoice.paymentMethods.bankgiro.requirements.availableBalance object
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.availableBalance.amount number required · Example: 100
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.availableBalance.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.minimumAmount object
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.minimumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.minimumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.maximumAmount object
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.maximumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.maximumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.bankgiro.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.sepa object required
blocker.blockingInvoice.paymentMethods.sepa.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
blocker.blockingInvoice.paymentMethods.sepa.label string required · Example: Card
blocker.blockingInvoice.paymentMethods.sepa.available boolean required · Example: true
blocker.blockingInvoice.paymentMethods.sepa.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

blocker.blockingInvoice.paymentMethods.sepa.reason string · nullable required · Example: null

Human-readable blocker when available is false.

blocker.blockingInvoice.paymentMethods.sepa.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
blocker.blockingInvoice.paymentMethods.sepa.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

blocker.blockingInvoice.paymentMethods.sepa.requirements.invoiceCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.sepa.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
blocker.blockingInvoice.paymentMethods.sepa.requirements.accountCountryCode string · Example: SE
blocker.blockingInvoice.paymentMethods.sepa.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

blocker.blockingInvoice.paymentMethods.sepa.requirements.accountType string · enum · Example: private
private
organisation
blocker.blockingInvoice.paymentMethods.sepa.requirements.accountCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.sepa.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

blocker.blockingInvoice.paymentMethods.sepa.requirements.availableBalance object
blocker.blockingInvoice.paymentMethods.sepa.requirements.availableBalance.amount number required · Example: 100
blocker.blockingInvoice.paymentMethods.sepa.requirements.availableBalance.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.sepa.requirements.minimumAmount object
blocker.blockingInvoice.paymentMethods.sepa.requirements.minimumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.sepa.requirements.minimumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.sepa.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.sepa.requirements.maximumAmount object
blocker.blockingInvoice.paymentMethods.sepa.requirements.maximumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.sepa.requirements.maximumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.sepa.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.alipay object required
blocker.blockingInvoice.paymentMethods.alipay.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
blocker.blockingInvoice.paymentMethods.alipay.label string required · Example: Card
blocker.blockingInvoice.paymentMethods.alipay.available boolean required · Example: true
blocker.blockingInvoice.paymentMethods.alipay.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

blocker.blockingInvoice.paymentMethods.alipay.reason string · nullable required · Example: null

Human-readable blocker when available is false.

blocker.blockingInvoice.paymentMethods.alipay.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
blocker.blockingInvoice.paymentMethods.alipay.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

blocker.blockingInvoice.paymentMethods.alipay.requirements.invoiceCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.alipay.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
blocker.blockingInvoice.paymentMethods.alipay.requirements.accountCountryCode string · Example: SE
blocker.blockingInvoice.paymentMethods.alipay.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

blocker.blockingInvoice.paymentMethods.alipay.requirements.accountType string · enum · Example: private
private
organisation
blocker.blockingInvoice.paymentMethods.alipay.requirements.accountCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.alipay.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

blocker.blockingInvoice.paymentMethods.alipay.requirements.availableBalance object
blocker.blockingInvoice.paymentMethods.alipay.requirements.availableBalance.amount number required · Example: 100
blocker.blockingInvoice.paymentMethods.alipay.requirements.availableBalance.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.alipay.requirements.minimumAmount object
blocker.blockingInvoice.paymentMethods.alipay.requirements.minimumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.alipay.requirements.minimumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.alipay.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.alipay.requirements.maximumAmount object
blocker.blockingInvoice.paymentMethods.alipay.requirements.maximumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.alipay.requirements.maximumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.alipay.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.crypto object required
blocker.blockingInvoice.paymentMethods.crypto.method string · enum required · Example: card

Canonical v2 payment method. Card-backed hosted checkout and wallet flows are represented as card; provider names are not public v2 method values.

card
accountCredit
swish
bankgiro
sepa
alipay
crypto
blocker.blockingInvoice.paymentMethods.crypto.label string required · Example: Card
blocker.blockingInvoice.paymentMethods.crypto.available boolean required · Example: true
blocker.blockingInvoice.paymentMethods.crypto.visible boolean · Example: true

Present for restricted methods. When false, the method must not be rendered to the customer.

blocker.blockingInvoice.paymentMethods.crypto.reason string · nullable required · Example: null

Human-readable blocker when available is false.

blocker.blockingInvoice.paymentMethods.crypto.checkoutMode string · nullable · enum required · Example: payment

Hosted checkout mode used by the existing payment session endpoint, or null for methods handled without hosted checkout.

payment
sepa_bank_transfer_payment
alipay_payment
blocker.blockingInvoice.paymentMethods.crypto.requirements object required

Machine-readable requirements for the payment method. Examples: card minimum amount, Swish/Bankgiro Swedish account requirement, SEPA bank transfer EUR requirement, cryptocurrency account eligibility, account-credit balance limit.

blocker.blockingInvoice.paymentMethods.crypto.requirements.invoiceCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.crypto.requirements.invoiceCurrencyCodes array<string> · Example: ["EUR","USD"]
blocker.blockingInvoice.paymentMethods.crypto.requirements.accountCountryCode string · Example: SE
blocker.blockingInvoice.paymentMethods.crypto.requirements.accountCountryExcludedCode string · Example: SE

Billing country that is explicitly excluded for this method.

blocker.blockingInvoice.paymentMethods.crypto.requirements.accountType string · enum · Example: private
private
organisation
blocker.blockingInvoice.paymentMethods.crypto.requirements.accountCurrencyCode string · Example: SEK
blocker.blockingInvoice.paymentMethods.crypto.requirements.requiresCardVerification boolean · Example: true

Whether a saved card or prior successful card payment is required.

blocker.blockingInvoice.paymentMethods.crypto.requirements.availableBalance object
blocker.blockingInvoice.paymentMethods.crypto.requirements.availableBalance.amount number required · Example: 100
blocker.blockingInvoice.paymentMethods.crypto.requirements.availableBalance.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.crypto.requirements.minimumAmount object
blocker.blockingInvoice.paymentMethods.crypto.requirements.minimumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.crypto.requirements.minimumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.crypto.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.paymentMethods.crypto.requirements.maximumAmount object
blocker.blockingInvoice.paymentMethods.crypto.requirements.maximumAmount.amount number required · Example: 3
blocker.blockingInvoice.paymentMethods.crypto.requirements.maximumAmount.currencyCode string required · Example: SEK
blocker.blockingInvoice.paymentMethods.crypto.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
blocker.blockingInvoice.availablePaymentMethods array<string>
blocker.blockingInvoice.actions object
blocker.blockingInvoice.actions.canPayWithAvailableMethod object required
blocker.blockingInvoice.actions.canPayWithAvailableMethod.allowed boolean required
blocker.blockingInvoice.actions.canPayWithAvailableMethod.reason string · nullable required

Nullable: may be null when not applicable.

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 Not found. The resource does not exist or is not owned by the caller.
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
GET https://cloud.hostup.se/api/v2/vps/{id}/actions/upgrade
For AI assistants
View as Markdown
cURL
curl -X GET "https://cloud.hostup.se/api/v2/vps/vps_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/upgrade" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Response
{
  "vpsId": "vps_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "currentProduct": {
    "id": "vpsprod_01hxa3b4c5d6e7f8g9h0j1k2m3",
    "slug": "vps-xs",
    "tier": "xs",
    "name": "VPS XS",
    "resources": {
      "cpuCores": 1,
      "memoryGb": 2,
      "storageGb": 40
    },
    "bandwidth": {
      "limitGb": 2048
    },
    "billing": {
      "amount": 79,
      "currencyCode": "SEK",
      "billingCycle": "monthly"
    },
    "billingCycles": [
      {
        "billingCycle": "monthly",
        "amount": 79,
        "currencyCode": "SEK",
        "isPrimary": true,
        "setupAmount": null
      }
    ],
    "availabilityStatus": "out_of_stock",
    "available": false,
    "reason": "This plan is not currently offered."
  },
  "configurableOptions": [
    {
      "key": "bandwidthGb",
      "label": "Bandwidth",
      "type": "slider",
      "min": 2048,
      "max": 10240,
      "step": 1024,
      "default": 2048,
      "currentValue": 2048,
      "unit": "GB",
      "pricing": [
        {
          "billingCycle": "monthly",
          "amount": 20,
          "currencyCode": "SEK"
        }
      ],
      "constraints": {
        "min": 2048,
        "max": 10240,
        "step": 1024,
        "unit": "GB",
        "currentValue": 2048,
        "effectiveMin": 2048,
        "effectiveMax": 10240,
        "usage": {
          "bandwidthUsedGb": 193.483
        },
        "actions": {
          "canDecrease": {
            "allowed": true,
            "reason": null
          },
          "canIncrease": {
            "allowed": true,
            "reason": null
          }
        }
      },
      "includedAtBase": 2048,
      "actions": {
        "canDecrease": {
          "allowed": true,
          "reason": null
        },
        "canIncrease": {
          "allowed": true,
          "reason": null
        }
      }
    },
    {
      "key": "additionalStorageGb",
      "label": "Attachable Block Storage",
      "type": "slider",
      "min": 0,
      "max": 1000,
      "step": 10,
      "default": 0,
      "currentValue": 100,
      "unit": "GB",
      "pricing": [
        {
          "billingCycle": "monthly",
          "amount": 30,
          "currencyCode": "SEK"
        }
      ],
      "constraints": {
        "min": 100,
        "max": 1000,
        "step": 10,
        "unit": "GB",
        "currentValue": 100,
        "effectiveMin": 100,
        "effectiveMax": 1000,
        "actions": {
          "canDecrease": {
            "allowed": true,
            "reason": null
          },
          "canIncrease": {
            "allowed": true,
            "reason": null
          }
        }
      },
      "includedAtBase": 100,
      "actions": {
        "canDecrease": {
          "allowed": true,
          "reason": null
        },
        "canIncrease": {
          "allowed": true,
          "reason": null
        }
      }
    },
    {
      "key": "snapshotSlots",
      "label": "Snapshot slots",
      "type": "quantity",
      "min": 0,
      "max": 5,
      "step": 1,
      "default": 0,
      "currentValue": 0,
      "unit": "slots",
      "pricing": [
        {
          "billingCycle": "monthly",
          "amount": 10,
          "currencyCode": "SEK"
        }
      ],
      "constraints": {
        "min": 0,
        "max": 5,
        "step": 1,
        "unit": "slots",
        "currentValue": 0,
        "effectiveMin": 0,
        "effectiveMax": 5,
        "actions": {
          "canDecrease": {
            "allowed": false,
            "reason": "No snapshot slots are currently active."
          },
          "canIncrease": {
            "allowed": true,
            "reason": null
          }
        }
      },
      "includedAtBase": 0,
      "actions": {
        "canDecrease": {
          "allowed": false,
          "reason": "No snapshot slots are currently active."
        },
        "canIncrease": {
          "allowed": true,
          "reason": null
        }
      }
    }
  ],
  "availablePlans": [
    {
      "id": "vpsprod_01hxa3b4c5d6e7f8g9h0j1k2m4",
      "slug": "vps-sm",
      "tier": "sm",
      "name": "VPS SM",
      "resources": {
        "cpuCores": 2,
        "memoryGb": 4,
        "storageGb": 80
      },
      "bandwidth": {
        "limitGb": 4096
      },
      "billing": {
        "amount": 149,
        "currencyCode": "SEK",
        "billingCycle": "monthly"
      },
      "billingCycles": [
        {
          "billingCycle": "monthly",
          "amount": 149,
          "currencyCode": "SEK",
          "isPrimary": true,
          "setupAmount": null
        }
      ],
      "availabilityStatus": "out_of_stock",
      "available": false,
      "reason": "This plan is not currently offered.",
      "actions": {
        "canApply": {
          "allowed": false,
          "reason": "This plan is not currently offered."
        }
      }
    }
  ],
  "actions": {
    "canChangeProduct": {
      "allowed": true,
      "reason": null
    }
  },
  "scheduledChange": null
}