Restart one VPS to separate a placement group

POST /api/v2/placement-groups/{id}/actions/resolve

Start the self-serve fix for a placement group that needs attention after automatic separation could not finish.

The operation briefly shuts down one colocated VPS, moves it to separate hardware, and starts it again.

Call this only when the placement group detail has needsAttention: true and actions.canResolve.allowed: true.

Cloud VPS Cloud VPS

Authentication

Required API scope: write:vm

Use Authorization: Bearer <token> for API keys. Dashboard sessions may also use hostup_session.

Context

Path Parameters

id string required Example: id_01hxa3b4c5d6e7f8g9h0j1k2m3

Placement group public ID.

Headers

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

Body

required
application/json
acceptRestart boolean required

Must be true to confirm the short restart of one VPS.

Responses

202 Separation was accepted and queued. The returned placement group is normally reconciling while the move runs.

No response body

400 acceptRestart was missing or not true.

No response body

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 Forbidden. The caller lacks a required scope or does not own the resource.
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 Not found. The resource does not exist or is not owned by the caller.
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
409 The placement group cannot start a restart-based separation right now. Known code values are resolve_not_available and contact_permission_required.

No response body

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
POST https://cloud.hostup.se/api/v2/placement-groups/{id}/actions/resolve
For AI assistants
View as Markdown
cURL
curl -X POST "https://cloud.hostup.se/api/v2/placement-groups/id_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/resolve" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "acceptRestart": true
  }'
Response
{
  "id": "pg_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "name": "Production database",
  "policy": "spread",
  "health": "reconciling",
  "needsAttention": false,
  "compatibilityKey": "pgcmp_9f6a3b2c1d0e8a7b",
  "members": [
    {
      "vpsId": "vps_01hxa3b4c5d6e7f8g9h0j1k2m3",
      "name": "db-replica",
      "instanceUrl": "/instance/vps_01hxa3b4c5d6e7f8g9h0j1k2m3",
      "placementSet": "b",
      "status": "migrating",
      "addedAt": "2026-06-28T10:02:00.000Z"
    }
  ],
  "actions": {
    "canRename": {
      "allowed": true,
      "reason": null
    },
    "canDelete": {
      "allowed": true,
      "reason": null
    },
    "canAddMember": {
      "allowed": true,
      "reason": null
    },
    "canResolve": {
      "allowed": false,
      "reason": "not_needed"
    }
  },
  "createdAt": "2026-06-28T10:00:00.000Z",
  "updatedAt": "2026-06-28T10:05:00.000Z"
}
Request Body
{
  "acceptRestart": true
}