/api/v2/vps/{id}/backups/actions/restore-from-vps Restore the target VPS from a backup that belongs to another VPS or retained terminated-source backup owned by the same client.
This is destructive for the target VPS: the target is stopped, its current disk state is replaced, and the target network configuration is re-applied after restore.
Get sourceVpsId and backupId from GET /api/v2/vps/{id}/backups/restore-sources, read that backup's targetFit, and check actions.canRestoreFromAnotherVps on the target VPS before calling.
The source and target must be different VPS resources owned by the same client.
When the backup is larger than the target's storage, a Cloud VM target can grow: send growTargetStorage: true (the restore-sources targetFit.status is grow_required) and the restore recreates the disk at the backup's size and books the extra GB against the account's cloud storage allowance.
Without consent, or for a fixed-plan target, the request fails with 409 target_storage_too_small; its storageGrowth extension says whether resubmitting with consent would succeed.
backup:vm
Authenticate with an API key in the Authorization: Bearer <token> header.
id string required
Example: vps_01hxa3b4c5d6e7f8g9h0j1k2m3 Public target VPS ID 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 Content-Type application/json sourceVpsId string required
· Example: vps_01j0b3c4d5e6f7g8h9j0k1m2n3 Public source VPS ID returned by the restore-sources endpoint.
backupId string required
· Example: bkp_01hxa3b4c5d6e7f8g9h0j1k2m3 Public backup ID returned under the selected restore source.
growTargetStorage boolean
· Example: true Consent to grow a Cloud VM target's metered storage to the backup's disk size as part of the restore. Only honoured when the restore-sources targetFit.status for this backup is grow_required; ignored when the backup already fits.
operation object operation.status string · enum required
· Example: queued Operation status. 202 Accepted responses only carry pending, queued, or in_progress; the terminal completed and failed values appear only in 200 OK responses for operations that finished within the request, or when polling pollUrl.
pending queued in_progress completed failed operation.jobId string required
· Example: job_01hxa3b4c5d6e7f8g9h0j1k2m3 operation.pollUrl string · nullable required
· Example: /api/jobs/job_01hxa3b4c5d6e7f8g9h0j1k2m3 URL to poll for progress while the operation is in flight. null when status is already terminal (completed or failed), so there is nothing left to poll.
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 code is vps_not_found. 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 code is one of target_storage_too_small (backup larger than the target; storageGrowth.allowed tells whether resubmitting with growTargetStorage: true grows a Cloud VM target), target_storage_unconfirmed, target_vps_not_active, target_vps_not_ready, target_restore_blocked (a backup or restore is already running), source_target_same_vps, source_owner_unconfirmed, or target_owner_unconfirmed. 13 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 requiredStorageGb integer
· Example: 100 targetStorageGb integer
· Example: 50 storageGrowth object Present on target_storage_too_small: whether the target's storage can grow to requiredStorageGb when the caller consents.
storageGrowth.allowed boolean required
· Example: true storageGrowth.reason string · nullable required
· Example: null Nullable: may be null when not applicable.
storageGrowth.code string · nullable
· Example: pending_order Machine-readable reason code when an action is blocked.
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}/backups/actions/restore-from-vps curl -X POST "https://cloud.hostup.se/api/v2/vps/vps_01hxa3b4c5d6e7f8g9h0j1k2m3/backups/actions/restore-from-vps" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"sourceVpsId": "vps_01j0b3c4d5e6f7g8h9j0k1m2n3",
"backupId": "bkp_01hxa3b4c5d6e7f8g9h0j1k2m3"
}' {
"operation": {
"status": "queued",
"jobId": "job_01hxa3b4c5d6e7f8g9h0j1k2m3",
"pollUrl": "/api/jobs/job_01hxa3b4c5d6e7f8g9h0j1k2m3"
}
} {
"sourceVpsId": "vps_01j0b3c4d5e6f7g8h9j0k1m2n3",
"backupId": "bkp_01hxa3b4c5d6e7f8g9h0j1k2m3"
}