/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.
The 202 response body is the refreshed placement group detail (there is no separate operation object); poll GET /api/v2/placement-groups/{id}/status until health returns to ok.
write:vm
Authenticate with an API key in the Authorization: Bearer <token> header.
id string required
Example: pg_01hxa3b4c5d6e7f8g9h0j1k2m3 Placement group public 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 acceptRestart boolean required Must be true to confirm the short restart of one VPS.
reconciling while the move runs; poll GET /api/v2/placement-groups/{id}/status until health is ok. 10 fields id string required
· Example: pg_01hxa3b4c5d6e7f8g9h0j1k2m3 name string required
· Example: Production database policy string · enum required
· Example: spread spread health string · enum required
· Example: reconciling ok reconciling violation needsAttention boolean required
· Example: false compatibilityKey string · nullable required
· Example: pgcmp_9f6a3b2c1d0e8a7b members array<object> required members[].vpsId string required
· Example: vps_01hxa3b4c5d6e7f8g9h0j1k2m3 members[].name string required
· Example: db-replica members[].instanceUrl string required
· Example: /instance/vps_01hxa3b4c5d6e7f8g9h0j1k2m3 members[].placementSet string · enum required
· Example: b a b c members[].status string · enum required
· Example: migrating placed migrating colocated unknown members[].addedAt string required
· Example: 2026-06-28T10:02:00.000Z actions object required actions.canRename object required actions.canRename.allowed boolean required
· Example: true actions.canRename.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.
actions.canAddMember object required actions.canAddMember.allowed boolean required
· Example: true actions.canAddMember.reason string · nullable required
· Example: null Nullable: may be null when not applicable.
actions.canResolve object required actions.canResolve.allowed boolean required
· Example: false actions.canResolve.reason string · nullable · enum required
· Example: not_needed Why the resolve action is unavailable: not_needed when the group has no issue a restart can fix, no_restart_target when no suitable separate hardware is available right now. null when allowed is true.
not_needed no_restart_target createdAt string required
· Example: 2026-06-28T10:00:00.000Z updatedAt string required
· Example: 2026-06-28T10:05:00.000Z acceptRestart was missing or not true. code is invalid_request. No body No response body
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 contact_permission_required. No body No response body
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 resolve_not_available. No body No response body
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/placement-groups/{id}/actions/resolve curl -X POST "https://cloud.hostup.se/api/v2/placement-groups/pg_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/resolve" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"acceptRestart": true
}' {
"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"
} {
"acceptRestart": true
}