Base URL: https://ds.powervps.xyz/api/v1/personal
Scope: servers.restart
Authentication
Authorization: Bearer <token>
Accept: application/json
The request source IP must be included in the token allowlist.
Restart a server
POST /servers/{serverId}/restart
Path parameters
| Parameter | Type | Description |
|---|---|---|
serverId |
integer | Internal DSmanager server ID from the ID column. The provider/external server ID is not accepted. |
Headers
| Header | Required | Description |
|---|---|---|
Authorization |
Yes | Bearer <token> |
Accept |
Recommended | application/json |
Idempotency-Key |
No | 16–128 Latin letters, numbers, _, or -. Reuse the same key only when retrying the same request. |
Request body: none.
Example
curl --request POST \
"https://ds.powervps.xyz/api/v1/personal/servers/2733/restart" \
--header "Authorization: Bearer PERSONAL_API_TOKEN" \
--header "Accept: application/json" \
--header "Idempotency-Key: restart-2733-20260901-0001"
202 Accepted
A new restart task was created.
{
"outcome": "queued",
"server": {
"id": 2733
},
"task": {
"id": 67890,
"status": "queued",
"terminal": false,
"status_url": "https://ds.powervps.xyz/api/v1/personal/servers/2733/restart/tasks/67890",
"created": "2026-09-01T10:15:30+00:00",
"started": null,
"completed": null
}
}
200 OK
The idempotent request already exists. The response has the same structure, with:
{
"outcome": "existing"
}
Get restart task status
GET /servers/{serverId}/restart/tasks/{taskId}
Path parameters
| Parameter | Type | Description |
|---|---|---|
serverId |
integer | Internal DSmanager server ID. |
taskId |
integer | Task ID returned by the restart request. |
Example
curl \
"https://ds.powervps.xyz/api/v1/personal/servers/2733/restart/tasks/67890" \
--header "Authorization: Bearer PERSONAL_API_TOKEN" \
--header "Accept: application/json"
200 OK
{
"server": {
"id": 2733
},
"task": {
"id": 67890,
"status": "running",
"terminal": false,
"status_url": "https://ds.powervps.xyz/api/v1/personal/servers/2733/restart/tasks/67890",
"created": "2026-09-01T10:15:30+00:00",
"started": "2026-09-01T10:15:32+00:00",
"completed": null
}
}
Task statuses
| Status | Terminal |
|---|---|
queued |
No |
running |
No |
waiting |
No |
success |
Yes |
failed |
Yes |
cancelled |
Yes |
Errors
{
"error": {
"code": "operation_in_progress",
"message": "Another operation is already active for this server."
}
}
| HTTP | Code | Description |
|---|---|---|
401 |
unauthorized |
Invalid, disabled, revoked, wrong-type token, or source IP is not allowed. |
403 |
intervention_mode_active |
Restart is blocked by Intervention mode. |
404 |
restart_task_not_found |
Restart task was not found or is not accessible to the token owner. |
404 |
— | Server was not found, is in Stock, or is not assigned to the token owner. |
409 |
operation_in_progress |
Another operation is active for the server. |
422 |
restart_unsupported |
Hardware restart is not supported. |
422 |
invalid_idempotency_key |
Invalid Idempotency-Key. |
423 |
network_disabled |
Server network access is disabled. |
429 |
— | Rate limit exceeded. |
Rate limit: 120 requests per minute per source IP.
API responses use:
Cache-Control: no-store, private