Change VPS resource options

POST /api/v2/vps/{id}/actions/config

Preview or commit configurable-option changes for one VPS without changing its plan.

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

First call GET /api/v2/vps/{id}/actions/upgrade and read configurableOptions[].key, limits, constraints, and action gates.

Send canonical option keys under resources, for example { "bandwidthGb": 4096 } to add bandwidth only, { "storageGb": 100 } to increase the primary disk, or { "snapshotSlots": 3 } to buy/increase snapshot capacity when the option is returned.

Bandwidth-only increases use a flat prepaid bandwidth invoice for the current billing period.

Bandwidth-only increases end at the next monthly bandwidth reset; paymentInvoice.servicePeriodEndAt returns that reset boundary.

Positive-price primary-storage, snapshot, and backup increases create a separate prorated invoice through the current paid-through boundary and activate only after payment; the primary disk is expanded directly and verified before its new recurring configuration is committed.

An already-issued renewal invoice is repaired after paid activation so its recurring line matches the new configuration without changing the paid-through boundary.

Included zero-price snapshot/backup changes apply directly without an order or invoice.

Resource decreases are effective-dated: current capacity remains available until scheduledChange.effectiveAt, no current-period refund is issued, and the response has status: scheduled.

Primary storage cannot be reduced; selecting a lower plan preserves an already allocated larger primary disk.

Mixed increase/decrease requests are rejected so the two effective dates remain explicit.

Submit IPv6 changes separately from every other resource change so one request cannot partially commit across the direct and invoiced paths.

Exact no-op requests return status: applied without an invoice.

IP, plan, and billing-cycle changes are not routed through the direct manual-invoice path.

billingCycle is allowed only with dryRun: true; committed billing-cycle changes belong to /actions/billing-cycle.

Cancel an open resource decrease with DELETE /api/v2/vps/{id}/actions/upgrade.

If a response reports invoiceLookupPending: true, do not retry the resource change; wait for the renewal invoice to appear before submitting another change.

VPS Services VM

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
Content-Type application/json

Body

required
application/json
resources object required · Example: {"bandwidthGb":4096}

Canonical configurable-option keys from GET /actions/upgrade configurableOptions[].key mapped to primitive values. Common keys include bandwidthGb, storageGb for the primary disk, additionalStorageGb for attachable capacity, backupSlots, snapshotSlots, ipv4Count, and ipv6.

billingCycle string · enum · Example: monthly

Preview-only cycle hint. If present on a commit request, the route returns 400 with recovery steps.

monthly
quarterly
semiannually
annually
biennially
triennially
dryRun boolean · Example: true

When true, return pricing without committing the resource change.

cancelExistingInvoice boolean · Example: true

Use only when a 409 existing_invoice_blocking response suggests resending with this flag. A regular renewal invoice does not block a positive-price primary-storage, snapshot, or backup increase and is not cancelled by this flag.

Responses

200 Resource-option preview or committed result.
VpsConfigChangePreview
dryRun boolean · enum required · Example: true
true
status string · enum required
preview
changeKind string · enum required
configuration
paymentInvoice null required
renewalInvoice object required
renewalInvoice.amount number required · Example: 39
renewalInvoice.currencyCode string required · Example: SEK
renewalInvoice.servicePeriodEndAt string · nullable

End of the service period covered by the immediate charge. For a bandwidth-only increase this is the next monthly bandwidth reset; for a prorated recurring-resource increase it is the current paid-through boundary. Omitted when the preview is not a current-period charge.

renewalInvoice.paymentMethods object
renewalInvoice.paymentMethods.card object required
renewalInvoice.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
renewalInvoice.paymentMethods.card.label string required · Example: Card
renewalInvoice.paymentMethods.card.available boolean required · Example: true
renewalInvoice.paymentMethods.card.visible boolean · Example: true

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

renewalInvoice.paymentMethods.card.reason string · nullable required · Example: null

Human-readable blocker when available is false.

renewalInvoice.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
renewalInvoice.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.

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

Billing country that is explicitly excluded for this method.

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

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

renewalInvoice.paymentMethods.card.requirements.availableBalance object
renewalInvoice.paymentMethods.card.requirements.availableBalance.amount number required · Example: 100
renewalInvoice.paymentMethods.card.requirements.availableBalance.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.card.requirements.minimumAmount object
renewalInvoice.paymentMethods.card.requirements.minimumAmount.amount number required · Example: 3
renewalInvoice.paymentMethods.card.requirements.minimumAmount.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.card.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
renewalInvoice.paymentMethods.card.requirements.maximumAmount object
renewalInvoice.paymentMethods.card.requirements.maximumAmount.amount number required · Example: 3
renewalInvoice.paymentMethods.card.requirements.maximumAmount.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.card.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
renewalInvoice.paymentMethods.accountCredit object required
renewalInvoice.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
renewalInvoice.paymentMethods.accountCredit.label string required · Example: Card
renewalInvoice.paymentMethods.accountCredit.available boolean required · Example: true
renewalInvoice.paymentMethods.accountCredit.visible boolean · Example: true

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

