Attach a new non-root disk to a VPS by consuming already-purchased Attachable Block Storage. This endpoint does not buy storage capacity. Before calling, read GET /api/v2/vps/{id}/storage-quota: for regular VPS services, sizeGb must be less than or equal to attachable.availableGb. If there is not enough…
Attach a new non-root disk to a VPS by consuming already-purchased Attachable Block Storage. This endpoint does not buy storage capacity. Before calling, read GET /api/v2/vps/{id}/storage-quota: for regular VPS services, sizeGb must be less than or equal to attachable.availableGb. If there is not enough attachable capacity, first call GET /api/v2/vps/{id}/actions/upgrade, find configurableOptions[].key === "additionalStorageGb", then preview/commit POST /api/v2/vps/{id}/actions/config with resources.additionalStorageGb; re-read storage quota before retrying. Use the storageGb configurable option for main/root disk capacity, not this add-disk endpoint. Send sizeGb as a whole number from 1 to 1000. interface defaults to scsi; storage placement is selected by the server and must not be supplied by new integrations. After success, the API has attached a virtual disk only; the customer still needs to partition, format, and mount it inside the VPS operating system.
write:vmwrite:storage
Use Authorization: Bearer <token> for API keys. Dashboard sessions may also use hostup_session.
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.
Accept Example Content-Type Example sizeGb integer required
· Example: 100 interface string
· Example: scsi cache string
· Example: none disk object required disk.id string required
· Example: vpsdisk_01hxa3b4c5d6e7f8g9h0j1k2m3 disk.name string required
· Example: scsi1 disk.sizeGb integer required
· Example: 100 disk.interface string required
· Example: scsi 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 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}/actions/add-disk curl -X POST "https://cloud.hostup.se/api/v2/vps/vps_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/add-disk" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"sizeGb": 100,
"interface": "scsi"
}' {
"disk": {
"id": "vpsdisk_01hxa3b4c5d6e7f8g9h0j1k2m3",
"name": "scsi1",
"sizeGb": 100,
"interface": "scsi"
}
} {
"sizeGb": 100,
"interface": "scsi"
}