OpenAPI Türkçe gyrohosting.com ↗

Server actions

Power, rebuild, password and rescue operations. Asynchronous; poll the server until live.locked is false.

#POST/cloud/servers/{id}/actions/{action}

Run a server actionScope: cloud_writeserverActionOpenAPI for this operation

Heavy actions (rebuild, reset, rescue, snapshot restore, password reset) are limited per server per day. A one-time root_password is returned only when the request has no Idempotency-Key (idempotent answers are stored for replay, secrets never are; you then get root_password_withheld: true).

Region tr-ist-1: poweron, shutdown, reboot, poweroff (same as shutdown), rebuild and reset_password are available; reset, enable_rescue and disable_rescue answer 422 action_not_supported. rebuild accepts the images of the server's own product (GET /cloud/images?region=tr-ist-1); the SSH keys given at creation are installed again once the rebuilt server is ready (follow ssh_keys.state). Prepaid servers: DELETE always cancels at once (no cancellation request).

2.14.0 (Gyro Compute, tr-ist-1): reset (hard reset) is available too; rebuild accepts user_data and installs the server's SSH keys again; poweroff is a hard power off (shutdown = graceful). rescue actions answer 422 action_not_supported.

2.19.1 (rebuild + app): rebuild accepts app (+ optional app_domain) on cloud servers: the disk is wiped, the new system is installed and the app is set up on it (progress in GET /cloud/servers/{id}/app, /app/log; login details once in the app status). A rebuild without app closes the server's previous app record (its automatic address is removed). What a rebuild keeps: IP addresses (incl. additional IPv4), server name, plan, SSH keys, firewall rules; tr-ist-1 deletes additional disks and snapshots, EU/US/SG keeps volumes, snapshots and backups. Errors: app_with_user_data, invalid_app, invalid_app_domain, app_not_supported (legacy VDS), tool_action_failed with the reason (app not available for the image, hourly limit).

rebuild erases data (needs "confirm": true): the disk is re-created from the image; on tr-ist-1 additional disks and snapshots are deleted too, IP addresses, SSH keys of the order and the plan stay. A plan change (/cloud/services/{id}/resize) never erases data.

Parameters

FieldinTypeDescription
id requiredpathintegerServer id (= service id in the client area)
action requiredpathstring (poweron, shutdown, reboot, poweroff, reset, rebuild, reset_password, enable_rescue, disable_rescue)shutdown = graceful (ACPI), poweroff = hard power cut, reset = hard reset (needs confirm), rebuild = reinstall from image (needs confirm, wipes the disk), reset_password / enable_rescue return a one-time root_password.

Request body

FieldTypeDescription
imagestringrebuild only: image slug from /cloud/images
confirmbooleanrequired for reset and rebuild
user_datastringrebuild only (tr-ist-1 Gyro Compute): cloud-init for the new system; must start with #cloud-config or #!. Cannot be combined with app.
appstringrebuild only: one-click app id from GET /cloud/apps, installed automatically on top of the new system (cloud servers: Gyro Cloud EU/US/SG and Istanbul). The image must be one the app supports (os of the app). Follow the install with GET /cloud/servers/{id}/app and /app/log. Cannot be combined with user_data; at most 3 app installs per server per hour.
app_domainstringrebuild with app only: your domain for the app (its A record must point to the server); empty = automatic <ip-with-dashes>.gyroapp.net address.

Responses

202Accepted — data: ActionResult
404Not found — also returned for objects owned by someone else
409State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight)
422Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...)

Examples

curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/servers/12345/actions/reboot' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"image": "ubuntu-24.04", "confirm": true, "user_data": "string", "app": "uptime-kuma", "app_domain": "string"}'
gyro server power off 12345 --help    # all flags
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/servers/12345/actions/reboot", headers=h, json={"image": "ubuntu-24.04", "confirm": True, "user_data": "string", "app": "uptime-kuma", "app_domain": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/servers/12345/actions/reboot", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"image": "ubuntu-24.04", "confirm": true, "user_data": "string", "app": "uptime-kuma", "app_domain": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#POST/cloud/servers/{id}/console

Open a one-time VNC console ticketScope: cloud_writeopenConsoleOpenAPI for this operation

Returns a websocket URL and password valid for about a minute. Never send an Idempotency-Key here (400). In tr-ist-1 the ticket is a WebMKS websocket (protocol: webmks, empty password: the URL is the one-time secret). tr-ist-1: the WebSocket URL is on konsol.gyrohosting.com (single-use ticket). 2.14.0 (Gyro Compute): protocol: web, url is a one-time browser page (90 s) with keyboard + screen; wss_url carries the same URL for older clients.

Parameters

FieldinTypeDescription
id requiredpathintegerServer id (= service id in the client area)

Responses

201Ticket — data: object
400Malformed request (e.g. missing Idempotency-Key)
404Not found — also returned for objects owned by someone else
409State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight)

Examples

curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/servers/12345/console' \
  -H "Authorization: Bearer $GYRO_TOKEN"
gyro server console 12345
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/servers/12345/console", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/servers/12345/console", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
  },
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);

#POST/cloud/bulk

Run one action on up to 50 serversScope: cloud_writebulkServerActionOpenAPI for this operation

Request body

FieldTypeDescription
action requiredstring (poweron, shutdown, reboot, poweroff, reset, rebuild, disable_rescue)
server_ids requiredarray<integer>
imagestring
confirmboolean

Responses

207Per-target results — data: BulkResult
422Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...)

Examples

curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/bulk' \
  -H "Authorization: Bearer $GYRO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"action": "poweron", "server_ids": [1], "image": "string", "confirm": true}'
gyro bulk --help    # all flags
import os, uuid, requests

h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/bulk", headers=h, json={"action": "poweron", "server_ids": [1], "image": "string", "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])
const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/bulk", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"action": "poweron", "server_ids": [1], "image": "string", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);