Get detailed VPS state

GET /api/v2/vps/{id}/details

Return detailed VPS state including resources, billing, bandwidth, IPs, power state, SSH keys, login metadata, action gates, and overdue invoice context.

Use this when you need operational context beyond the lightweight GET /api/v2/vps/{id} summary.

Inspect billing.isPayg before choosing a change flow: fixed-cycle VPS instances use plan upgrade/billing-cycle endpoints when the relevant action gate allows it; PAYG Cloud VPS instances scale through configurable resource changes instead and return billing.amount: null because there is no fixed recurring package amount.

VPS Services VM

Authentication

Required API scope: read:vm

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

Context

Path Parameters

id string required Example: vps_01hxa3b4c5d6e7f8g9h0j1k2m3

Public VPS ID. Get it 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 Detailed VPS state.
id string required · Example: vps_01hxa3b4c5d6e7f8g9h0j1k2m3
productName string · nullable required · Example: VPS XS

hostname string · nullable required · Example: web-01.example.com

serviceStatus string · enum required · Example: active
active
pending
suspended
terminated
cancelled
unknown
createdAt string · nullable required · Example: 2026-04-27T12:00:00.000Z

nextDueAt string · nullable required · Example: 2026-05-27T00:00:00.000Z

billing object required
billing.amount number · nullable required · Example: 99

Fixed-cycle recurring amount. Null for PAYG Cloud VPS because usage is metered separately.

billing.currencyCode string required · Example: SEK
billing.billingCycle string · enum required · Example: monthly
monthly
quarterly
semiannually
annually
biennially
triennially
free
billing.isPayg boolean required · Example: false
cpuCores number required · Example: 2
memoryGb number required · Example: 4
storageGb number required · Example: 80
backupsIncluded integer required · Example: 2
bandwidth object required
bandwidth.usedGb number required · Example: 12.5
bandwidth.limitGb number required · Example: 1000
bandwidth.inboundGb number required · Example: 4.2
bandwidth.outboundGb number required · Example: 8.3
bandwidth.usagePercent number required · Example: 1.25
bandwidth.hasOverage boolean required · Example: false
bandwidthUsage object required
bandwidthUsage.dataReceivedGb number required · Example: 4.2
bandwidthUsage.dataSentGb number required · Example: 8.3
usageLog array<object> required
usageLog[].recordedAt string required · Example: 2026-04-27T00:00:00.000Z
usageLog[].dataReceivedGb number required · Example: 0.5
usageLog[].dataSentGb number required · Example: 1
usageLog[].totalGb number required · Example: 1.5
ipAddresses array<string> required
ipv4 string · nullable required · Example: 203.0.113.10

ipv6 string · nullable required · Example: 2001:db8::10

operatingSystem object · nullable required

customerMetadata object

Customer-owned display labels. These do not replace canonical name, hostname, or operatingSystem fields.

customerMetadata.displayName string · nullable required · Example: Production DB

Nullable: may be null when not applicable.

customerMetadata.operatingSystemName string · nullable required · Example: Debian 13

Nullable: may be null when not applicable.

customerMetadata.operatingSystemSourceName string · nullable required · Example: Debian 12

Nullable: may be null when not applicable.

customerMetadata.updatedAt string · nullable required · Example: 2026-06-30T10:00:00.000Z

Nullable: may be null when not applicable.

powerState string · nullable · enum required · Example: running

running
stopped
paused
unknown
operationState object required
operationState.locked boolean required · Example: false
sshKeys array<string> required
access object required
access.username string · nullable required · Example: root

Nullable: may be null when not applicable.

access.rootPassword string · nullable required · Example: initial-password-from-panel

Nullable: may be null when not applicable.

pricing object · nullable required

Deprecated migration-only pricing breakdown. Prefer the canonical billing object for amount, currency, and cycle.