renewalInvoice.paymentMethods.accountCredit.reason string · nullable required · Example: null

Human-readable blocker when available is false.

renewalInvoice.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
renewalInvoice.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.

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

Billing country that is explicitly excluded for this method.

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

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

renewalInvoice.paymentMethods.accountCredit.requirements.availableBalance object
renewalInvoice.paymentMethods.accountCredit.requirements.availableBalance.amount number required · Example: 100
renewalInvoice.paymentMethods.accountCredit.requirements.availableBalance.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.accountCredit.requirements.minimumAmount object
renewalInvoice.paymentMethods.accountCredit.requirements.minimumAmount.amount number required · Example: 3
renewalInvoice.paymentMethods.accountCredit.requirements.minimumAmount.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.accountCredit.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
renewalInvoice.paymentMethods.accountCredit.requirements.maximumAmount object
renewalInvoice.paymentMethods.accountCredit.requirements.maximumAmount.amount number required · Example: 3
renewalInvoice.paymentMethods.accountCredit.requirements.maximumAmount.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.accountCredit.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
renewalInvoice.paymentMethods.swish object required
renewalInvoice.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
renewalInvoice.paymentMethods.swish.label string required · Example: Card
renewalInvoice.paymentMethods.swish.available boolean required · Example: true
renewalInvoice.paymentMethods.swish.visible boolean · Example: true

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

renewalInvoice.paymentMethods.swish.reason string · nullable required · Example: null

Human-readable blocker when available is false.

renewalInvoice.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
renewalInvoice.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.

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

Billing country that is explicitly excluded for this method.

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

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

renewalInvoice.paymentMethods.swish.requirements.availableBalance object
renewalInvoice.paymentMethods.swish.requirements.availableBalance.amount number required · Example: 100
renewalInvoice.paymentMethods.swish.requirements.availableBalance.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.swish.requirements.minimumAmount object
renewalInvoice.paymentMethods.swish.requirements.minimumAmount.amount number required · Example: 3
renewalInvoice.paymentMethods.swish.requirements.minimumAmount.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.swish.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
renewalInvoice.paymentMethods.swish.requirements.maximumAmount object
renewalInvoice.paymentMethods.swish.requirements.maximumAmount.amount number required · Example: 3
renewalInvoice.paymentMethods.swish.requirements.maximumAmount.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.swish.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
renewalInvoice.paymentMethods.bankgiro object required
renewalInvoice.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
renewalInvoice.paymentMethods.bankgiro.label string required · Example: Card
renewalInvoice.paymentMethods.bankgiro.available boolean required · Example: true
renewalInvoice.paymentMethods.bankgiro.visible boolean · Example: true

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

renewalInvoice.paymentMethods.bankgiro.reason string · nullable required · Example: null

Human-readable blocker when available is false.

renewalInvoice.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
renewalInvoice.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.

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

Billing country that is explicitly excluded for this method.

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

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

renewalInvoice.paymentMethods.bankgiro.requirements.availableBalance object
renewalInvoice.paymentMethods.bankgiro.requirements.availableBalance.amount number required · Example: 100
renewalInvoice.paymentMethods.bankgiro.requirements.availableBalance.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.bankgiro.requirements.minimumAmount object
renewalInvoice.paymentMethods.bankgiro.requirements.minimumAmount.amount number required · Example: 3
renewalInvoice.paymentMethods.bankgiro.requirements.minimumAmount.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.bankgiro.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
renewalInvoice.paymentMethods.bankgiro.requirements.maximumAmount object
renewalInvoice.paymentMethods.bankgiro.requirements.maximumAmount.amount number required · Example: 3
renewalInvoice.paymentMethods.bankgiro.requirements.maximumAmount.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.bankgiro.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
renewalInvoice.paymentMethods.sepa object required
renewalInvoice.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
renewalInvoice.paymentMethods.sepa.label string required · Example: Card
renewalInvoice.paymentMethods.sepa.available boolean required · Example: true
renewalInvoice.paymentMethods.sepa.visible boolean · Example: true

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

renewalInvoice.paymentMethods.sepa.reason string · nullable required · Example: null

Human-readable blocker when available is false.

renewalInvoice.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
renewalInvoice.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.

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

Billing country that is explicitly excluded for this method.

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

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

