/api/v2/vps Return existing VPS instances with public IDs, canonical service/power status, billing, resources, primary IP, operating system, bandwidth, availability, tags, and pin state.
Requires read:vm.
Note for API keys: the account-wide inventory lookup behind this collection also needs the broader read:services grant — a key holding only read:vm receives an empty list, so mint keys for this collection with read:services as well.
Use primaryIp=192.0.2.10 to find the public vps_... ID when the caller only knows an IP address; do not pass IP addresses or hostnames as {id} to detail/action routes.
Use data[].id from this endpoint as the {id} path parameter for VPS details, power actions, backups, snapshots, networking, and console calls.
This inventory can include both regular fixed-cycle VPS and pay-as-you-go Cloud VPS after deployment; inspect billing.isPayg instead of guessing from the name.
billing.isPayg: false means a fixed-cycle VPS ordered from GET /api/v2/products/vps and POST /api/v2/orders; billing.isPayg: true means a PAYG Cloud VPS created from the Cloud VPS endpoints and billing.amount is null.
Disk throttle state is included by default as diskThrottle.
Action gates live on the richer detail/status endpoints, not on this list response.
read:services
Authenticate with an API key in the Authorization: Bearer <token> header.
limit integer · min: 1 · max: 100 · default: 20 Page size from 1 to 100. Defaults to 20. Values outside that range are rejected with 400 invalid_pagination_limit.
cursor string Opaque cursor from nextCursor for the next page.
include string · enum
· Example: pendingMaintenance Optional repeated include. Currently supports pendingMaintenance; call as ?include=pendingMaintenance to add pendingMaintenance and pendingMaintenanceHasDeadline to each item. Disk throttle state is included by default as diskThrottle.
pendingMaintenance primaryIp string
· Example: 192.0.2.10 Exact primary IP address to find. Use this to get the public vps_... ID for a VPS when the caller only knows its IP address.
name string
· Example: app-01 Exact VPS display name to find. Matching is case-insensitive and returns the same paginated list shape.
Authorization Bearer <token> Accept application/json data array<object> data[].id string required
· Example: vps_01hxa3b4c5d6e7f8g9h0j1k2m3 data[].name string required
· Example: app-01 data[].primaryIp string · nullable required
· Example: 192.0.2.10 Nullable: may be null when not applicable.
data[].serviceStatus string · enum required
· Example: active active suspended terminated pending cancelled expired fraud unknown data[].powerState string · nullable · enum required
· Example: running Nullable: may be null when not applicable.
running stopped starting stopping paused provisioning error unknown data[].operatingSystem object · nullable required
· Example: {"displayName":"Ubuntu 24.04","family":"ubuntu","version":"24.04","variant":null} Nullable: may be null when not applicable.
data[].customerMetadata object Customer-owned display labels. These do not replace canonical name, hostname, or operatingSystem fields.
data[].customerMetadata.displayName string · nullable required
· Example: Production DB Nullable: may be null when not applicable.
data[].customerMetadata.operatingSystemName string · nullable required
· Example: Debian 13 Nullable: may be null when not applicable.
data[].customerMetadata.operatingSystemSourceName string · nullable required
· Example: Debian 12 Nullable: may be null when not applicable.
data[].customerMetadata.updatedAt string · nullable required
· Example: 2026-06-30T10:00:00.000Z Nullable: may be null when not applicable.
data[].billing object required data[].billing.amount number · nullable required
· Example: 199 Recurring fixed-cycle amount in the resource currency. Null when no fixed recurring amount applies, such as PAYG Cloud VPS billing.
data[].billing.currencyCode string required
· Example: SEK data[].billing.billingCycle string · nullable · enum required
· Example: annually Canonical billing cycle. VPS services with isPayg: true still report monthly for summary display; use isPayg to distinguish PAYG Cloud VPS from fixed-cycle VPS.
monthly quarterly semiannually annually biennially triennially free data[].billing.isPayg boolean required
· Example: false For VPS service/order billing, true means pay-as-you-go Cloud VPS and false means fixed-cycle/prepaid VPS. Non-VPS resources normally return false.
data[].billing.periodYears integer · nullable
· Example: 1 Nullable: may be null when not applicable.
data[].resources object required data[].resources.cpuCores number
· Example: 2 data[].resources.memoryGb number
· Example: 4 data[].resources.storageGb number
· Example: 80 data[].bandwidth object required data[].bandwidth.usedGb number required
· Example: 12.5 data[].bandwidth.limitGb number required
· Example: 1000 data[].bandwidth.inboundGb number required
· Example: 4.2 data[].bandwidth.outboundGb number required
· Example: 8.3 data[].bandwidth.hasOverage boolean required
· Example: false data[].availability object required data[].availability.available boolean required
· Example: true data[].availability.reason string · nullable required
· Example: null Nullable: may be null when not applicable.
data[].tags array<string> required
· Example: ["production"] data[].pinned boolean required
· Example: false data[].createdAt string · nullable required
· Example: 2026-04-27T12:00:00.000Z Nullable: may be null when not applicable.
data[].pendingMaintenance boolean
· Example: false Only present when the list route is called with include=pendingMaintenance.
data[].pendingMaintenanceHasDeadline boolean
· Example: false Only present together with pendingMaintenance.
data[].overdueInvoices array<object> Only present on single-detail routes when overdue invoices were queried.
data[].diskThrottle object required Disk throttle status for this VPS. active:false means the API checked local throttle state and found no active disk limit.
data[].diskThrottle.active boolean required
· Example: true True when an active disk throttle exists for this VPS.
data[].diskThrottle.limitedRead boolean required
· Example: false data[].diskThrottle.limitedWrite boolean required
· Example: true data[].diskThrottle.readDrpd number · nullable required
· Example: null Disk reads per disk per day, when reads triggered the throttle.
data[].diskThrottle.writeDwpd number · nullable required
· Example: 10.06 Disk writes per disk per day, when writes triggered the throttle.
data[].diskThrottle.diskSizeGb number · nullable required
· Example: 100 Nullable: may be null when not applicable.
data[].diskThrottle.estimatedDailyReadGb number · nullable required
· Example: null Nullable: may be null when not applicable.
data[].diskThrottle.estimatedDailyWriteGb number · nullable required
· Example: 1006 Nullable: may be null when not applicable.
data[].diskThrottle.totalReadLast7DaysGb number · nullable required
· Example: null Nullable: may be null when not applicable.
data[].diskThrottle.totalWriteLast7DaysGb number · nullable required
· Example: 7042 Nullable: may be null when not applicable.
data[].diskThrottle.limitReadMbps number · nullable required
· Example: null Nullable: may be null when not applicable.
data[].diskThrottle.limitWriteMbps number · nullable required
· Example: 1 Nullable: may be null when not applicable.
data[].diskThrottle.throttledAt string · nullable required
· Example: 2026-06-17T14:00:09.000Z Nullable: may be null when not applicable.
data[].diskThrottle.expiresAt string · nullable required
· Example: 2026-06-18T14:00:09.000Z Nullable: may be null when not applicable.
data[].diskThrottle.escalationLevel integer · min: 0 required
· Example: 1 data[].hardware object Host hardware info. Present on GET /api/v2/vps/{id} only (absent on the list read). Each field is null when the platform cannot resolve node placement right now (e.g. service pending) — null means "unknown", not an error.
data[].hardware.cpuModel string · nullable Physical CPU model of the host node, e.g. "AMD EPYC 7R13".
data[].hardware.cpuVendor string · nullable · enum CPU vendor family derived from the model.
amd intel other hasMore boolean
· Example: false nextCursor string · nullable
· Example: null 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 curl -X GET "https://cloud.hostup.se/api/v2/vps" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" {
"data": [
{
"id": "vps_01hxa3b4c5d6e7f8g9h0j1k2m3",
"name": "app-01",
"primaryIp": "192.0.2.10",
"serviceStatus": "active",
"powerState": "running",
"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"
},
"resources": {
"cpuCores": 2,
"memoryGb": 4,
"storageGb": 80
},
"billing": {
"amount": 199,
"currencyCode": "SEK",
"billingCycle": "monthly",
"isPayg": false
},
"bandwidth": {
"usedGb": 12.5,
"limitGb": 1000,
"inboundGb": 4.2,
"outboundGb": 8.3,
"hasOverage": false
},
"availability": {
"available": true,
"reason": null
},
"tags": [
"production"
],
"pinned": false,
"createdAt": "2026-04-27T12:00:00.000Z",
"pendingMaintenance": false,
"pendingMaintenanceHasDeadline": false,
"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
}
}
],
"hasMore": false,
"nextCursor": null
}