Create attached Cloud VPS block volume

POST /api/v2/volumes

Create a block storage volume and attach it to a target Cloud VPS. sizeGb must be a whole number from 10 to 1000. Use targetVpsId from GET /api/v2/vps; do not send internal machine IDs.

Cloud VPS Block Volumes

Authentication

Required API scope: write:storage

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

Context

Headers

Authorization Bearer <token>
Accept application/json
Content-Type application/json

Body

required
application/json
name string · Example: database-data

Optional display name. When provided it must be a non-empty string of at most 255 characters; omit the field to use the generated volume name.

sizeGb integer · min: 10 · max: 1000 required · Example: 100
targetVpsId string required · Example: vps_01hxa3b4c5d6e7f8g9h0j1k2m3

Responses

201 Volume created and attached.
id string required · Example: vol_01hxa3b4c5d6e7f8g9h0j1k2m3
displayId string required · Example: database-data

Display label for the volume. Matches name.

name string required · Example: database-data
sizeGb integer required · Example: 100
status string · enum required · Example: attached
available
attached
creating
deleting
error
attachedVpsId string · nullable required · Example: vps_01hxa3b4c5d6e7f8g9h0j1k2m3

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

Nullable: may be null when not applicable.

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

Nullable: may be null when not applicable.

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

Nullable: may be null when not applicable.

createdAt string required · Example: 2026-04-27T12:00:00.000Z
400 Invalid request body (invalid_request): unknown fields, sizeGb outside 10-1000, an empty name, a missing targetVpsId, or a target that is not a Cloud VPS.
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 Access denied: forbidden when you cannot manage the target VPS, cloud_access_disabled when cloud access is not enabled for your account, or disk_limit_exceeded when the new volume would exceed your disk quota.
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 The target VPS could not be found (vps_not_found).
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 The volume could not be provisioned (upstream_failed). Retry, and 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
POST https://cloud.hostup.se/api/v2/volumes
For AI assistants
View as Markdown
cURL
curl -X POST "https://cloud.hostup.se/api/v2/volumes" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "database-data",
    "sizeGb": 100,
    "targetVpsId": "vps_01hxa3b4c5d6e7f8g9h0j1k2m3"
  }'
Response
{
  "id": "vol_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "displayId": "database-data",
  "name": "database-data",
  "sizeGb": 100,
  "status": "attached",
  "attachedVpsId": "vps_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "actions": {
    "canAttach": {
      "allowed": true,
      "reason": null
    },
    "canDetach": {
      "allowed": true,
      "reason": null
    },
    "canDelete": {
      "allowed": false,
      "reason": "Detach this volume before deleting it."
    }
  },
  "createdAt": "2026-04-27T12:00:00.000Z"
}
Request Body Create and attach volume
{
  "name": "database-data",
  "sizeGb": 100,
  "targetVpsId": "vps_01hxa3b4c5d6e7f8g9h0j1k2m3"
}