pinned boolean required · Example: false
availability object required
availability.available boolean required · Example: true
availability.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions object required
actions.canRebuild object required
actions.canRebuild.allowed boolean required · Example: true
actions.canRebuild.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canRebuild.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canResetPassword object required
actions.canResetPassword.allowed boolean required · Example: true
actions.canResetPassword.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canResetPassword.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canResetSshKeys object required
actions.canResetSshKeys.allowed boolean required · Example: true
actions.canResetSshKeys.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canResetSshKeys.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canResizeDisk object required
actions.canResizeDisk.allowed boolean required · Example: true
actions.canResizeDisk.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canResizeDisk.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canAddDisk object required
actions.canAddDisk.allowed boolean required · Example: true
actions.canAddDisk.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canAddDisk.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canSnapshot object required
actions.canSnapshot.allowed boolean required · Example: true
actions.canSnapshot.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canSnapshot.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canBackup object required
actions.canBackup.allowed boolean required · Example: true
actions.canBackup.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canBackup.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canChangeBillingCycle object required
actions.canChangeBillingCycle.allowed boolean required · Example: true
actions.canChangeBillingCycle.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canChangeBillingCycle.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canUpgrade object required
actions.canUpgrade.allowed boolean required · Example: true
actions.canUpgrade.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canUpgrade.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canResize object required
actions.canResize.allowed boolean required · Example: true
actions.canResize.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canResize.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canDetachIsos object required
actions.canDetachIsos.allowed boolean required · Example: true
actions.canDetachIsos.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canDetachIsos.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canConvertToCloud object required
actions.canConvertToCloud.allowed boolean required · Example: true
actions.canConvertToCloud.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canConvertToCloud.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canStart object required
actions.canStart.allowed boolean required · Example: true
actions.canStart.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canStart.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canStop object required
actions.canStop.allowed boolean required · Example: true
actions.canStop.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canStop.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canRestart object required
actions.canRestart.allowed boolean required · Example: true
actions.canRestart.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canRestart.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canShutdown object required
actions.canShutdown.allowed boolean required · Example: true
actions.canShutdown.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canShutdown.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canReset object required
actions.canReset.allowed boolean required · Example: true
actions.canReset.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canReset.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canCancel object required
actions.canCancel.allowed boolean required · Example: true
actions.canCancel.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canCancel.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canToggleAutorenew object required
actions.canToggleAutorenew.allowed boolean required · Example: true
actions.canToggleAutorenew.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canToggleAutorenew.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canExtendMaintenance object required
actions.canExtendMaintenance.allowed boolean required · Example: true
actions.canExtendMaintenance.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canExtendMaintenance.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canCancelJob object required
actions.canCancelJob.allowed boolean required · Example: true
actions.canCancelJob.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canCancelJob.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

overdueInvoices array<object> required
overdueInvoices[].id string required · Example: inv_01hxa3b4c5d6e7f8g9h0j1k2m3
overdueInvoices[].number string · nullable required · Example: 10001

Nullable: may be null when not applicable.

overdueInvoices[].amount number required · Example: 99
overdueInvoices[].currencyCode string required · Example: SEK
overdueInvoices[].dueAt string · nullable required · Example: 2026-05-27T00:00:00.000Z

Nullable: may be null when not applicable.

overdueInvoices[].status string · enum required · Example: unpaid
unpaid
paid
cancelled
refunded
collections
unknown
overdueInvoices[].paymentUrl string · nullable required · Example: /billing?invoice=10001

Nullable: may be null when not applicable.

diskThrottle object required
diskThrottle.active boolean required · Example: true

True when an active disk throttle exists for this VPS.

diskThrottle.limitedRead boolean required · Example: false
diskThrottle.limitedWrite boolean required · Example: true
diskThrottle.readDrpd number · nullable required · Example: null

Disk reads per disk per day, when reads triggered the throttle.

diskThrottle.writeDwpd number · nullable required · Example: 10.06

Disk writes per disk per day, when writes triggered the throttle.

diskThrottle.diskSizeGb number · nullable required · Example: 100

Nullable: may be null when not applicable.

diskThrottle.estimatedDailyReadGb number · nullable required · Example: null

Nullable: may be null when not applicable.

diskThrottle.estimatedDailyWriteGb number · nullable required · Example: 1006

Nullable: may be null when not applicable.

diskThrottle.totalReadLast7DaysGb number · nullable required · Example: null

Nullable: may be null when not applicable.

diskThrottle.totalWriteLast7DaysGb number · nullable required · Example: 7042

Nullable: may be null when not applicable.

diskThrottle.limitReadMbps number · nullable required · Example: null

Nullable: may be null when not applicable.

diskThrottle.limitWriteMbps number · nullable required · Example: 1

Nullable: may be null when not applicable.

diskThrottle.throttledAt string · nullable required · Example: 2026-06-17T14:00:09.000Z

Nullable: may be null when not applicable.

diskThrottle.expiresAt string · nullable required · Example: 2026-06-18T14:00:09.000Z

Nullable: may be null when not applicable.

