/api/v2/vps/{id}/bandwidth Return the current bandwidth-allowance period of one VPS: when it started and resets, the allowance counter, and when the traffic actually happened.
Get {id} from GET /api/v2/vps data[].id.
allowance carries the same fields as bandwidth on GET /api/v2/vps/{id} — the running total for this period.
breakdown.days splits that traffic into Europe/Stockholm calendar days from the period start through today (every day is listed; a day with no traffic is a real zero), and breakdown.peakHour is the busiest 60-minute window.
Values are measured on the VPS's own network interface, so a single large transfer shows up as one spiked day/hour rather than being spread out.
breakdown.source says whether that came from exact counters or was estimated from sampled rates.
When breakdown.available is false, show reason; days is then empty and peakHour null, which means the breakdown was not measured — never that no traffic occurred.
period is null only when the service has no billing anchor at all.
This endpoint works for suspended and over-allowance services too.
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 Public VPS ID.
period object · nullable required The running allowance period. Null when the service has no billing anchor.
allowance object required Running usage for this period; identical to bandwidth on GET /api/v2/vps/{id}.
allowance.usedGb number required
· Example: 123.25 allowance.limitGb number required
· Example: 2048 allowance.inboundGb number required
· Example: 65.13 allowance.outboundGb number required
· Example: 58.12 allowance.usagePercent number required
· Example: 6.02 allowance.hasOverage boolean required
· Example: false breakdown object required breakdown.available boolean required
· Example: true False when the per-day breakdown could not be measured; days is then empty and peakHour null.
breakdown.reason string · nullable required
· Example: null Plain-English explanation when available is false; null otherwise.
breakdown.source string · nullable · enum required
· Example: counters counters = exact cumulative interface counters. estimated = integrated from sampled traffic rates; treat amounts as approximate. Null when unavailable. Same vocabulary as totals.source on GET /api/v2/vps/{id}/metrics.
counters estimated breakdown.window object required Actual measurement coverage inside the period (first and last instant traffic telemetry exists for). Both null when unavailable.
breakdown.window.startAt string · nullable required
· Example: 2026-08-27T15:00:00.000Z Nullable: may be null when not applicable.
breakdown.window.endAt string · nullable required
· Example: 2026-08-31T12:00:00.000Z Nullable: may be null when not applicable.
breakdown.days array<object> required One entry per Europe/Stockholm calendar day from the period start through today, oldest first.
breakdown.days[].date string required
· Example: 2026-08-27 breakdown.days[].inboundGb number required
· Example: 65.05 breakdown.days[].outboundGb number required
· Example: 57.61 breakdown.hasHourlyResolution boolean required
· Example: true Whether traffic can be attributed to individual hours. False for an estimated breakdown whose samples are coarser than an hour; hours is then empty and peakHour null.
breakdown.hours array<object> required Every 60-minute window in the period with measured traffic, oldest first. Windows not listed had none. Empty when hasHourlyResolution is false.
breakdown.hours[].startAt string required
· Example: 2026-08-27T16:00:00.000Z Start of the 60-minute window (a whole hour).
breakdown.hours[].inboundGb number required
· Example: 65 breakdown.hours[].outboundGb number required
· Example: 57.6 breakdown.peakHour object · nullable required The 60-minute window with the most traffic in this period. Null when no traffic was measured, or when an estimated breakdown's samples are coarser than an hour (no single hour can be named honestly).
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}/bandwidth curl -X GET "https://cloud.hostup.se/api/v2/vps/vps_01hxa3b4c5d6e7f8g9h0j1k2m3/bandwidth" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" {
"id": "vps_01hxa3b4c5d6e7f8g9h0j1k2m3",
"period": {
"startAt": "2026-08-25T22:00:00.000Z",
"endAt": "2026-09-25T22:00:00.000Z",
"timezone": "Europe/Stockholm"
},
"allowance": {
"usedGb": 123.25,
"limitGb": 2048,
"inboundGb": 65.13,
"outboundGb": 58.12,
"usagePercent": 6.02,
"hasOverage": false
},
"breakdown": {
"available": true,
"reason": null,
"source": "counters",
"window": {
"startAt": "2026-08-27T15:00:00.000Z",
"endAt": "2026-08-31T12:00:00.000Z"
},
"days": [
{
"date": "2026-08-26",
"inboundGb": 0,
"outboundGb": 0
},
{
"date": "2026-08-27",
"inboundGb": 65.05,
"outboundGb": 57.61
},
{
"date": "2026-08-28",
"inboundGb": 0.2,
"outboundGb": 0.1
},
{
"date": "2026-08-29",
"inboundGb": 0.1,
"outboundGb": 0.05
},
{
"date": "2026-08-30",
"inboundGb": 0,
"outboundGb": 0
},
{
"date": "2026-08-31",
"inboundGb": 0.02,
"outboundGb": 0.01
}
],
"hasHourlyResolution": true,
"hours": [
{
"startAt": "2026-08-27T15:00:00.000Z",
"inboundGb": 0.05,
"outboundGb": 0.01
},
{
"startAt": "2026-08-27T16:00:00.000Z",
"inboundGb": 65,
"outboundGb": 57.6
},
{
"startAt": "2026-08-27T23:00:00.000Z",
"inboundGb": 0.2,
"outboundGb": 0.1
},
{
"startAt": "2026-08-29T10:00:00.000Z",
"inboundGb": 0.1,
"outboundGb": 0.05
},
{
"startAt": "2026-08-31T09:00:00.000Z",
"inboundGb": 0.02,
"outboundGb": 0.01
}
],
"peakHour": {
"startAt": "2026-08-27T16:00:00.000Z",
"inboundGb": 65,
"outboundGb": 57.6
}
}
}