renewalInvoice.paymentMethods.sepa.requirements.availableBalance object
renewalInvoice.paymentMethods.sepa.requirements.availableBalance.amount number required · Example: 100
renewalInvoice.paymentMethods.sepa.requirements.availableBalance.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.sepa.requirements.minimumAmount object
renewalInvoice.paymentMethods.sepa.requirements.minimumAmount.amount number required · Example: 3
renewalInvoice.paymentMethods.sepa.requirements.minimumAmount.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.sepa.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
renewalInvoice.paymentMethods.sepa.requirements.maximumAmount object
renewalInvoice.paymentMethods.sepa.requirements.maximumAmount.amount number required · Example: 3
renewalInvoice.paymentMethods.sepa.requirements.maximumAmount.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.sepa.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
renewalInvoice.paymentMethods.alipay object required
renewalInvoice.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
renewalInvoice.paymentMethods.alipay.label string required · Example: Card
renewalInvoice.paymentMethods.alipay.available boolean required · Example: true
renewalInvoice.paymentMethods.alipay.visible boolean · Example: true

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

renewalInvoice.paymentMethods.alipay.reason string · nullable required · Example: null

Human-readable blocker when available is false.

renewalInvoice.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
renewalInvoice.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.

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

Billing country that is explicitly excluded for this method.

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

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

renewalInvoice.paymentMethods.alipay.requirements.availableBalance object
renewalInvoice.paymentMethods.alipay.requirements.availableBalance.amount number required · Example: 100
renewalInvoice.paymentMethods.alipay.requirements.availableBalance.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.alipay.requirements.minimumAmount object
renewalInvoice.paymentMethods.alipay.requirements.minimumAmount.amount number required · Example: 3
renewalInvoice.paymentMethods.alipay.requirements.minimumAmount.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.alipay.requirements.minimumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
renewalInvoice.paymentMethods.alipay.requirements.maximumAmount object
renewalInvoice.paymentMethods.alipay.requirements.maximumAmount.amount number required · Example: 3
renewalInvoice.paymentMethods.alipay.requirements.maximumAmount.currencyCode string required · Example: SEK
renewalInvoice.paymentMethods.alipay.requirements.maximumAmount.comparison string · enum required · Example: greater_than
greater_than
less_than_or_equal
renewalInvoice.paymentMethods.crypto object required
renewalInvoice.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
renewalInvoice.paymentMethods.crypto.label string required · Example: Card
renewalInvoice.paymentMethods.crypto.available boolean required · Example: true
renewalInvoice.paymentMethods.crypto.visible boolean · Example: true

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

renewalInvoice.paymentMethods.crypto.reason string · nullable required · Example: null

Human-readable blocker when available is false.

renewalInvoice.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
renewalInvoice.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.

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

Billing country that is explicitly excluded for this method.

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

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

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

Nullable: may be null when not applicable.

warnings array<object> required
warnings[].code string · enum required
unused_prepaid_bandwidth_credited_after_period
warnings[].severity string · enum required
info
warnings[].reason string required
scheduled boolean
scheduledChange object
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
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.

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

Nullable: may be null when not applicable.

VpsConfigChangeResult
status string · enum required
scheduled
awaiting_payment
processing
applied
changeKind string · enum required
configuration
paymentInvoice null required
renewalInvoice null required
scheduled boolean
scheduledChange object
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
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.

invoiceLookupPending boolean · Example: true

True when the resource change committed and backend renewal invoice finalization is still pending. Do not retry the resource change.

400 The request body is invalid or combines resource changes that must have separate outcomes.
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
409 The resource change is blocked by an existing invoice, no usable payment method, a resource still in use, another service change, an existing scheduled change, or temporarily unavailable scheduled-change processing.
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
502 Upstream billing, resource-state, or configuration verification/update failed, including unavailable currency, tax, pricing, usage, or renewal data.
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
POST https://cloud.hostup.se/api/v2/vps/{id}/actions/config
For AI assistants
View as Markdown
cURL
curl -X POST "https://cloud.hostup.se/api/v2/vps/vps_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/config" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "resources": {
      "bandwidthGb": 4096
    },
    "dryRun": true
  }'
