/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.
read:vm
Authenticate with an API key in the Authorization: Bearer <token> header.
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.
Authorization Bearer <token> Accept application/json 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 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 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 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 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 Retry-After seconds plus X-RateLimit-* headers. 10 fields 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 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 https://cloud.hostup.se/api/v2/vps/{id}/details curl -X GET "https://cloud.hostup.se/api/v2/vps/vps_01hxa3b4c5d6e7f8g9h0j1k2m3/details" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" {
"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
}
}