diskThrottle.escalationLevel integer · min: 0 required · Example: 1
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}/details
For AI assistants
View as Markdown
cURL
curl -X GET "https://cloud.hostup.se/api/v2/vps/vps_01hxa3b4c5d6e7f8g9h0j1k2m3/details" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Response
{
  "id": "vps_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "productName": "VPS XS",
  "hostname": "web-01.example.com",
  "serviceStatus": "active",
  "createdAt": "2026-04-27T12:00:00.000Z",
  "nextDueAt": "2026-05-27T00:00:00.000Z",
  "billing": {
    "amount": 99,
    "currencyCode": "SEK",
    "billingCycle": "monthly",
    "isPayg": false
  },
  "cpuCores": 2,
  "memoryGb": 4,
  "storageGb": 80,
  "backupsIncluded": 2,
  "bandwidth": {
    "usedGb": 12.5,
    "limitGb": 1000,
    "inboundGb": 4.2,
    "outboundGb": 8.3,
    "usagePercent": 1.25,
    "hasOverage": false
  },
  "bandwidthUsage": {
    "dataReceivedGb": 4.2,
    "dataSentGb": 8.3
  },
  "usageLog": [
    {
      "recordedAt": "2026-04-27T00:00:00.000Z",
      "dataReceivedGb": 0.5,
      "dataSentGb": 1,
      "totalGb": 1.5
    }
  ],
  "ipAddresses": [
    "203.0.113.10"
  ],
  "ipv4": "203.0.113.10",
  "ipv6": "2001:db8::10",
  "operatingSystem": {
    "displayName": "Ubuntu 24.04",
    "family": "ubuntu",
    "version": "24.04",
    "variant": null
  },
  "customerMetadata": {
    "displayName": "Production DB",
    "operatingSystemName": "Debian 13",
    "operatingSystemSourceName": "Debian 12",
    "updatedAt": "2026-06-30T10:00:00.000Z"
  },
  "powerState": "running",
  "operationState": {
    "locked": false
  },
  "sshKeys": [
    "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIexample user@example.com"
  ],
  "access": {
    "username": "root",
    "rootPassword": "initial-password-from-panel"
  },
  "pricing": {
    "currency": "SEK",
    "currencyCode": "SEK",
    "billingCycle": {
      "id": "monthly",
      "months": 1,
      "isFree": false
    },
    "pricePerCycle": 39,
    "baseMonthlyCost": 39,
    "baseAnnualCost": 468,
    "addonsMonthlyCost": 1.5,
    "addonsAnnualCost": 18,
    "totalMonthlyCost": 40.5,
    "totalAnnualCost": 486,
    "addons": [
      {
        "id": "storage-addon",
        "name": "Attachable Block Storage",
        "category": "storage",
        "unit": "GB",
        "included": 50,
        "quantity": 100,
        "unitPriceMonthly": 0.03,
        "monthlyCost": 1.5,
        "annualCost": 18,
        "currencyCode": "SEK"
      }
    ]
  },
  "pinned": false,
  "actions": {
    "canRebuild": {
      "allowed": true,
      "reason": null
    },
    "canResetPassword": {
      "allowed": true,
      "reason": null
    },
    "canResetSshKeys": {
      "allowed": true,
      "reason": null
    },
    "canResizeDisk": {
      "allowed": true,
      "reason": null
    },
    "canAddDisk": {
      "allowed": true,
      "reason": null
    },
    "canSnapshot": {
      "allowed": false,
      "reason": "Snapshot availability could not be confirmed."
    },
    "canBackup": {
      "allowed": false,
      "reason": "Backup availability could not be confirmed."
    },
    "canChangeBillingCycle": {
      "allowed": true,
      "reason": null
    },
    "canUpgrade": {
      "allowed": true,
      "reason": null
    },
    "canResize": {
      "allowed": false,
      "reason": "Resize is a PAYG-only action. Use upgrade for fixed plans."
    },
    "canDetachIsos": {
      "allowed": false,
      "reason": "No ISOs attached."
    },
    "canConvertToCloud": {
      "allowed": false,
      "reason": "Account verification is required before converting to Cloud VM."
    },
    "canStart": {
      "allowed": false,
      "reason": "VPS is already running."
    },
    "canStop": {
      "allowed": true,
      "reason": null
    },
    "canRestart": {
      "allowed": true,
      "reason": null
    },
    "canShutdown": {
      "allowed": true,
      "reason": null
    },
    "canReset": {
      "allowed": true,
      "reason": null
    },
    "canCancel": {
      "allowed": true,
      "reason": null
    },
    "canToggleAutorenew": {
      "allowed": true,
      "reason": null
    },
    "canExtendMaintenance": {
      "allowed": false,
      "reason": "No pending maintenance to extend."
    },
    "canCancelJob": {
      "allowed": false,
      "reason": "No active jobs to cancel."
    }
  },
  "availability": {
    "available": true,
    "reason": null
  },
  "overdueInvoices": [],
  "diskThrottle": {
    "active": false,
    "limitedRead": false,
    "limitedWrite": false,
    "readDrpd": null,
    "writeDwpd": null,
    "diskSizeGb": null,
    "estimatedDailyReadGb": null,
    "estimatedDailyWriteGb": null,
    "totalReadLast7DaysGb": null,
    "totalWriteLast7DaysGb": null,
    "limitReadMbps": null,
    "limitWriteMbps": null,
    "throttledAt": null,
    "expiresAt": null,
    "escalationLevel": 0
  }
}