Response
// Dry-run resource change
{
  "dryRun": true,
  "status": "preview",
  "changeKind": "configuration",
  "paymentInvoice": {
    "amount": 12.99,
    "currencyCode": "EUR",
    "servicePeriodEndAt": "2026-05-27T00:00:00.000Z",
    "paymentMethods": {
      "card": {
        "method": "card",
        "label": "Card",
        "available": true,
        "reason": null,
        "checkoutMode": "payment",
        "requirements": {
          "minimumAmount": {
            "amount": 0.5,
            "currencyCode": "EUR",
            "comparison": "greater_than"
          }
        }
      },
      "accountCredit": {
        "method": "accountCredit",
        "label": "Account credit",
        "available": false,
        "reason": "No account credit is available.",
        "checkoutMode": null,
        "requirements": {
          "accountCurrencyCode": "EUR",
          "invoiceCurrencyCode": "EUR",
          "availableBalance": {
            "amount": 0,
            "currencyCode": "EUR"
          },
          "maximumAmount": {
            "amount": 0,
            "currencyCode": "EUR",
            "comparison": "less_than_or_equal"
          }
        }
      },
      "swish": {
        "method": "swish",
        "label": "Swish",
        "available": false,
        "reason": "Swish is only available for SEK invoices. This invoice is EUR.",
        "checkoutMode": null,
        "requirements": {
          "accountCountryCode": "SE",
          "invoiceCurrencyCode": "SEK"
        }
      },
      "bankgiro": {
        "method": "bankgiro",
        "label": "Bankgiro",
        "available": false,
        "reason": "Bankgiro is only available for SEK invoices. This invoice is EUR.",
        "checkoutMode": null,
        "requirements": {
          "accountCountryCode": "SE",
          "invoiceCurrencyCode": "SEK"
        }
      },
      "sepa": {
        "method": "sepa",
        "label": "SEPA bank transfer",
        "available": true,
        "reason": null,
        "checkoutMode": "sepa_bank_transfer_payment",
        "requirements": {
          "invoiceCurrencyCode": "EUR"
        }
      },
      "alipay": {
        "method": "alipay",
        "label": "Alipay",
        "available": true,
        "reason": null,
        "checkoutMode": "alipay_payment",
        "requirements": {
          "invoiceCurrencyCodes": [
            "EUR",
            "USD"
          ]
        }
      }
    },
    "availablePaymentMethods": [
      "card",
      "sepa",
      "alipay"
    ],
    "actions": {
      "canPayWithAvailableMethod": {
        "allowed": true,
        "reason": null
      }
    }
  },
  "renewalInvoice": {
    "amount": 55,
    "currencyCode": "EUR"
  },
  "warnings": [
    {
      "code": "unused_prepaid_bandwidth_credited_after_period",
      "severity": "info",
      "reason": "Unused prepaid bandwidth is credited after the current service period ends."
    }
  ],
  "actions": {
    "canCommit": {
      "allowed": true,
      "reason": null
    }
  }
}

// Preview a bandwidth decrease for the next renewal
{
  "dryRun": true,
  "status": "preview",
  "changeKind": "configuration",
  "scheduled": true,
  "paymentInvoice": null,
  "renewalInvoice": {
    "amount": 39,
    "currencyCode": "SEK"
  },
  "warnings": [],
  "scheduledChange": {
    "status": "preview",
    "effectiveAt": "2026-08-01T22:05:00.000Z",
    "invoiceIssueAt": "2026-07-18T22:05:00.000Z",
    "target": {
      "resources": {
        "bandwidthGb": 2048
      },
      "billing": {
        "amount": 39,
        "currencyCode": "SEK",
        "billingCycle": "monthly"
      }
    },
    "actions": {
      "canCancel": {
        "allowed": false,
        "reason": "No change has been scheduled yet."
      }
    }
  },
  "actions": {
    "canCommit": {
      "allowed": true,
      "reason": null
    }
  }
}

// Committed paid VPS resource increase
{
  "status": "awaiting_payment",
  "changeKind": "configuration",
  "paymentInvoice": {
    "id": "inv_01hxa3b4c5d6e7f8g9h0j1k2m3",
    "number": null,
    "amount": 12.99,
    "currencyCode": "EUR",
    "dueAt": "2026-04-27T12:34:56.000Z",
    "status": "unpaid",
    "paymentUrl": "/billing?invoice=10001"
  },
  "renewalInvoice": null
}

// Committed change with invoice finalization pending
{
  "status": "processing",
  "changeKind": "configuration",
  "paymentInvoice": null,
  "renewalInvoice": null,
  "invoiceLookupPending": true
}

// Requested values already configured
{
  "status": "applied",
  "changeKind": "configuration",
  "paymentInvoice": null,
  "renewalInvoice": null
}

// Resource decrease scheduled for the next paid period
{
  "status": "scheduled",
  "changeKind": "configuration",
  "scheduled": true,
  "scheduledChange": {
    "status": "scheduled",
    "effectiveAt": "2026-08-11T00:00:00.000Z",
    "invoiceIssueAt": "2026-07-28T00:00:00.000Z",
    "target": {
      "resources": {
        "bandwidthGb": 2048
      },
      "billing": {
        "amount": 39,
        "currencyCode": "SEK",
        "billingCycle": "monthly"
      }
    },
    "actions": {
      "canCancel": {
        "allowed": true,
        "reason": null
      }
    }
  },
  "paymentInvoice": null,
  "renewalInvoice": null
}
Request Body Preview adding bandwidth only
{
  "resources": {
    "bandwidthGb": 4096
  },
  "dryRun": true
}