Gyro Public API v2.5.0
Manage Gyro cloud servers, SSH keys and billing programmatically.
The Gyro Public API lets you automate everything you do in the Gyro client area: order and manage cloud servers, keep SSH keys, read invoices and your account balance. It is the API behind the official Terraform provider (gyro-hosting/gyro) and gyroctl.
- Base URL
https://www.gyrohosting.com/api/v1/client - Authentication
Authorization: Bearer wck_...(create keys in Client area → account menu (top right) → API Credentials) - Format JSON in, JSON out. Successful answers are
{"data": ..., "meta": ...}; errors are{"error": {"code", "message", "details"}}.
v2: every product line through the generic service bridge (/cloud/services), webhooks, sub-account keys, reseller (bayi) end-customers, and the complete core client API (domains, DNS, tickets, orders, invoices, account) under the same key.
Getting started
1. In the client area open the account menu (top right) → API Credentials and create a key. Tick the scopes you need
(start with cloud_read) and, if you call from fixed machines, add their IP addresses. The key
(wck_…) is shown once — store it in a secret manager.
2. Call the API with the key as a bearer token:
curl -s https://www.gyrohosting.com/api/v1/client/cloud/servers \
-H "Authorization: Bearer $GYRO_TOKEN"
3. Prefer infrastructure as code? Use the Terraform provider (see Terraform).
Authentication and scopes
Every request carries Authorization: Bearer wck_… (or X-Api-Key). Keys belong to your account
and can only see your own objects; anything else answers 404, exactly like an id that does not exist.
| Scope | Allows |
|---|---|
Module:Addons/GyroAPI/cloud_read | All GET endpoints under /cloud |
…/cloud_write | Power, rebuild, snapshots, rDNS, rename, SSH keys |
…/cloud_order | Spends money: create servers (paid from balance) |
…/cloud_delete | Cancel / delete servers |
Invoices/GetInvoices, Invoices/GetInvoice, Balance/GetBalance | Billing reads |
Give CI pipelines the smallest set they need and an IP allow list. Revoke a key in the client area at any time.
Responses and errors
Success: {"data": …, "meta": {…}}. Error: {"error": {"code": "server_not_found", "message": "…", "details": {…}}}.
Branch on code, not on the message (messages follow your account language).
| HTTP | Typical codes |
|---|---|
| 400 | idempotency_key_required, bad_request |
| 401 | missing_token, invalid_token, key_revoked |
| 402 | insufficient_balance |
| 403 | insufficient_scope, ip_not_allowed, orders_disabled |
| 404 | server_not_found, ssh_key_not_found, snapshot_not_found, endpoint_not_found |
| 409 | server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight |
| 422 | confirm_required, invalid_image, invalid_hostname, product_not_orderable, tool_action_failed |
| 429 | rate_limited (see Retry-After) |
Money safety: dry run, confirm, idempotency
Creating a server places an order and pays it from your account balance — never from a stored card.
- Ask for a quote:
"dry_run": true. Nothing is created. - Order with
"confirm": trueand anIdempotency-Keyheader (a UUID per logical order). - Network error? Retry with the same key and body: you get the first answer back
(
Idempotency-Replayed: true), never a second server.
Destructive actions (rebuild, reset, snapshot restore, delete) also need confirm.
One-time root passwords are only returned on requests without an Idempotency-Key, because replayable answers are stored.
Asynchronous work and polling
Provisioning, power and image operations run in the background. Poll GET /cloud/servers/{id}:
the server is ready when status is active and live.power_state is running;
while live.locked is true, writes return 409 server_locked. Live state is cached for 15 seconds —
poll every 5–10 seconds, not faster.
Pagination and rate limits
Lists take page and limit (max 100) and return meta.total and meta.next_page (0 = last page).
Each key may make 60 requests per minute by default; every answer carries X-RateLimit-Limit,
X-RateLimit-Remaining and X-RateLimit-Reset. Hammering far past the limit locks the key temporarily.
Heavy server actions are also limited per server per day.
Every product through one bridge
All product lines — cloud and VDS servers, dedicated servers, corporate mail, monitors, storage, licenses — are reachable through
/cloud/services. Anything you can click on a service in the client area is a tool (or a module method) and works here too:
# what can I do with service 123?
curl -s https://www.gyrohosting.com/api/v1/client/cloud/services/123/tools -H "Authorization: Bearer $GYRO_TOKEN"
# list mailboxes, then create one
curl -s .../cloud/services/123/tools/mailboxes -H "Authorization: Bearer $GYRO_TOKEN"
curl -s -X POST .../cloud/services/123/tools/mailboxes/create -H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" -d '{"email":"[email protected]","password":"S3cure-pass!","quota":2048}'
The discovery answer flags every action with read, confirm (send "confirm": true) and secret
(one-time values, withheld when you send an Idempotency-Key). Domains, DNS, tickets, orders and invoices use the core endpoints listed below with the same key.
Resellers (bayi)
Reseller accounts get /cloud/reseller/*: create end-customers (with your own external_ref), order servers for them from your
balance at your discount (end_customer_id), assign existing services, mint end-customer keys that only see that customer's services and
cannot reach billing, read a usage report per customer, and switch on white label (no operator brand in names, messages or webhook headers).
curl -s -X POST .../cloud/reseller/customers -H "Authorization: Bearer $RESELLER_TOKEN" -H "Content-Type: application/json" \
-d '{"name":"Acme Ltd","external_ref":"acme-001","allow_order":true}'
curl -s -X POST .../cloud/reseller/customers/7/keys -H "Authorization: Bearer $RESELLER_TOKEN" -H "Content-Type: application/json" \
-d '{"name":"acme-ci","scopes":["cloud_read","cloud_write","services_read","services_write"],"rate_limit":60}'Webhooks
Create a webhook with POST /cloud/webhooks; the 64-hex secret is shown once. Verify every delivery:
import hmac, hashlib, time
def valid(secret, ts, body, signature):
if abs(time.time() - int(ts)) > 300: return False
mac = hmac.new(secret.encode(), (ts + "." + body).encode(), hashlib.sha256).hexdigest()
return hmac.compare_digest("sha256=" + mac, signature)
Headers: X-Gyro-Event, X-Gyro-Delivery, X-Gyro-Timestamp, X-Gyro-Signature. Answer 2xx within 4 seconds.
Terraform
terraform {
required_providers {
gyro = { source = "gyro-hosting/gyro", version = "~> 0.3" }
}
}
provider "gyro" {} # reads GYRO_TOKEN
resource "gyro_ssh_key" "me" {
name = "laptop"
public_key = file("~/.ssh/id_ed25519.pub")
}
resource "gyro_server" "web" {
plan = "standart-2-4" # list plans with 'gyro plan list' or data.gyro_products
region = "eu-de-1" # list regions with data.gyro_locations
image = "debian-12"
hostname = "web-1.example.com"
ssh_key_ids = [tonumber(gyro_ssh_key.me.id)]
confirm_order = true # creating a server spends account balance
}
Provider 0.3 or later. server_type/location from older versions still work but are deprecated; upgrading does not replace existing servers.
Data sources: gyro_products, gyro_locations, gyro_images. terraform destroy
cancels the server at once: billing stops and the machine is wiped
(set delete_immediately = false to file a cancellation request instead).
Servers
Cloud servers you own. Creating one places an order paid from your account balance.
GET/cloud/servers
List cloud serversScope: cloud_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
status | query | string (active, waiting, inprocess, suspended, cancelled) | |
page | query | integer | |
limit | query | integer |
Responses
| 200 | Servers (without live state) — data: array<Server> |
| 401 | Missing, invalid or revoked key |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/servers' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/servers", 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", {
method: "GET",
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/servers
Create (order) a cloud serverScope: cloud_order
Places an order and pays it from your account balance (never from a stored card). Safety rules:
- send
"dry_run": truefirst to get a price quote; nothing is created; - a real order needs
"confirm": trueand anIdempotency-Keyheader — retrying with the same key and body returns the first answer (Idempotency-Replayed: true) instead of a second order; - the operator may cap the number of servers per account (
409 server_limit).
Provisioning is asynchronous (typically under a minute): poll GET /cloud/servers/{id} until status is active and live.power_state is running.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
Idempotency-Key required | header | string | Unique per logical request (e.g. a UUID). Replays within 24 hours return the stored answer. |
Request body
| Field | Type | Description |
|---|---|---|
product_id | integer | From GET /cloud/products (or give plan + region) |
plan | string | Plan name from GET /cloud/products |
region | string | Region from GET /cloud/locations |
server_type | string | Deprecated alias of plan |
location | string | Deprecated alias of region |
cycle | string (monthly, quarterly, semiannually, annually) | |
image | string | |
ssh_keys | array<integer> | Ids from /cloud/ssh-keys (one key at creation in v1) |
hostname | string | |
user_data | string | cloud-init user data |
dry_run | boolean | |
confirm | boolean | Must be true to place a paid order |
end_customer_id | integer | Reseller main key: assign the new server to this end-customer |
Responses
| 200 | Dry-run quote (nothing created) — data: object |
| 202 | Order placed and paid; the server is being provisioned — data: CreateServerResult |
| 400 | Malformed request (e.g. missing Idempotency-Key) |
| 401 | Missing, invalid or revoked key |
| 402 | Account balance does not cover the order (insufficient_balance) |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/servers' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"product_id": 723, "cycle": "monthly", "image": "debian-12", "ssh_keys": [12], "hostname": "web-1.example.com", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/servers", headers=h, json={"product_id": 723, "cycle": "monthly", "image": "debian-12", "ssh_keys": [12], "hostname": "web-1.example.com", "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/servers", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({"product_id": 723, "cycle": "monthly", "image": "debian-12", "ssh_keys": [12], "hostname": "web-1.example.com", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/servers/{id}
Get a server with its live stateScope: cloud_read
live is read from the platform (cached for 15 seconds) and is null while the server is not active.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Responses
| 200 | Server — data: ServerDetail |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466", 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/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/cloud/servers/{id}
Rename a server or switch auto-renewScope: cloud_write
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Request body
| Field | Type | Description |
|---|---|---|
hostname | string | Fully qualified host name (max 63 characters) |
auto_renew | boolean |
Responses
| 200 | Updated server — data: ServerDetail |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"hostname": "web-1.example.com", "auto_renew": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466", headers=h, json={"hostname": "web-1.example.com", "auto_renew": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"hostname": "web-1.example.com", "auto_renew": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/servers/{id}
Delete (cancel) a serverScope: cloud_delete
Requires confirm=true (query or body). Two modes:
- default: files a cancellation request (
status: cancellation_requested). The server keeps running and billing continues until the request is processed by the panel's automation (daily, business hours); immediate=true: cancels now (status: cancelling, becomescancelledwithin about a minute) - billing stops, the server is powered off at once and destroyed with its data after the grace period (3 days). Same effect as an approved "cancel now" request in the panel. The operator can disable this.
Calling it again is safe.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
confirm required | query | boolean | |
immediate | query | boolean | true = cancel now instead of filing a request |
Responses
| 202 | Cancellation requested (default) or cancelled (immediate) — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466", 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/47466", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);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_write
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).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
action required | path | string (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
| Field | Type | Description |
|---|---|---|
image | string | rebuild only: image slug from /cloud/images |
confirm | boolean | required for reset and rebuild |
Responses
| 202 | Accepted — data: ActionResult |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/actions/reboot' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"image": "ubuntu-24.04", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/actions/reboot", headers=h, json={"image": "ubuntu-24.04", "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/actions/reboot", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"image": "ubuntu-24.04", "confirm": true}),
});
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_write
Returns a websocket URL and password valid for about a minute. Never send an Idempotency-Key here (400).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Responses
| 201 | Ticket — data: object |
| 400 | Malformed request (e.g. missing Idempotency-Key) |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/console' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/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/47466/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_write
Request body
| Field | Type | Description |
|---|---|---|
action required | string (poweron, shutdown, reboot, poweroff, reset, rebuild, disable_rescue) | |
server_ids required | array<integer> | |
image | string | |
confirm | boolean |
Responses
| 207 | Per-target results — data: BulkResult |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
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}'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}`);Snapshots and backups
Point-in-time images of a server disk. Snapshot space is an add-on quota in GB.
GET/cloud/servers/{id}/snapshots
List snapshots and the snapshot quotaScope: cloud_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Responses
| 200 | Snapshots — data: object |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/snapshots' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/snapshots", 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/47466/snapshots", {
method: "GET",
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/servers/{id}/snapshots
Take a snapshotScope: cloud_write
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Responses
| 202 | Snapshot is being created (poll the list until status is available) — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/snapshots' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/snapshots", 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/47466/snapshots", {
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/servers/{id}/snapshots/{sid}/restore
Restore a snapshot onto the server (overwrites the disk)Scope: cloud_write
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
sid required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
confirm required | boolean = true |
Responses
| 202 | Accepted |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/snapshots/123/restore' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/snapshots/123/restore", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/snapshots/123/restore", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/servers/{id}/snapshots/{sid}
Delete a snapshotScope: cloud_write
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
sid required | path | integer |
Responses
| 202 | Accepted |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/snapshots/123' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/snapshots/123", 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/47466/snapshots/123", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/servers/{id}/backups
List automatic backupsScope: cloud_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Responses
| 200 | Backups (enabled=false when the backup add-on is not active) — data: object |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/backups' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/backups", 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/47466/backups", {
method: "GET",
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/servers/{id}/backups
Take a manual backup (backup add-on required)Scope: cloud_write
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Responses
| 202 | Accepted |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/backups' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/backups", 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/47466/backups", {
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}`);Networking
Reverse DNS and the inbound firewall of a server.
GET/cloud/servers/{id}/rdns
List reverse DNS entriesScope: cloud_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Responses
| 200 | PTR records of the server's addresses — data: array<RdnsEntry> |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/rdns' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/rdns", 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/47466/rdns", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/cloud/servers/{id}/rdns
Set (or reset) the PTR record of one addressScope: cloud_write
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Request body
| Field | Type | Description |
|---|---|---|
ip required | string | An address of this server (IPv6 addresses inside the server's /64 are allowed) |
hostname | string | FQDN; empty string resets to the default |
Responses
| 200 | Updated list — data: array<RdnsEntry> |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/rdns' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ip": "string", "hostname": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/rdns", headers=h, json={"ip": "string", "hostname": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/rdns", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"ip": "string", "hostname": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/servers/{id}/firewall
Inbound firewall rulesScope: cloud_read
Read-only in v1. An empty list means no Gyro firewall is applied (all inbound traffic reaches the server).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Responses
| 200 | Rules — data: array<FirewallRule> |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/firewall' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/firewall", 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/47466/firewall", {
method: "GET",
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/servers/{id}/firewall/rules
Add an inbound firewall ruleScope: cloud_write
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Request body
| Field | Type | Description |
|---|---|---|
protocol required | string (tcp, udp, icmp) | |
port | string | N or N-M (empty = all ports) |
source_ips | array<string> | CIDRs (default any) |
Responses
| 201 | All rules after the change — data: array<FirewallRule> |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/firewall/rules' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"protocol": "tcp", "port": "22", "source_ips": ["203.0.113.0/24"]}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/firewall/rules", headers=h, json={"protocol": "tcp", "port": "22", "source_ips": ["203.0.113.0/24"]}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/firewall/rules", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"protocol": "tcp", "port": "22", "source_ips": ["203.0.113.0/24"]}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/servers/{id}/firewall/rules/{n}
Remove a firewall rule (the last one needs confirm)Scope: cloud_write
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
n required | path | integer | 1-based position from GET /firewall |
confirm | query | boolean |
Responses
| 200 | Remaining rules — data: array<FirewallRule> |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/firewall/rules/1' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/firewall/rules/1", 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/47466/firewall/rules/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Monitoring
CPU, disk and network metrics and the provider-side action history.
GET/cloud/servers/{id}/metrics
CPU, disk and network time seriesScope: cloud_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
period | query | string (24h, 7d, 30d) |
Responses
| 200 | Metrics; each line is a list of [unix_time, value] — data: Metrics |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/metrics' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/metrics", 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/47466/metrics", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/servers/{id}/activity
Recent platform actions on the serverScope: cloud_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Responses
| 200 | Actions (newest first, max 50) — data: array<object> |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/activity' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/activity", 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/47466/activity", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);SSH keys
Account-level public keys you can install on new servers.
GET/cloud/ssh-keys
List SSH keysScope: cloud_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
page | query | integer | |
limit | query | integer |
Responses
| 200 | SSH keys — data: array<SshKey> |
| 401 | Missing, invalid or revoked key |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/ssh-keys' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/ssh-keys", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/ssh-keys", {
method: "GET",
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/ssh-keys
Add an SSH keyScope: cloud_write
Accepts ssh-ed25519, ecdsa-sha2-nistp256/384/521, sk-ssh-ed25519 and ssh-rsa (2048 bit or more). At most 50 keys per account; fingerprints are unique per account.
Request body
| Field | Type | Description |
|---|---|---|
name required | string | |
public_key required | string |
Responses
| 201 | Created — data: SshKey |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/ssh-keys' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "laptop", "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFaA... me@laptop"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/ssh-keys", headers=h, json={"name": "laptop", "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFaA... me@laptop"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/ssh-keys", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "laptop", "public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFaA... me@laptop"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/ssh-keys/{id}
Get an SSH keyScope: cloud_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | SSH key — data: SshKey |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/ssh-keys/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/ssh-keys/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/ssh-keys/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/ssh-keys/{id}
Delete an SSH keyScope: cloud_write
Removes the key from your account. Servers that already have it keep it.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Deleted — data: object |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/ssh-keys/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/ssh-keys/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/ssh-keys/47466", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Catalog
Orderable products, locations and operating system images.
GET/cloud/products
List orderable cloud server productsScope: cloud_read
Prices are in the product currency, VAT excluded. available=false means temporarily out of stock.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
region | query | string | Filter by region (see GET /cloud/locations). A city name (falkenstein) also works. |
plan | query | string | Filter by plan name |
location | query | string | Deprecated alias of region (legacy location code) |
server_type | query | string | Deprecated alias of plan (legacy type code) |
page | query | integer | |
limit | query | integer |
Responses
| 200 | Products — data: array<Product> |
| 401 | Missing, invalid or revoked key |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/products' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/products", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/products", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/locations
List locations with orderable productsScope: cloud_read
Responses
| 200 | Locations — data: array<Location> |
| 401 | Missing, invalid or revoked key |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/locations' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/locations", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/locations", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/images
List operating system imagesScope: cloud_read
Responses
| 200 | Images — data: array<Image> |
| 401 | Missing, invalid or revoked key |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/images' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/images", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/images", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/products
List productsScope: Products/GetProducts
List products.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/satistaki-urunler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
page | query | integer | Kaçıncı sayfa. |
limit | query | integer | Sayfa başına satır. En çok 100. |
type | query | string | Tek bir ürün türü. Bilinmeyen tür reddedilir ve geçerli liste yanıtın ayrıntısında gelir. |
category | query | integer | Kategori numarası. Ana kategoriyle de ek atamalarla da eşleşir. |
search | query | string | Ürün başlığında arar. |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | type_invalid |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/products' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/products", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/products", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/products/categories
List product categoriesScope: Products/GetProductCategories
List product categories.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/satistaki-urunler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
type | query | string | Yalnız bu türün kategorileri. Bilinmeyen değer boş liste verir, hata değil. |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/products/categories' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/products/categories", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/products/categories", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/products/{id}
Get product (path: {id})Scope: Products/GetProduct
Get product (path: {id}).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/satistaki-urunler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/products/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/products/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/products/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Billing
Invoices and account balance (read-only with the recommended scopes).
GET/invoices
List invoicesScope: Invoices/GetInvoices
Parameters
| Field | in | Type | Description |
|---|---|---|---|
status | query | string | unpaid, paid, cancelled, refund |
page | query | integer | |
limit | query | integer |
Responses
| 200 | Invoices — data: array<Invoice> |
| 401 | Missing, invalid or revoked key |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/invoices' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/invoices", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/invoices", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/invoices/{id}
Get an invoiceScope: Invoices/GetInvoice
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Invoice with lines — data: Invoice |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/invoices/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/invoices/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/invoices/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/balance
Account balanceScope: Balance/GetBalance
Responses
| 200 | Balance — data: object |
| 401 | Missing, invalid or revoked key |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/balance' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/balance", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/balance", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/balance/transactions
Balance ledgerScope: Balance/GetBalanceTransactions
Parameters
| Field | in | Type | Description |
|---|---|---|---|
page | query | integer | |
limit | query | integer |
Responses
| 200 | Ledger entries — data: array<object> |
| 401 | Missing, invalid or revoked key |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/balance/transactions' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/balance/transactions", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/balance/transactions", {
method: "GET",
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/invoices/{id}/pay
Pay an invoice from the account balanceScope: billing_pay
Balance only (never a card). Requires "confirm": true and an Idempotency-Key header.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
Idempotency-Key required | header | string | Unique per logical request (e.g. a UUID). Replays within 24 hours return the stored answer. |
Request body
| Field | Type | Description |
|---|---|---|
confirm required | boolean = true |
Responses
| 200 | Paid — data: object |
| 400 | Malformed request (e.g. missing Idempotency-Key) |
| 402 | Account balance does not cover the order (insufficient_balance) |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/invoices/47466/pay' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/invoices/47466/pay", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/invoices/47466/pay", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/invoices/{id}/pdf
Invoice PDF (base64 in JSON)Scope: billing_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | PDF — data: object |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/invoices/47466/pdf' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/invoices/47466/pdf", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/invoices/47466/pdf", {
method: "GET",
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/balance/top-up
Create a balance top-up invoice and get its payment linkScope: billing_pay
Request body
| Field | Type | Description |
|---|---|---|
amount required | number |
Responses
| 201 | Invoice + pay_url — data: object |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/balance/top-up' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"amount": 1.0}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/balance/top-up", headers=h, json={"amount": 1.0}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/balance/top-up", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"amount": 1.0}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/invoices/{id}/pay
Pay invoice (path: {id})Scope: Invoices/PayInvoice
Pay invoice (path: {id}). Invoices of the calling account.
Spends money / creates an invoice. Money rules apply (AK-40): "confirm": true in the body, an Idempotency-Key header, account balance only (no stored card), daily limit of paid API operations per account (default 50, operator can override per account/reseller, resets 00:00 Europe/Istanbul); violations answer 422 with [confirm_required], [idempotency_key_required], [balance_only] or [daily_limit] in the message.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/fatura-odeme-api).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
Idempotency-Key required | header | string |
Request body
| Field | Type | Description |
|---|---|---|
payment required | object | paymentÖdeme kaynağı. |
method required | string | Ödeme yolu: hesap bakiyesi ya da kayıtlı kart. |
card_id | integer | Çekilecek kartın numarası. Verilmezse hesabın varsayılan kartı çekilir. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | balance_not_allowed, card_expired, card_not_chargeable, insufficient_balance, invoice_not_payable, no_stored_card, payment_method_invalid, subscription_collects |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/invoices/47466/pay' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"payment": {}, "method": "string", "card_id": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/invoices/47466/pay", headers=h, json={"payment": {}, "method": "string", "card_id": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/invoices/47466/pay", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({"payment": {}, "method": "string", "card_id": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/invoices/{id}/coupon
Apply invoice coupon (path: {id})Scope: Invoices/ApplyInvoiceCoupon
Apply invoice coupon (path: {id}). Invoices of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/fatura-odeme-api).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
code required | string | Kupon kodu. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | coupon_code_required, coupon_invalid, coupon_not_invoice, coupon_rejected, coupon_scope, coupon_used, invoice_not_payable |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/invoices/47466/coupon' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"code": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/invoices/47466/coupon", headers=h, json={"code": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/invoices/47466/coupon", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"code": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/balance/settings
Update balance settingsScope: Balance/UpdateBalanceSettings
Update balance settings.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/hesap-bakiyesi-api).
Request body
| Field | Type | Description |
|---|---|---|
auto_pay_from_balance | boolean | Yenilemeler cüzdandan tahsil edilsin mi. Bu değiştiğinde açık yenileme faturaları yeni tercihe göre yeniden ele alınır. |
backup_card_id | integer | Cüzdan yetmediğinde çekilecek kart. Sıfır göndermek kart zincirini tümüyle kaldırır. |
alert | object | Uyarı bloğu. Açık ve eşik alanlarını taşır; açarken pozitif bir eşik gerekir. |
alert_recipients | string | Uyarıyı alacak fatura adresi numaraları. Liste yerine geçer; hesabın sahibi burada yer almaz, her zaman alır. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | alert_invalid, auto_pay_invalid, card_expired, nothing_to_update |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/balance/settings' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"auto_pay_from_balance": true, "backup_card_id": 1, "alert": {}, "alert_recipients": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/balance/settings", headers=h, json={"auto_pay_from_balance": True, "backup_card_id": 1, "alert": {}, "alert_recipients": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/balance/settings", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"auto_pay_from_balance": true, "backup_card_id": 1, "alert": {}, "alert_recipients": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Account
Key introspection and the write log of your API keys.
GET/whoami
Describe the calling API keyScope: any
Responses
| 200 | Key details — data: object |
| 401 | Missing, invalid or revoked key |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/whoami' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/whoami", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/whoami", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/activity
List write calls made with your API keysScope: cloud_read
Every non-GET call to /cloud/... is recorded for 365 days (method, path, scope, HTTP status, IP, key id). Request and response bodies are never stored.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
page | query | integer | |
limit | query | integer |
Responses
| 200 | Activity page — data: array<ActivityEntry> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/activity' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/activity", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/activity", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/ping
PingScope: System/Ping
Ping.
Core WISECP client endpoint.
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/ping' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/ping", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/ping", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/me
Get meScope: Account/GetMe
Get me.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/anahtarin-hesabi).
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/me' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/me", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/me", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/me
Update meScope: Account/UpdateMe
Update me.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/anahtarin-hesabi).
Request body
| Field | Type | Description |
|---|---|---|
name | string | Adı. Boşaltılamaz. |
surname | string | Soyadı. Boşaltılamaz. |
kind | string | Hesap türü. Bireysele geçmek şirket bilgilerini temizler. |
company | object | Şirket bilgileri. Hesabın kurumsal olmasını gerektirir. |
birthday | string | Doğum tarihi. |
identity | string | Kimlik numarası. |
landline_phone | string | Sabit telefon. |
language | string | Dil kodu. Kurulumda bulunmalıdır. |
country | string | Ülke kodu. |
currency | string | Görüntü para birimi kodu. |
timezone | string | Saat dilimi. Boş göndermek hesabın kendi seçimini siler. |
date_format | string | Tarih biçimi. Boş göndermek hesabın kendi seçimini siler. |
custom_fields | object | Ek alanların değerleri. Kutu tipli alanlar dizi alır. |
avatar | string | Profil görseli. Yalnız kodlanmış içerik kabul edilir; adres reddedilir. |
email | string | |
phone | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | avatar_url_not_allowed, birthday_required, company_name_required, company_requires_corporate, custom_field_required, field_not_editable, field_too_long, kind_invalid, language_invalid, name_required, nothing_to_update |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/me' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "string", "surname": "string", "kind": "string", "company": {}, "birthday": "string", "identity": "string", "landline_phone": "string", "language": "string", "country": "string", "currency": "string", "timezone": "string", "date_format": "string", "custom_fields": {}, "avatar": "string", "email": "string", "phone": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/me", headers=h, json={"name": "string", "surname": "string", "kind": "string", "company": {}, "birthday": "string", "identity": "string", "landline_phone": "string", "language": "string", "country": "string", "currency": "string", "timezone": "string", "date_format": "string", "custom_fields": {}, "avatar": "string", "email": "string", "phone": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/me", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "string", "surname": "string", "kind": "string", "company": {}, "birthday": "string", "identity": "string", "landline_phone": "string", "language": "string", "country": "string", "currency": "string", "timezone": "string", "date_format": "string", "custom_fields": {}, "avatar": "string", "email": "string", "phone": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/me/security
Get securityScope: Account/GetSecurity
Get security.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/anahtarin-hesabi).
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/me/security' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/me/security", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/me/security", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/me/notifications
Get notificationsScope: Account/GetNotifications
Get notifications.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/anahtarin-hesabi).
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/me/notifications' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/me/notifications", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/me/notifications", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/me/notifications
Update notificationsScope: Account/UpdateNotifications
Update notifications.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/anahtarin-hesabi).
Request body
| Field | Type | Description |
|---|---|---|
invoices | object | Fatura bildirimleri. E-posta ve kısa mesaj kanallarını taşır; eksik kanal kapalı sayılır. |
support | object | Destek bildirimleri. |
product | object | Ürün ve hizmet bildirimleri. |
domain | object | Alan adı bildirimleri. |
marketing | object | Pazarlama bildirimleri. |
general | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/me/notifications' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"invoices": {}, "support": {}, "product": {}, "domain": {}, "marketing": {}, "general": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/me/notifications", headers=h, json={"invoices": {}, "support": {}, "product": {}, "domain": {}, "marketing": {}, "general": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/me/notifications", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"invoices": {}, "support": {}, "product": {}, "domain": {}, "marketing": {}, "general": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/addresses
List addressesScope: Addresses/GetAddresses
List addresses.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/adres-defteri).
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/addresses' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/addresses", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/addresses", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/addresses
Create addressScope: Addresses/CreateAddress
Create address.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/adres-defteri).
Request body
| Field | Type | Description |
|---|---|---|
name required | string | İlgili kişinin adı. |
surname required | string | Soyadı. |
email required | string | Geçerli bir e-posta. |
country required | string | Ülke kodu. Başvuru ucundan alınır. |
state required | string | İl. Listeden numara, liste boşsa serbest metin. |
city required | string | Şehir. Listeden numara, liste boşsa serbest metin. |
address required | string | Açık adres. |
zipcode required | string | Posta kodu. En çok yirmi karakter. |
kind | string | Kişi türü. Öntanımlı olarak bireysel. |
company | object | Şirket bilgileri. Kurumsal kişide ad zorunludur. |
label | string | Serbest etiket. |
phone | string | Kişinin telefonu. |
identity | string | Kimlik numarası. |
notifications | object | Kanal matrisi. Tam değiştirmedir; hiç gönderilmezse hepsi açılır. |
is_default | boolean | Bunu varsayılan profil yap. |
overwrite_invoices | boolean | Açık faturaları bu adrese yeniden yaz. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | company_name_required, contact_rejected, field_too_long, name_required, notifications_invalid |
| 500 | address_add_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/addresses' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "string", "surname": "string", "email": "string", "country": "string", "state": "string", "city": "string", "address": "string", "zipcode": "string", "kind": "string", "company": {}, "label": "string", "phone": "string", "identity": "string", "notifications": {}, "is_default": true, "overwrite_invoices": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/addresses", headers=h, json={"name": "string", "surname": "string", "email": "string", "country": "string", "state": "string", "city": "string", "address": "string", "zipcode": "string", "kind": "string", "company": {}, "label": "string", "phone": "string", "identity": "string", "notifications": {}, "is_default": True, "overwrite_invoices": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/addresses", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "string", "surname": "string", "email": "string", "country": "string", "state": "string", "city": "string", "address": "string", "zipcode": "string", "kind": "string", "company": {}, "label": "string", "phone": "string", "identity": "string", "notifications": {}, "is_default": true, "overwrite_invoices": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/addresses/{id}
Get address (path: {id})Scope: Addresses/GetAddress
Get address (path: {id}).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/adres-defteri).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/addresses/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/addresses/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/addresses/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/addresses/{id}
Update address (path: {id})Scope: Addresses/UpdateAddress
Update address (path: {id}).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/adres-defteri).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
name required | string | İlgili kişinin adı. |
surname required | string | Soyadı. |
email required | string | Geçerli bir e-posta. |
country required | string | Ülke kodu. Başvuru ucundan alınır. |
state required | string | İl. Listeden numara, liste boşsa serbest metin. |
city required | string | Şehir. Listeden numara, liste boşsa serbest metin. |
address required | string | Açık adres. |
zipcode required | string | Posta kodu. En çok yirmi karakter. |
kind | string | Kişi türü. Öntanımlı olarak bireysel. |
company | object | Şirket bilgileri. Kurumsal kişide ad zorunludur. |
label | string | Serbest etiket. |
phone | string | Kişinin telefonu. |
identity | string | Kimlik numarası. |
notifications | object | Kanal matrisi. Tam değiştirmedir; hiç gönderilmezse hepsi açılır. |
is_default | boolean | Bunu varsayılan profil yap. |
overwrite_invoices | boolean | Açık faturaları bu adrese yeniden yaz. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | company_name_required, contact_rejected, field_too_long, name_required |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/addresses/47466' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "string", "surname": "string", "email": "string", "country": "string", "state": "string", "city": "string", "address": "string", "zipcode": "string", "kind": "string", "company": {}, "label": "string", "phone": "string", "identity": "string", "notifications": {}, "is_default": true, "overwrite_invoices": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/addresses/47466", headers=h, json={"name": "string", "surname": "string", "email": "string", "country": "string", "state": "string", "city": "string", "address": "string", "zipcode": "string", "kind": "string", "company": {}, "label": "string", "phone": "string", "identity": "string", "notifications": {}, "is_default": True, "overwrite_invoices": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/addresses/47466", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "string", "surname": "string", "email": "string", "country": "string", "state": "string", "city": "string", "address": "string", "zipcode": "string", "kind": "string", "company": {}, "label": "string", "phone": "string", "identity": "string", "notifications": {}, "is_default": true, "overwrite_invoices": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/addresses/{id}
Delete address (path: {id})Scope: Addresses/DeleteAddress
Delete address (path: {id}).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/adres-defteri).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/addresses/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/addresses/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/addresses/47466", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/addresses/{id}/default
Set default address (path: {id})Scope: Addresses/SetDefaultAddress
Set default address (path: {id}).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/adres-defteri).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/addresses/47466/default' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/addresses/47466/default", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/addresses/47466/default", {
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}`);Services (all products)
Generic bridge to every product line (cloud server, VDS, dedicated, mail, monitor, storage, license, ...). Everything a customer can do on a service in the client area is a module tool or method and is reachable here. Start with GET /cloud/services/{id}/tools: it lists the tools, their actions and our safety policy (read, confirm, secret) for that very service.
GET/cloud/services
List services of every product lineScope: services_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
product_line | query | string (cloud_server, vds, dedicated_server, mail, monitor, storage, license, app) | |
status | query | string | |
customer_id | query | integer | Reseller main key only |
page | query | integer | |
limit | query | integer |
Responses
| 200 | Services — data: array<Service> |
| 401 | Missing, invalid or revoked key |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/services' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/services", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/services", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/services/{id}
Get a service (renewal, cancellation, access details)Scope: services_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Service — data: Service |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/services/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/services/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/services/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/services/{id}/tools
Discover tools, actions and safety policy of a serviceScope: services_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Tools — data: ServiceTools |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/services/47466/tools' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/tools", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/tools", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/services/{id}/tools/{tool}
Read a tool (list mailboxes, snapshots, DNS records, ...)Scope: services_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
tool required | path | string |
Responses
| 200 | Tool data (module specific) — data: object |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/services/47466/tools/1' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/tools/1", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/tools/1", {
method: "GET",
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/services/{id}/tools/{tool}/{action}
Run a tool action (create a mailbox, restore a snapshot, ...)Scope: services_write
Body fields are the tool's own fields (see the tool data and the per-module table in the guide). Actions flagged confirm in the discovery answer need "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
tool required | path | string | |
action required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Accepted — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/services/47466/tools/1/reboot' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "S3cure-pass!", "quota": 2048}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/tools/1/reboot", headers=h, json={"email": "[email protected]", "password": "S3cure-pass!", "quota": 2048}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/tools/1/reboot", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"email": "[email protected]", "password": "S3cure-pass!", "quota": 2048}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/services/{id}/methods/{method}
Call a client-callable module method (e.g. license change_ip)Scope: services_write
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
method required | path | string |
Request body
| Field | Type | Description |
|---|
Responses
| 200 | Result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/services/47466/methods/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ip": "203.0.113.10"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/methods/1", headers=h, json={"ip": "203.0.113.10"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/methods/1", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"ip": "203.0.113.10"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/services/{id}/label
Get the nickname and tags of a serviceScope: services_read
Customer-defined nickname and colour tags of one of your services (any product line). A service without a label answers "nickname": null and "tags": []. Labels are private to the service owner; after a transfer the old owner's label is not shown.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Label — data: ServiceLabel |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | Not found — also returned for objects owned by someone else |
| 429 | Too many requests (rate_limited); see the Retry-After and X-RateLimit-* headers |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/services/47466/label' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/label", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/label", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/cloud/services/{id}/label
Set the nickname and/or tags of a serviceScope: services_write
Send nickname, tags or both; a field that is not sent stays unchanged. nickname "" or null clears it; tags replaces all tags and [] clears them. A tag is "name" or {"name", "color"}; an unknown or missing colour gets a stable default. Duplicate names (case-insensitive) are merged. Limit: 30 label writes per minute per key (429 rate_limited). Sub-account keys need the label:edit action. Errors: 422 nothing_to_update, invalid_nickname, invalid_tags; 404 service_not_found (also for services of other accounts) or feature_unavailable.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
nickname | string | null | "" or null clears the nickname. No control characters. |
tags | array | null | Replaces all tags; [] or null clears them. Item: a tag name, or {"name", "color"} (CLI: use --data for colours). |
Responses
| 200 | Saved label — data: ServiceLabel |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
| 429 | Too many requests (rate_limited); see the Retry-After and X-RateLimit-* headers |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/cloud/services/47466/label' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"nickname": "Accounting server", "tags": [{"name": "production", "color": "green"}, "customer-A"]}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/label", headers=h, json={"nickname": "Accounting server", "tags": [{"name": "production", "color": "green"}, "customer-A"]}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/label", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"nickname": "Accounting server", "tags": [{"name": "production", "color": "green"}, "customer-A"]}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Webhooks
Signed HTTPS callbacks for service, invoice, order and ticket events.
GET/cloud/webhooks
List webhooksScope: webhooks
Responses
| 200 | Webhooks — data: array<Webhook> |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/webhooks' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/webhooks", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/webhooks", {
method: "GET",
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/webhooks
Create a webhook (secret returned once)Scope: webhooks
Deliveries are POST JSON with headers X-Gyro-Event, X-Gyro-Delivery, X-Gyro-Timestamp and X-Gyro-Signature: sha256=HMAC_SHA256(secret, timestamp + "." + body) (white-label resellers: X-Webhook-*). Reject requests whose timestamp is older than 5 minutes. Retries: exponential back-off, 8 attempts; 20 consecutive failures disable the webhook.
Request body
| Field | Type | Description |
|---|---|---|
url required | string | |
events | array<WebhookEvent> | empty = all |
description | string | |
customer_id | integer | Reseller main key only |
Responses
| 201 | Created (includes secret) — data: object |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/webhooks' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "https://hooks.example.com/gyro", "events": ["service.active", "invoice.paid"]}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/webhooks", headers=h, json={"url": "https://hooks.example.com/gyro", "events": ["service.active", "invoice.paid"]}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/webhooks", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"url": "https://hooks.example.com/gyro", "events": ["service.active", "invoice.paid"]}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/webhooks/{id}
Get a webhookScope: webhooks
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Webhook — data: Webhook |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/cloud/webhooks/{id}
Update url, events, description or statusScope: webhooks
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
url | string | |
events | array<WebhookEvent> | |
description | string | |
status | string (active, disabled) |
Responses
| 200 | Webhook — data: Webhook |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "string", "events": ["service.created"], "description": "string", "status": "active"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466", headers=h, json={"url": "string", "events": ["service.created"], "description": "string", "status": "active"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"url": "string", "events": ["service.created"], "description": "string", "status": "active"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/webhooks/{id}
Delete a webhookScope: webhooks
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Deleted |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466", {
method: "DELETE",
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/webhooks/{id}/test
Send an api.test event nowScope: webhooks
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466/test' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466/test", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466/test", {
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}`);GET/cloud/webhooks/{id}/deliveries
Last 100 deliveriesScope: webhooks
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Deliveries — data: array<WebhookDelivery> |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466/deliveries' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466/deliveries", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/webhooks/47466/deliveries", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);API keys
Sub-account keys narrowed to services, actions or a reseller end-customer. Only GyroAPI /cloud routes accept them.
GET/cloud/keys
List sub-account keys (never shows tokens)Scope: keys
Responses
| 200 | Keys — data: array<ApiKey> |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/keys' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/keys", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/keys", {
method: "GET",
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/keys
Create a sub-account key (token returned once)Scope: keys
Request body
| Field | Type | Description |
|---|---|---|
name required | string | |
scopes | array<string (cloud_read, cloud_write, cloud_order, cloud_delete, services_read, services_write, webhooks)> | |
services | array<integer> | Optional service allow list |
actions | array<string> | Optional action allow list: server actions (reboot) or tool:action / tool:* / method:name |
ips | array<string> | |
rate_limit | integer | Requests per minute (<= your own limit; 0 = default) |
Responses
| 201 | Created — data: object |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/keys' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "ci-reboot-only", "scopes": ["cloud_read", "cloud_write"], "services": [47466], "actions": ["reboot", "poweron"], "ips": ["203.0.113.10"], "rate_limit": 30}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/keys", headers=h, json={"name": "ci-reboot-only", "scopes": ["cloud_read", "cloud_write"], "services": [47466], "actions": ["reboot", "poweron"], "ips": ["203.0.113.10"], "rate_limit": 30}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/keys", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "ci-reboot-only", "scopes": ["cloud_read", "cloud_write"], "services": [47466], "actions": ["reboot", "poweron"], "ips": ["203.0.113.10"], "rate_limit": 30}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/keys/{id}
Delete a sub-account keyScope: keys
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Deleted |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/keys/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/keys/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/keys/47466", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Reseller
Reseller (bayi) accounts manage their own end-customers, assign services, mint end-customer keys and read usage reports. Services stay on the reseller account and use its discount.
GET/cloud/reseller/settings
Reseller settingsScope: reseller
Responses
| 200 | Settings — data: ResellerSettings |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/settings' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/reseller/settings", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/settings", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/cloud/reseller/settings
Save reseller settings (white label)Scope: reseller
Request body
| Field | Type | Description |
|---|---|---|
white_label | boolean |
Responses
| 200 | Settings — data: ResellerSettings |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/settings' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"white_label": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/cloud/reseller/settings", headers=h, json={"white_label": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/settings", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"white_label": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/reseller/report
Usage and billing report per end-customerScope: reseller
Parameters
| Field | in | Type | Description |
|---|---|---|---|
from | query | string | |
to | query | string |
Responses
| 200 | Report — data: ResellerReport |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/report' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/reseller/report", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/report", {
method: "GET",
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/reseller/assign
Assign a service to an end-customer (customer_id 0 = unassign)Scope: reseller
Request body
| Field | Type | Description |
|---|---|---|
service_id required | integer | |
customer_id required | integer |
Responses
| 200 | Assignment — data: object |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/assign' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"service_id": 1, "customer_id": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/reseller/assign", headers=h, json={"service_id": 1, "customer_id": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/assign", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"service_id": 1, "customer_id": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/reseller/customers
List end-customersScope: reseller
Parameters
| Field | in | Type | Description |
|---|---|---|---|
external_ref | query | string | |
page | query | integer | |
limit | query | integer |
Responses
| 200 | Customers — data: array<EndCustomer> |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers", {
method: "GET",
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/reseller/customers
Create an end-customerScope: reseller
Request body
| Field | Type | Description |
|---|---|---|
name | string | |
email | string | |
external_ref | string | Your own customer id (unique per reseller) |
note | string | |
status | string (active, suspended) | |
allow_order | boolean | May this customer's keys order servers (paid from YOUR balance)? |
Responses
| 201 | Created — data: EndCustomer |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Acme Ltd", "external_ref": "acme-001", "allow_order": false}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers", headers=h, json={"name": "Acme Ltd", "external_ref": "acme-001", "allow_order": False}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "Acme Ltd", "external_ref": "acme-001", "allow_order": false}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/reseller/customers/{id}
Get an end-customerScope: reseller
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Customer — data: EndCustomer |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/cloud/reseller/customers/{id}
Update an end-customer (suspend = its keys stop working)Scope: reseller
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
name | string | |
email | string | |
external_ref | string | Your own customer id (unique per reseller) |
note | string | |
status | string (active, suspended) | |
allow_order | boolean | May this customer's keys order servers (paid from YOUR balance)? |
Responses
| 200 | Customer — data: EndCustomer |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "string", "email": "string", "external_ref": "string", "note": "string", "status": "active", "allow_order": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466", headers=h, json={"name": "string", "email": "string", "external_ref": "string", "note": "string", "status": "active", "allow_order": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "string", "email": "string", "external_ref": "string", "note": "string", "status": "active", "allow_order": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/reseller/customers/{id}
Delete an end-customer (revokes keys and webhooks, unassigns services)Scope: reseller
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
confirm required | query | boolean |
Responses
| 200 | Deleted |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/reseller/customers/{id}/keys
List an end-customer's keysScope: reseller
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Keys — data: array<ApiKey> |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466/keys' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466/keys", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466/keys", {
method: "GET",
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/reseller/customers/{id}/keys
Mint a key for an end-customer (token returned once)Scope: reseller
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
name required | string | |
scopes | array<string (cloud_read, cloud_write, cloud_order, cloud_delete, services_read, services_write, webhooks)> | |
services | array<integer> | Optional service allow list |
actions | array<string> | Optional action allow list: server actions (reboot) or tool:action / tool:* / method:name |
ips | array<string> | |
rate_limit | integer | Requests per minute (<= your own limit; 0 = default) |
Responses
| 201 | Created — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466/keys' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "string", "scopes": ["cloud_read"], "services": [1], "actions": ["string"], "ips": ["string"], "rate_limit": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466/keys", headers=h, json={"name": "string", "scopes": ["cloud_read"], "services": [1], "actions": ["string"], "ips": ["string"], "rate_limit": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466/keys", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "string", "scopes": ["cloud_read"], "services": [1], "actions": ["string"], "ips": ["string"], "rate_limit": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/reseller/customers/{id}/keys/{kid}
Revoke an end-customer keyScope: reseller
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
kid required | path | integer |
Responses
| 200 | Deleted |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466/keys/1' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466/keys/1", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/reseller/customers/47466/keys/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Typed corporate-mail shortcuts (mailboxes, aliases, catch-all, auto-responders, IMAP migrations, DNS, spam, delivery log, quarantine, deleted mail, archive, 2FA). Mailboxes are addressed by local part.
GET/cloud/mail/{id}/mailboxes
GET mailboxes (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool mailboxes. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes", {
method: "GET",
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/mail/{id}/mailboxes
POST mailboxes:create (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool mailboxes, action create. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/cloud/mail/{id}/mailboxes/{local}
PATCH mailboxes:edit (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool mailboxes, action edit. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
local required | path | string | Mailbox local part (before @) |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes/1", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/mail/{id}/mailboxes/{local}
DELETE mailboxes:delete (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool mailboxes, action delete. Body fields are the tool's own fields. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
local required | path | string | Mailbox local part (before @) |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/mail/{id}/mailboxes/{local}/password
POST mailboxes:password (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool mailboxes, action password. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
local required | path | string | Mailbox local part (before @) |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes/1/password' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes/1/password", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/mailboxes/1/password", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/mail/{id}/aliases
GET aliases (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool aliases. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/aliases' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/aliases", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/aliases", {
method: "GET",
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/mail/{id}/aliases
POST aliases:create (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool aliases, action create. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/aliases' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/aliases", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/aliases", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/cloud/mail/{id}/aliases/{aid}
PATCH aliases:edit (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool aliases, action edit. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
aid required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/aliases/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/aliases/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/aliases/1", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/mail/{id}/aliases/{aid}
DELETE aliases:delete (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool aliases, action delete. Body fields are the tool's own fields. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
aid required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/aliases/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/aliases/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/aliases/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/mail/{id}/catch-all
GET catch-all (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool catch-all. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/catch-all' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/catch-all", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/catch-all", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/cloud/mail/{id}/catch-all
PUT catch-all:edit (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool catch-all, action edit. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/catch-all' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/catch-all", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/catch-all", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/mail/{id}/autoresponders
GET autoresponder (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool autoresponder. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/autoresponders' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/autoresponders", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/autoresponders", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/cloud/mail/{id}/autoresponders/{local}
PUT autoresponder:edit (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool autoresponder, action edit. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
local required | path | string | Mailbox local part (before @) |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/autoresponders/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/autoresponders/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/autoresponders/1", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/mail/{id}/autoresponders/{local}
DELETE autoresponder:delete (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool autoresponder, action delete. Body fields are the tool's own fields. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
local required | path | string | Mailbox local part (before @) |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/autoresponders/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/autoresponders/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/autoresponders/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/mail/{id}/migrations
GET sync-jobs (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool sync-jobs. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/migrations' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/migrations", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/migrations", {
method: "GET",
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/mail/{id}/migrations
POST sync-jobs:create (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool sync-jobs, action create. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/migrations' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/migrations", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/migrations", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/mail/{id}/migrations/{jid}/run
POST sync-jobs:run (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool sync-jobs, action run. Body fields are the tool's own fields. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
jid required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/migrations/1/run' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/migrations/1/run", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/migrations/1/run", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/mail/{id}/migrations/{jid}
DELETE sync-jobs:delete (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool sync-jobs, action delete. Body fields are the tool's own fields. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
jid required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/migrations/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/migrations/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/migrations/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/mail/{id}/dns
GET dns-setup (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool dns-setup. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/dns' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/dns", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/dns", {
method: "GET",
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/mail/{id}/dns/verify
POST dns-setup:verify (GyroMail)Scope: services_write
Typed shortcut of the generic bridge: tool dns-setup, action verify. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/dns/verify' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/dns/verify", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/dns/verify", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/mail/{id}/spam-filter
GET spam-filter (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool spam-filter. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/spam-filter' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/spam-filter", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/spam-filter", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/mail/{id}/delivery-log
GET delivery-log (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool delivery-log. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/delivery-log' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/delivery-log", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/delivery-log", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/mail/{id}/quarantine
GET quarantine (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool quarantine. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/quarantine' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/quarantine", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/quarantine", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/mail/{id}/deleted
GET deleted-mail (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool deleted-mail. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/deleted' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/deleted", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/deleted", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/mail/{id}/archive
GET archive (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool archive. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/archive' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/archive", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/archive", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/mail/{id}/two-factor
GET two-factor (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool two-factor. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/two-factor' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/two-factor", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/two-factor", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/mail/{id}/plan
GET plan-size (GyroMail)Scope: services_read
Typed shortcut of the generic bridge: tool plan-size. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/plan' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/plan", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/mail/47466/plan", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Object storage
Typed S3 storage shortcuts: buckets, access keys (secret shown once), usage, connection details.
GET/cloud/storage/{id}/buckets
GET buckets (GyroDepolama)Scope: services_read
Typed shortcut of the generic bridge: tool buckets. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets", {
method: "GET",
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/storage/{id}/buckets
POST buckets:create (GyroDepolama)Scope: services_write
Typed shortcut of the generic bridge: tool buckets, action create. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/storage/{id}/buckets/{bucket}
DELETE buckets:delete (GyroDepolama)Scope: services_write
Typed shortcut of the generic bridge: tool buckets, action delete. Body fields are the tool's own fields. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
bucket required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/storage/{id}/keys
GET access-keys (GyroDepolama)Scope: services_read
Typed shortcut of the generic bridge: tool access-keys. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/keys' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/keys", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/keys", {
method: "GET",
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/storage/{id}/keys
POST access-keys:create (GyroDepolama)Scope: services_write
Typed shortcut of the generic bridge: tool access-keys, action create. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/keys' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/keys", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/keys", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/storage/{id}/keys/{key}/rotate
POST access-keys:rotate (GyroDepolama)Scope: services_write
Typed shortcut of the generic bridge: tool access-keys, action rotate. Body fields are the tool's own fields. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
key required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/keys/1/rotate' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/keys/1/rotate", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/keys/1/rotate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/storage/{id}/keys/{key}
DELETE access-keys:delete (GyroDepolama)Scope: services_write
Typed shortcut of the generic bridge: tool access-keys, action delete. Body fields are the tool's own fields. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
key required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/keys/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/keys/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/keys/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/storage/{id}/usage
GET usage (GyroDepolama)Scope: services_read
Typed shortcut of the generic bridge: tool usage. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/usage' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/usage", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/usage", {
method: "GET",
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/storage/{id}/buckets/{bucket}/rename
Rename a bucketScope: services_write
Bucket names are private to the service (other customers may use the same name). Data is not moved. S3 access by the old name stops at once; the website moves to <new>-<service code>.web.gyro-s3.com and the old website address redirects (301) for 40 days; share links keep working. Max 5 renames per bucket per day; the old name cannot be reused inside the service for 40 days. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
bucket required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
new_name required | string | |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/rename' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"new_name": "string", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/rename", headers=h, json={"new_name": "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/storage/47466/buckets/1/rename", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"new_name": "string", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/storage/{id}/buckets/{bucket}/objects
List objects in a bucket folderScope: services_read
One page (200) of a folder: folders (common prefixes) and files (key, size, modified). Pass next from the previous page to continue.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
bucket required | path | string | |
prefix | query | string | Folder, ends with / (empty = root) |
search | query | string | Name prefix inside the folder |
next | query | string | Continuation token |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/objects' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/objects", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/objects", {
method: "GET",
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/storage/{id}/buckets/{bucket}/objects/upload-url
Presigned upload URLsScope: services_write
Up to 100 files per call, max 5 GiB each. PUT the file body to each url within 15 minutes; data never passes through the API. Larger files: any S3 client (multipart).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
bucket required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
prefix | string | Target folder (ends with /) |
items required | array<object> | |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/objects/upload-url' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"prefix": "string", "items": [{"name": "string", "size": 1}], "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/objects/upload-url", headers=h, json={"prefix": "string", "items": [{"name": "string", "size": 1}], "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/objects/upload-url", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"prefix": "string", "items": [{"name": "string", "size": 1}], "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/storage/{id}/buckets/{bucket}/objects/download-url
Presigned download URLScope: services_write
Returns a 15-minute GET URL (Content-Disposition: attachment). Downloads count toward the service's monthly traffic.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
bucket required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
key required | string | Object key |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/objects/download-url' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"key": "string", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/objects/download-url", headers=h, json={"key": "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/storage/47466/buckets/1/objects/download-url", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"key": "string", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/storage/{id}/buckets/{bucket}/objects/delete
Delete objectsScope: services_write
Deletes up to 1000 keys in one call. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
bucket required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
keys required | array<string> | |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/objects/delete' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keys": ["string"], "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/objects/delete", headers=h, json={"keys": ["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/storage/47466/buckets/1/objects/delete", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"keys": ["string"], "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/storage/{id}/buckets/{bucket}/folders
Create a folderScope: services_write
Creates an empty folder marker prefix + name + /.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
bucket required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
prefix | string | |
name required | string | |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/folders' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"prefix": "string", "name": "string", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/folders", headers=h, json={"prefix": "string", "name": "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/storage/47466/buckets/1/folders", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"prefix": "string", "name": "string", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/storage/{id}/buckets/{bucket}/folders
Delete a folder with its contentsScope: services_write
Deletes every object under prefix (query). Large folders are deleted in batches: repeat while more is true. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
bucket required | path | string | |
prefix | query | string | Folder, ends with / |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/folders' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/folders", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/folders", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/storage/{id}/buckets/{bucket}/folders/count
Count objects in a folderScope: services_read
Number of objects under prefix (more = over 100000 or time limit).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
bucket required | path | string | |
prefix | query | string | Folder, ends with / |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/folders/count' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/folders/count", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/buckets/1/folders/count", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/storage/{id}/connect
GET connect (GyroDepolama)Scope: services_read
Typed shortcut of the generic bridge: tool connect. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/connect' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/connect", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/storage/47466/connect", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Monitoring (uptime)
Typed uptime-monitor shortcuts: monitors, channels, heartbeats, status pages.
GET/cloud/monitors/{id}/monitors
GET monitors (GyroMonitor)Scope: services_read
Typed shortcut of the generic bridge: tool monitors. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors", {
method: "GET",
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/monitors/{id}/monitors
POST monitors:create (GyroMonitor)Scope: services_write
Typed shortcut of the generic bridge: tool monitors, action create. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/cloud/monitors/{id}/monitors/{mid}
PATCH monitors:edit (GyroMonitor)Scope: services_write
Typed shortcut of the generic bridge: tool monitors, action edit. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
mid required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors/1", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/monitors/{id}/monitors/{mid}
DELETE monitors:delete (GyroMonitor)Scope: services_write
Typed shortcut of the generic bridge: tool monitors, action delete. Body fields are the tool's own fields. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
mid required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/monitors/{id}/monitors/{mid}/pause
POST monitors:pause (GyroMonitor)Scope: services_write
Typed shortcut of the generic bridge: tool monitors, action pause. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
mid required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors/1/pause' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors/1/pause", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors/1/pause", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/monitors/{id}/monitors/{mid}/resume
POST monitors:resume (GyroMonitor)Scope: services_write
Typed shortcut of the generic bridge: tool monitors, action resume. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
mid required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors/1/resume' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors/1/resume", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/monitors/1/resume", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/monitors/{id}/channels
GET channels (GyroMonitor)Scope: services_read
Typed shortcut of the generic bridge: tool channels. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/channels' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/channels", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/channels", {
method: "GET",
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/monitors/{id}/channels
POST channels:create (GyroMonitor)Scope: services_write
Typed shortcut of the generic bridge: tool channels, action create. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/channels' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/channels", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/channels", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/monitors/{id}/channels/{cid}
DELETE channels:delete (GyroMonitor)Scope: services_write
Typed shortcut of the generic bridge: tool channels, action delete. Body fields are the tool's own fields. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
cid required | path | string | Certificate id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/channels/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/channels/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/channels/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/monitors/{id}/heartbeats
GET heartbeats (GyroMonitor)Scope: services_read
Typed shortcut of the generic bridge: tool heartbeats. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/heartbeats' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/heartbeats", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/heartbeats", {
method: "GET",
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/monitors/{id}/heartbeats
POST heartbeats:create (GyroMonitor)Scope: services_write
Typed shortcut of the generic bridge: tool heartbeats, action create. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/heartbeats' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/heartbeats", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/heartbeats", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/monitors/{id}/status-pages
GET status-pages (GyroMonitor)Scope: services_read
Typed shortcut of the generic bridge: tool status-pages. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/status-pages' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/status-pages", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/monitors/47466/status-pages", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Licenses
Software license status and IP change.
GET/cloud/licenses/{id}
GET method license_status (LisansAPP)Scope: services_read
Typed shortcut of the generic bridge: tool license_status. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/licenses/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/licenses/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/licenses/47466", {
method: "GET",
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/licenses/{id}/change-ip
POST method change_ip (LisansAPP)Scope: services_write
Typed shortcut of the generic bridge: tool change_ip. Body fields are the tool's own fields.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/licenses/47466/change-ip' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/licenses/47466/change-ip", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/licenses/47466/change-ip", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);One-click apps
Install a one-click app on a cloud server (the disk is rebuilt).
GET/cloud/apps
List installable appsScope: services_read
Responses
| 200 | Apps — data: array<object> |
| 401 | Missing, invalid or revoked key |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/apps' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/apps", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/apps", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/servers/{id}/app
App install status (credentials shown once when ready)Scope: cloud_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Responses
| 200 | Status — data: object |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/app' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/app", 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/47466/app", {
method: "GET",
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/servers/{id}/app
Install an app (rebuilds the disk; confirm required; 3 per server per day)Scope: cloud_write
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Server id (= service id in the client area) |
Request body
| Field | Type | Description |
|---|---|---|
app required | string | |
os | string | |
domain | string | |
email | string | |
confirm required | boolean = true |
Responses
| 202 | Started |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
| 429 | install_limit |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/app' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"app": "wordpress", "domain": "blog.example.com", "email": "[email protected]", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/app", headers=h, json={"app": "wordpress", "domain": "blog.example.com", "email": "[email protected]", "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/servers/47466/app", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"app": "wordpress", "domain": "blog.example.com", "email": "[email protected]", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Plan changes and add-ons
Resize (plan upgrade) and add-on purchase, paid from the account balance (dry_run, confirm, Idempotency-Key, daily limit: default 50 paid operations per account, per-account/reseller override, 429 daily_limit).
GET/cloud/services/{id}/resize-options
Products this service can be upgraded to, with pricesScope: services_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Options — data: object |
| 401 | Missing, invalid or revoked key |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/services/47466/resize-options' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/resize-options", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/resize-options", {
method: "GET",
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/services/{id}/resize
Upgrade the plan (paid from balance)Scope: cloud_order
dry_run returns the price; a real change needs "confirm": true + Idempotency-Key. Creates the upgrade invoice and pays it from the balance; if the balance does not cover it the answer is awaiting_payment with a pay_url. Plan changes that would re-create the server are refused (recreate_required).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
Idempotency-Key required | header | string | Unique per logical request (e.g. a UUID). Replays within 24 hours return the stored answer. |
Request body
| Field | Type | Description |
|---|---|---|
product_id required | integer | |
price_id | integer | |
dry_run | boolean | |
confirm | boolean |
Responses
| 202 | Accepted / awaiting_payment (200 for dry_run) — data: object |
| 401 | Missing, invalid or revoked key |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/services/47466/resize' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"product_id": 1, "price_id": 1, "dry_run": true, "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/resize", headers=h, json={"product_id": 1, "price_id": 1, "dry_run": True, "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/resize", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({"product_id": 1, "price_id": 1, "dry_run": true, "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/services/{id}/addons/available
Add-ons offered for this service (with options and prices)Scope: services_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Add-ons — data: object |
| 401 | Missing, invalid or revoked key |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/services/47466/addons/available' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/addons/available", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/addons/available", {
method: "GET",
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/services/{id}/addons
Buy an add-on (paid from balance)Scope: cloud_order
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
Idempotency-Key required | header | string | Unique per logical request (e.g. a UUID). Replays within 24 hours return the stored answer. |
Request body
| Field | Type | Description |
|---|---|---|
addon_id required | integer | |
option_id required | integer | |
quantity | integer | |
dry_run | boolean | |
confirm | boolean |
Responses
| 202 | Accepted / awaiting_payment (200 for dry_run) — data: object |
| 401 | Missing, invalid or revoked key |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/services/47466/addons' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"addon_id": 1, "option_id": 1, "quantity": 1, "dry_run": true, "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/addons", headers=h, json={"addon_id": 1, "option_id": 1, "quantity": 1, "dry_run": True, "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/services/47466/addons", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({"addon_id": 1, "option_id": 1, "quantity": 1, "dry_run": true, "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Panel users
Sub-users: extra panel logins with limited permissions (accountant, technical staff). Scope users.
GET/cloud/users
List sub-usersScope: users
Responses
| 200 | Users — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/users' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/users", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/users", {
method: "GET",
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/users
Invite a sub-userScope: users
Request body
| Field | Type | Description |
|---|---|---|
email required | string | |
label | string | |
permissions | array<string> | e.g. view_services, view_invoices, pay_invoices, view_tickets, open_tickets ... |
send_invite | boolean |
Responses
| 201 | Created — data: object |
| 401 | Missing, invalid or revoked key |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/users' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"email": "string", "label": "string", "permissions": ["string"], "send_invite": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/users", headers=h, json={"email": "string", "label": "string", "permissions": ["string"], "send_invite": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/users", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"email": "string", "label": "string", "permissions": ["string"], "send_invite": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/cloud/users/{id}
Update a sub-user (label, status, permissions)Scope: users
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
label | string | |
status | string (active, inactive) | |
permissions | array<string> |
Responses
| 200 | Updated — data: object |
| 401 | Missing, invalid or revoked key |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/cloud/users/47466' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"label": "string", "status": "active", "permissions": ["string"]}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/cloud/users/47466", headers=h, json={"label": "string", "status": "active", "permissions": ["string"]}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/users/47466", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"label": "string", "status": "active", "permissions": ["string"]}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/users/{id}
Remove a sub-userScope: users
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Deleted — data: object |
| 401 | Missing, invalid or revoked key |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/users/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/users/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/users/47466", {
method: "DELETE",
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/users/{id}/resend-invite
Resend the invitation e-mailScope: users
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Sent — data: object |
| 401 | Missing, invalid or revoked key |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/users/47466/resend-invite' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/users/47466/resend-invite", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/users/47466/resend-invite", {
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}`);Load balancers
Managed L4/L7 load balancer for your cloud servers: services, health checks, targets, free Let's Encrypt certificates, metrics. EU regions.
GET/cloud/load-balancer-types
List load balancer sizes and pricesScope: cloud_read
Orderable sizes (small/medium/large) with limits, regions and EUR prices per cycle (excl. VAT); list_amount is the strike-through list price.
Responses
| 200 | Sizes — data: array<object> |
| 401 | Missing, invalid or revoked key |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancer-types' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/load-balancer-types", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancer-types", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/load-balancers
List load balancersScope: cloud_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
page | query | integer | |
limit | query | integer | |
status | query | string |
Responses
| 200 | Load balancers — data: array<LoadBalancer> |
| 401 | Missing, invalid or revoked key |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers", {
method: "GET",
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/load-balancers
Order a load balancerScope: cloud_order
Orders and pays from the account balance (same money rules as servers): "confirm": true, an Idempotency-Key header, dry_run for a quote. Ready in about a minute; then add services and targets.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
Idempotency-Key | header | string |
Request body
| Field | Type | Description |
|---|---|---|
size | string (small, medium, large) | |
product_id | integer | |
region | string (eu-de-1, eu-de-2, eu-fi-1) | |
cycle | string | |
end_customer_id | integer | |
dry_run | boolean | |
confirm | boolean |
Responses
| 201 | Ordered — data: object |
| 200 | Quote (dry_run) — data: object |
| 400 | Malformed request (e.g. missing Idempotency-Key) |
| 401 | Missing, invalid or revoked key |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"size": "small", "product_id": 1, "region": "eu-de-1", "cycle": "string", "end_customer_id": 1, "dry_run": true, "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers", headers=h, json={"size": "small", "product_id": 1, "region": "eu-de-1", "cycle": "string", "end_customer_id": 1, "dry_run": True, "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({"size": "small", "product_id": 1, "region": "eu-de-1", "cycle": "string", "end_customer_id": 1, "dry_run": true, "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/load-balancers/{id}
Get a load balancerScope: cloud_read
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Load balancer — data: LoadBalancer |
| 401 | Missing, invalid or revoked key |
| 404 | Not found — also returned for objects owned by someone else |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/load-balancers/{id}
Delete (cancel) a load balancerScope: cloud_delete
confirm=true required. immediate=true cancels now: traffic and billing stop, the load balancer and its certificates are destroyed after the grace period (3 days). Without immediate a cancellation request is filed.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
confirm | query | boolean | |
immediate | query | boolean |
Responses
| 202 | Cancelling — data: object |
| 401 | Missing, invalid or revoked key |
| 404 | Not found — also returned for objects owned by someone else |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/load-balancers/{id}/services
List services (ports) of a load balancerScope: services_read
Services with health check and HTTP options, plus the certificates of this load balancer and its limits.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/services' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/services", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/services", {
method: "GET",
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/load-balancers/{id}/services
Add a serviceScope: services_write
Adds a listener. HTTPS needs at least one certificate of this load balancer; TLS ends at the load balancer and targets get HTTP. Use TCP 443 for passthrough.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
protocol required | string (tcp, http, https) | |
listen_port required | integer | Port the load balancer listens on |
destination_port required | integer | Port on the targets |
proxyprotocol | boolean | Send PROXY protocol header to targets |
hc_protocol | string (tcp, http) | Health check type |
hc_port | integer | |
hc_interval | integer | 3-60 s |
hc_timeout | integer | 1-30 s, below interval |
hc_retries | integer | 0-5 |
hc_path | string | HTTP check path (starts with /) |
hc_domain | string | HTTP check Host header |
hc_status_codes | string | Comma separated, e.g. 2??,3?? |
hc_tls | boolean | HTTP check over TLS |
sticky | boolean | Sticky sessions (cookie) |
cookie_name | string | |
cookie_lifetime | integer | |
idle_timeout | integer | Idle timeout (s) |
certificates | string | HTTPS: comma separated certificate ids of this load balancer |
redirect_http | boolean | HTTPS: redirect port 80 to HTTPS (port 80 must be free) |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/services' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"protocol": "tcp", "listen_port": 1, "destination_port": 1, "proxyprotocol": true, "hc_protocol": "tcp", "hc_port": 1, "hc_interval": 1, "hc_timeout": 1, "hc_retries": 1, "hc_path": "string", "hc_domain": "string", "hc_status_codes": "string", "hc_tls": true, "sticky": true, "cookie_name": "string", "cookie_lifetime": 1, "idle_timeout": 1, "certificates": "string", "redirect_http": true, "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/services", headers=h, json={"protocol": "tcp", "listen_port": 1, "destination_port": 1, "proxyprotocol": True, "hc_protocol": "tcp", "hc_port": 1, "hc_interval": 1, "hc_timeout": 1, "hc_retries": 1, "hc_path": "string", "hc_domain": "string", "hc_status_codes": "string", "hc_tls": True, "sticky": True, "cookie_name": "string", "cookie_lifetime": 1, "idle_timeout": 1, "certificates": "string", "redirect_http": True, "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/services", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"protocol": "tcp", "listen_port": 1, "destination_port": 1, "proxyprotocol": true, "hc_protocol": "tcp", "hc_port": 1, "hc_interval": 1, "hc_timeout": 1, "hc_retries": 1, "hc_path": "string", "hc_domain": "string", "hc_status_codes": "string", "hc_tls": true, "sticky": true, "cookie_name": "string", "cookie_lifetime": 1, "idle_timeout": 1, "certificates": "string", "redirect_http": true, "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/cloud/load-balancers/{id}/services/{port}
Update a serviceScope: services_write
Changes options of the service on {port}. The protocol cannot change (delete and add).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
port required | path | string | Listen port |
Request body
| Field | Type | Description |
|---|---|---|
destination_port | integer | Port on the targets |
proxyprotocol | boolean | Send PROXY protocol header to targets |
hc_protocol | string (tcp, http) | Health check type |
hc_port | integer | |
hc_interval | integer | 3-60 s |
hc_timeout | integer | 1-30 s, below interval |
hc_retries | integer | 0-5 |
hc_path | string | HTTP check path (starts with /) |
hc_domain | string | HTTP check Host header |
hc_status_codes | string | Comma separated, e.g. 2??,3?? |
hc_tls | boolean | HTTP check over TLS |
sticky | boolean | Sticky sessions (cookie) |
cookie_name | string | |
cookie_lifetime | integer | |
idle_timeout | integer | Idle timeout (s) |
certificates | string | HTTPS: comma separated certificate ids of this load balancer |
redirect_http | boolean | HTTPS: redirect port 80 to HTTPS (port 80 must be free) |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/services/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"destination_port": 1, "proxyprotocol": true, "hc_protocol": "tcp", "hc_port": 1, "hc_interval": 1, "hc_timeout": 1, "hc_retries": 1, "hc_path": "string", "hc_domain": "string", "hc_status_codes": "string", "hc_tls": true, "sticky": true, "cookie_name": "string", "cookie_lifetime": 1, "idle_timeout": 1, "certificates": "string", "redirect_http": true, "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/services/1", headers=h, json={"destination_port": 1, "proxyprotocol": True, "hc_protocol": "tcp", "hc_port": 1, "hc_interval": 1, "hc_timeout": 1, "hc_retries": 1, "hc_path": "string", "hc_domain": "string", "hc_status_codes": "string", "hc_tls": True, "sticky": True, "cookie_name": "string", "cookie_lifetime": 1, "idle_timeout": 1, "certificates": "string", "redirect_http": True, "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/services/1", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"destination_port": 1, "proxyprotocol": true, "hc_protocol": "tcp", "hc_port": 1, "hc_interval": 1, "hc_timeout": 1, "hc_retries": 1, "hc_path": "string", "hc_domain": "string", "hc_status_codes": "string", "hc_tls": true, "sticky": true, "cookie_name": "string", "cookie_lifetime": 1, "idle_timeout": 1, "certificates": "string", "redirect_http": true, "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/load-balancers/{id}/services/{port}
Delete a serviceScope: services_write
Stops listening on {port}. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
port required | path | string | Listen port |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/services/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/services/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/services/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/load-balancers/{id}/targets
List targets with healthScope: services_read
Targets, per-service health (healthy/unhealthy/unknown), and the cloud servers / dedicated IPs that can be added.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/targets' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/targets", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/targets", {
method: "GET",
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/load-balancers/{id}/targets
Add a targetScope: services_write
type=server (server = your cloud server id, same region), type=all (all your cloud servers, new ones join automatically) or type=ip (your dedicated server IP). use_private_ip needs a private network attached.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
type required | string (server, all, ip) | |
server | integer | Cloud server id (type=server) |
ip | string | Dedicated server IP (type=ip) |
use_private_ip | boolean | |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/targets' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"type": "server", "server": 1, "ip": "string", "use_private_ip": true, "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/targets", headers=h, json={"type": "server", "server": 1, "ip": "string", "use_private_ip": True, "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/targets", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"type": "server", "server": 1, "ip": "string", "use_private_ip": true, "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/load-balancers/{id}/targets
Remove a targetScope: services_write
Same fields as add, in the query string (?type=server&server=123&confirm=true) or the JSON body. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
type | query | string | server | all | ip |
server | query | string | Cloud server id |
ip | query | string | Dedicated server IP |
Request body
| Field | Type | Description |
|---|---|---|
type | string | |
server | integer | |
ip | string | |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/targets' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"type": "string", "server": 1, "ip": "string", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/targets", headers=h, json={"type": "string", "server": 1, "ip": "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/load-balancers/47466/targets", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"type": "string", "server": 1, "ip": "string", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/load-balancers/{id}/certificates
List certificatesScope: services_read
Uploaded and Let's Encrypt certificates (Let's Encrypt ones renew automatically), a pending Let's Encrypt request and the validation redirect base URL.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates", {
method: "GET",
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/load-balancers/{id}/certificates
Upload a certificateScope: services_write
PEM certificate chain + unencrypted private key. The key is sent to the load balancer only; it is never stored or logged by the panel.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
name | string | |
certificate required | string | PEM chain |
private_key required | string | PEM key (unencrypted) |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "string", "certificate": "string", "private_key": "string", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates", headers=h, json={"name": "string", "certificate": "string", "private_key": "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/load-balancers/47466/certificates", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "string", "certificate": "string", "private_key": "string", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/load-balancers/{id}/certificates/letsencrypt
Request a free Let's Encrypt certificateScope: services_write
Up to 10 names whose A record points to this load balancer. Your targets must redirect /.well-known/acme-challenge/<token> to the redirect base shown in GET certificates; answer acme=waiting lists the per-name check, fix the redirect and call verify.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
domains required | string | Comma separated names |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates/letsencrypt' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domains": "string", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates/letsencrypt", headers=h, json={"domains": "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/load-balancers/47466/certificates/letsencrypt", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"domains": "string", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/load-balancers/{id}/certificates/letsencrypt
Cancel a pending Let's Encrypt requestScope: services_write
Drops the pending order. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates/letsencrypt' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates/letsencrypt", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates/letsencrypt", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/load-balancers/{id}/certificates/letsencrypt/verify
Continue a pending Let's Encrypt requestScope: services_write
Re-checks the redirect, lets the CA validate and uploads the certificate (acme=issued).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates/letsencrypt/verify' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates/letsencrypt/verify", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates/letsencrypt/verify", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/load-balancers/{id}/certificates/{cid}
Delete a certificateScope: services_write
Only certificates not used by a service. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
cid required | path | string | Certificate id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/certificates/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/load-balancers/{id}/settings
Algorithm, reverse DNS, private networkScope: services_read
Current algorithm, PTR records, your private networks in the same region (attached or not) and limits.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/settings' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/settings", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/settings", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/cloud/load-balancers/{id}/algorithm
Change the balancing algorithmScope: services_write
round_robin or least_connections.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
algorithm required | string (round_robin, least_connections) | |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/algorithm' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"algorithm": "round_robin", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/algorithm", headers=h, json={"algorithm": "round_robin", "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/algorithm", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"algorithm": "round_robin", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/cloud/load-balancers/{id}/rdns
Set reverse DNSScope: services_write
PTR for one of the load balancer's IPs; empty ptr restores the default.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
ip required | string | |
ptr | string | |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/rdns' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"ip": "string", "ptr": "string", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/rdns", headers=h, json={"ip": "string", "ptr": "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/load-balancers/47466/rdns", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"ip": "string", "ptr": "string", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/load-balancers/{id}/network
Attach to a private networkScope: services_write
One of your private networks in the same region (GET settings).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
network required | integer | |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/network' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"network": 1, "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/network", headers=h, json={"network": 1, "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/network", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"network": 1, "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/load-balancers/{id}/network/{nid}
Detach from a private networkScope: services_write
Targets that use private IPs must be removed first. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
nid required | path | string | Private network id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/network/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/network/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/network/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/load-balancers/{id}/metrics
Load balancer metricsScope: services_read
Open connections, new connections/s, requests/s, bandwidth in/out (Mbit/s).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
period | query | string | 24h | 7d | 30d |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/metrics' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/metrics", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/load-balancers/47466/metrics", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Managed DNS
Authoritative DNS on ns1.gyrodns.net (Istanbul) + ns2.gyrodns.net (Germany): zones, records (A/AAAA/CNAME/MX/TXT/SRV/CAA/ALIAS/NS/PTR), BIND import/export, one-click DNSSEC, health-checked failover records.
GET/cloud/dns/{id}/zones
List DNS zonesScope: services_read
Zones of this DNS service (items, state active|pending with the TXT verification token), read-only zones copied from your cPanel hosting (cpanel), plan limits and our name servers.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones", {
method: "GET",
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/dns/{id}/zones
Add a zoneScope: services_write
Claims a domain. It is published on ns1/ns2.gyrodns.net after ownership is verified: delegation to our name servers (immediate when already delegated) or the TXT record _gyrodns-dogrulama.<zone> = txt_value at your current DNS. Optional bind (zone file) is imported on activation (SOA and apex NS are ignored).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
name required | string | Zone name (IDN allowed) |
bind | string | Optional BIND zone file (max 2 MB) |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "string", "bind": "string", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones", headers=h, json={"name": "string", "bind": "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/dns/47466/zones", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "string", "bind": "string", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/dns/{id}/zones/{zone}
Get a zone with its recordsScope: services_read
Zone state, serial, DNSSEC flag (+DS) and all record sets. Pending zones return the verification details.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
zone required | path | string | Zone name |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/dns/{id}/zones/{zone}
Delete a zoneScope: services_write
Removes the zone and its health checks from our name servers at once. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
zone required | path | string | Zone name |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/dns/{id}/zones/{zone}/verify
Verify ownership nowScope: services_write
Checks delegation / TXT now (the system also re-checks automatically for 14 days).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
zone required | path | string | Zone name |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/verify' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/verify", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/verify", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/cloud/dns/{id}/zones/{zone}/import
Import a BIND zone fileScope: services_write
merge replaces record sets present in the file and keeps the others; replace also deletes record sets not in the file. SOA and apex NS are ignored; unsupported types are listed in skipped. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
zone required | path | string | Zone name |
Request body
| Field | Type | Description |
|---|---|---|
bind required | string | |
mode | string (merge, replace) | |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/import' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"bind": "string", "mode": "merge", "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/import", headers=h, json={"bind": "string", "mode": "merge", "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/import", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"bind": "string", "mode": "merge", "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/dns/{id}/zones/{zone}/export
Export the zone fileScope: services_read
Returns the zone in BIND format (bind).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
zone required | path | string | Zone name |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/export' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/export", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/export", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/dns/{id}/zones/{zone}/records
List record setsScope: services_read
All record sets (rrsets: name, type, ttl, records, read_only, health_check). source=cpanel reads a zone of your cPanel hosting (read only).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
zone required | path | string | Zone name |
source | query | string | gyrodns (default) | cpanel |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/records' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/records", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/records", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/cloud/dns/{id}/zones/{zone}/records
Create or replace a record setScope: services_write
Upserts one record set (name + type). CNAME and ALIAS take one value; no CNAME at the apex (use ALIAS); apex NS and SOA are managed by us.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
zone required | path | string | Zone name |
Request body
| Field | Type | Description |
|---|---|---|
name required | string | Record name relative to the zone (@ = apex, * = wildcard) or FQDN with trailing dot |
type required | string (A, AAAA, CNAME, MX, TXT, SRV, CAA, ALIAS, NS, PTR) | |
ttl | integer | 60-86400 s |
records required | array<string> | Values in zone file syntax, one per item (TXT quotes optional) |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/records' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "string", "type": "A", "ttl": 1, "records": ["string"], "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/records", headers=h, json={"name": "string", "type": "A", "ttl": 1, "records": ["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/dns/47466/zones/1/records", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "string", "type": "A", "ttl": 1, "records": ["string"], "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/dns/{id}/zones/{zone}/records
Delete a record setScope: services_write
Deletes the record set given by name and type (query). Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
zone required | path | string | Zone name |
name | query | string | Record name |
type | query | string | Record type |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/records' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/records", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/records", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/dns/{id}/zones/{zone}/dnssec
DNSSEC status and DS recordsScope: services_read
dnssec flag and ds (enter at your registrar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
zone required | path | string | Zone name |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/dnssec' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/dnssec", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/dnssec", {
method: "GET",
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/dns/{id}/zones/{zone}/dnssec
Enable DNSSECScope: services_write
Signs the zone (ECDSA P-256) and returns the DS records. No effect until the DS is at the registrar. Not with ALIAS records.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
zone required | path | string | Zone name |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/dnssec' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/dnssec", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/dnssec", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/dns/{id}/zones/{zone}/dnssec
Disable DNSSECScope: services_write
Remove the DS at your registrar and wait for its TTL first, otherwise validating resolvers fail. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
zone required | path | string | Zone name |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/dnssec' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/dnssec", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/zones/1/dnssec", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/cloud/dns/{id}/health-checks
List health-checked recordsScope: services_read
Checks with primary/backup IP, which one is active and the last state (gmon majority of 3 locations).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Responses
| 200 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/health-checks' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/health-checks", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/health-checks", {
method: "GET",
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/dns/{id}/health-checks
Create a health-checked recordScope: services_write
Points name (A/AAAA) to primary; when the check fails from the majority of locations the record switches to backup, and back after 3 good passes. Uses one health-check add-on unit.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
Request body
| Field | Type | Description |
|---|---|---|
zone required | string | |
name required | string | |
type required | string (A, AAAA) | |
primary required | string | |
backup required | string | |
check required | string (http, https, tcp, ping) | |
port | integer | |
path | string | |
ttl | integer | 30-300 s |
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/health-checks' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"zone": "string", "name": "string", "type": "A", "primary": "string", "backup": "string", "check": "http", "port": 1, "path": "string", "ttl": 1, "confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/health-checks", headers=h, json={"zone": "string", "name": "string", "type": "A", "primary": "string", "backup": "string", "check": "http", "port": 1, "path": "string", "ttl": 1, "confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/health-checks", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"zone": "string", "name": "string", "type": "A", "primary": "string", "backup": "string", "check": "http", "port": 1, "path": "string", "ttl": 1, "confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/cloud/dns/{id}/health-checks/{hid}
Delete a health checkScope: services_write
Stops checking; the record keeps its current value. Needs "confirm": true.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | Service id |
hid required | path | string | Health check id |
Request body
| Field | Type | Description |
|---|---|---|
confirm | boolean |
Responses
| 202 | Tool data / result — data: object |
| 404 | Not found — also returned for objects owned by someone else |
| 409 | State conflict (server_locked, not_actionable, ssh_key_exists, server_limit, idempotency_in_flight) |
| 422 | Validation or business rule failure (confirm_required, invalid_image, tool_action_failed ...) |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/health-checks/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"confirm": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/health-checks/1", headers=h, json={"confirm": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/cloud/dns/47466/health-checks/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"confirm": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Reference data
Countries, states, cities.
GET/reference/countries
List countriesScope: Reference/GetCountries
List countries.
Core WISECP client endpoint.
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/reference/countries' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/reference/countries", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/reference/countries", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/reference/countries/{code}/states
List states (path: {code})Scope: Reference/GetStates
List states (path: {code}).
Core WISECP client endpoint.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
code required | path | string |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/reference/countries/1/states' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/reference/countries/1/states", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/reference/countries/1/states", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/reference/states/{id}/cities
List cities (path: {id})Scope: Reference/GetCities
List cities (path: {id}).
Core WISECP client endpoint.
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/reference/states/47466/cities' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/reference/states/47466/cities", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/reference/states/47466/cities", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Services (core)
Core service endpoints: renew, cancel, auto-renew, add-ons, metrics, SSO, password.
GET/services
List servicesScope: Services/GetServices
List services. Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-hizmetler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
page | query | integer | Kaçıncı sayfa. |
limit | query | integer | Sayfa başına satır. En çok 100. |
status | query | string | Durum süzgeci. Rozet gruplarını alır: bekleyen hem kurulumdakini hem işlemdekini kapsar, iptal ise tamamlananı da içerir. |
type | query | string | Ürün türü süzgeci. |
search | query | string | Hizmet adında ve bağlı alan adında arar. |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/services' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/services/{id}
Get service (path: {id})Scope: Services/GetService
Get service (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-hizmetler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/services/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/services/{id}
Update service (path: {id})Scope: Services/UpdateService
Update service (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-hizmetler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
auto_renew | boolean | Hizmet bazlı otomatik yenileme. Hesap geneli otomatik ödeme açıkken değiştirilemez. |
billing_profile_id | integer | Fatura profilinin numarası. Sıfır hesabın varsayılanına döner. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | autorenew_locked, no_auto_pay_source, not_actionable, nothing_to_update |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/services/47466' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"auto_renew": true, "billing_profile_id": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/services/47466", headers=h, json={"auto_renew": True, "billing_profile_id": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"auto_renew": true, "billing_profile_id": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/services/{id}/renew
Renew service (path: {id})Scope: Services/RenewService
Renew service (path: {id}). Service of the calling account (any product line).
Spends money / creates an invoice. Money rules apply (AK-40): "confirm": true in the body, an Idempotency-Key header, account balance only (no stored card), daily limit of paid API operations per account (default 50, operator can override per account/reseller, resets 00:00 Europe/Istanbul); violations answer 422 with [confirm_required], [idempotency_key_required], [balance_only] or [daily_limit] in the message.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-hizmetler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
Idempotency-Key required | header | string |
Request body
| Field | Type | Description |
|---|---|---|
cycle | string | Yenileme döngüsü. Hizmet detayındaki döngü listesinden seçilir; verilmezse mevcut döngü kullanılır. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | already_invoiced, cycle_invalid, not_renewable, renew_blocked_subscription, renew_disabled |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/services/47466/renew' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"cycle": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/services/47466/renew", headers=h, json={"cycle": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/renew", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({"cycle": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/services/{id}/invoices
List service invoices (path: {id})Scope: Services/GetServiceInvoices
List service invoices (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-hizmetler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
limit | query | integer | En çok satır. En çok 100. |
page | query | integer |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/services/47466/invoices' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/47466/invoices", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/invoices", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/services/{id}/addons
List service addons (path: {id})Scope: Services/GetServiceAddons
List service addons (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-hizmetler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/services/47466/addons' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/47466/addons", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/addons", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/services/{id}/cancellation
Create cancellation (path: {id})Scope: Services/CreateCancellation
Create cancellation (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-hizmetler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
urgency required | string | Ne zaman iptal edilsin: hemen ya da dönem sonunda. |
reason required | string | Gerekçe. Beş değerden biri: gerek kalmadı, pahalı, başka yere geçiliyor, özellik eksik ya da diğer. |
reason_detail | string | Serbest açıklama. Gerekçe diğer ise zorunludur. |
note | string | Operatöre not. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | cancellation_exists, not_actionable, one_time_service, reason_detail_required |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/services/47466/cancellation' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urgency": "string", "reason": "string", "reason_detail": "string", "note": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/services/47466/cancellation", headers=h, json={"urgency": "string", "reason": "string", "reason_detail": "string", "note": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/cancellation", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"urgency": "string", "reason": "string", "reason_detail": "string", "note": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/services/{id}/cancellation
Revoke cancellation (path: {id})Scope: Services/RevokeCancellation
Revoke cancellation (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-hizmetler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/services/47466/cancellation' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/services/47466/cancellation", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/cancellation", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/services/{id}/metrics
Get service metrics (path: {id})Scope: Services/GetServiceMetrics
Get service metrics (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-hizmetler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/services/47466/metrics' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/47466/metrics", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/metrics", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/services/{id}/metrics/billing
List service metric billing (path: {id})Scope: Services/GetServiceMetricBilling
List service metric billing (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-hizmetler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
page | query | integer | Kaçıncı sayfa. |
limit | query | integer | Sayfa başına satır. En çok 100. |
metric | query | string | Tek bir ölçüme daraltır. |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/services/47466/metrics/billing' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/47466/metrics/billing", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/metrics/billing", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/services/{id}/metrics/{key}
Update service metric (path: {id}, {key})Scope: Services/UpdateServiceMetric
Update service metric (path: {id}, {key}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-hizmetler).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
key required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
enabled required | boolean | İstenen durum. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | enabled_invalid, metric_module_rejected, metric_not_priced, metric_unpaid_lock, not_actionable |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/services/47466/metrics/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/services/47466/metrics/1", headers=h, json={"enabled": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/metrics/1", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"enabled": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/services/{id}/dashboard
Get service dashboard (path: {id})Scope: Services/GetServiceDashboard
Get service dashboard (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/hizmetin-icine-erisim).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | module_unavailable, not_actionable |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/services/47466/dashboard' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/47466/dashboard", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/dashboard", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/services/{id}/tools
Get service tools (path: {id})Scope: Services/GetServiceTools
Get service tools (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/hizmetin-icine-erisim).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | tools_not_supported |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/services/47466/tools' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/47466/tools", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/tools", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/services/{id}/tools/{tool}
Get service tool data (path: {id}, {tool})Scope: Services/GetServiceToolData
Get service tool data (path: {id}, {tool}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/hizmetin-icine-erisim).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
tool required | path | string | |
action | query | string | Okuma eylemi. Verilmezse aracın varsayılan listesi alınır. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | tool_rejected, tools_not_supported |
| 500 | tool_data_failed |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/services/47466/tools/1' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/services/47466/tools/1", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/tools/1", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/services/{id}/tools/{tool}/{action}
Run service tool action (path: {id}, {tool}, {action})Scope: Services/RunServiceToolAction
Run service tool action (path: {id}, {tool}, {action}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/hizmetin-icine-erisim).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
tool required | path | string | |
action required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
current_path | string | |
file | string | |
name | string | |
new_name | string | |
items | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | tool_action_failed, tool_rejected, tools_not_supported |
| 500 | tool_action_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/services/47466/tools/1/reboot' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"current_path": "string", "file": "string", "name": "string", "new_name": "string", "items": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/services/47466/tools/1/reboot", headers=h, json={"current_path": "string", "file": "string", "name": "string", "new_name": "string", "items": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/tools/1/reboot", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"current_path": "string", "file": "string", "name": "string", "new_name": "string", "items": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/services/{id}/module-method
Use service module method (path: {id})Scope: Services/UseServiceModuleMethod
Use service module method (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/hizmetin-icine-erisim).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
method required | string | Çalıştırılacak metot. Panel özetindeki metot listesinden alınır. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | invalid_method, method_required, module_unavailable, tool_rejected |
| 500 | module_method_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/services/47466/module-method' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"method": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/services/47466/module-method", headers=h, json={"method": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/module-method", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"method": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/services/{id}/sso
Get service sso (path: {id})Scope: Services/GetServiceSso
Get service sso (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/hizmetin-icine-erisim).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | sso_not_supported, tool_rejected |
| 500 | sso_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/services/47466/sso' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/services/47466/sso", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/sso", {
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/services/{id}/password
Change service password (path: {id})Scope: Services/ChangeServicePassword
Change service password (path: {id}). Service of the calling account (any product line).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/hizmetin-icine-erisim).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
password required | string | Yeni panel parolası. Operatörün asgari uzunluğunu karşılamalıdır. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | password_change_failed, password_not_supported, password_too_short |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/services/47466/password' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"password": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/services/47466/password", headers=h, json={"password": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/services/47466/password", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"password": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Domains and DNS
Register, transfer, renew, nameservers, DNS records, DNSSEC, lock, EPP code, privacy, WHOIS contacts, forwarding (core WISECP client API).
GET/domains/tlds
List tldsScope: Domains/GetTlds
List tlds. Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-edinme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
tld | query | string | Tek bir uzantı. Listeyi daraltır ve süre başına fiyat tablosunu ekler. |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | domains_not_offered |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/tlds' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/tlds", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/tlds", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/check
Check domainScope: Domains/CheckDomain
Check domain. Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-edinme).
Request body
| Field | Type | Description |
|---|---|---|
domain required | string | Sorulacak tam alan adı. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | domain_check_throttled, domain_invalid, domain_required, domains_not_offered, tld_not_offered |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/check' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domain": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/check", headers=h, json={"domain": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"domain": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/register
Register domainScope: Domains/RegisterDomain
Register domain. Domain operations run against the registrar module of the domain.
Spends money / creates an invoice. Money rules apply (AK-40): "confirm": true in the body, an Idempotency-Key header, account balance only (no stored card), daily limit of paid API operations per account (default 50, operator can override per account/reseller, resets 00:00 Europe/Istanbul); violations answer 422 with [confirm_required], [idempotency_key_required], [balance_only] or [daily_limit] in the message.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-edinme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
Idempotency-Key required | header | string |
Request body
| Field | Type | Description |
|---|---|---|
terms required | boolean | Şartların kabulü. Doğru gönderilmelidir. |
domain required | string | Tam alan adı. |
years | integer | Kayıt süresi. Uzantının penceresi içinde olmalı; özel fiyatlı adlar ne gönderilirse gönderilsin bir yıl kaydedilir. |
accept_premium | boolean | Özel fiyatlı adın fiyatını kabul. Böyle bir adda zorunludur. |
addons | string | Birlikte alınacak ek hizmetler. Alan adı yönetimi, kayıt gizliliği ve yönlendirme; yalnız uzantı sunuyorsa. |
nameservers | string | Ad sunucuları. İkiden dörde; verilmezse hesabın varsayılanları uygulanır. |
whois_profile_id | integer | Kayıtlı kayıt sahibi profili. Dört rolü birden doldurur. |
contacts | object | Rol bazında kişiler. Her rol ya kayıtlı bir profil numarası ya da satır içi bir kişi taşır ve o rol için profili ezer. |
coupons | string | Kupon kodları. |
billing_profile_id | integer | Fatura profilinin numarası. |
notes | string | Sipariş notu. |
payment | object | Ödeme kaynağı. Hesap bakiyesi ya da kayıtlı kart. |
auth_code | string | |
method | string | |
card_id | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_not_offered, contact_field_invalid, contact_field_required, domains_not_offered, insufficient_balance, nameservers_invalid, terms_required, tld_not_offered, verification_required, years_invalid |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/register' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"terms": true, "domain": "string", "years": 1, "accept_premium": true, "addons": "string", "nameservers": "string", "whois_profile_id": 1, "contacts": {}, "coupons": "string", "billing_profile_id": 1, "notes": "string", "payment": {}, "auth_code": "string", "method": "string", "card_id": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/register", headers=h, json={"terms": True, "domain": "string", "years": 1, "accept_premium": True, "addons": "string", "nameservers": "string", "whois_profile_id": 1, "contacts": {}, "coupons": "string", "billing_profile_id": 1, "notes": "string", "payment": {}, "auth_code": "string", "method": "string", "card_id": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/register", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({"terms": true, "domain": "string", "years": 1, "accept_premium": true, "addons": "string", "nameservers": "string", "whois_profile_id": 1, "contacts": {}, "coupons": "string", "billing_profile_id": 1, "notes": "string", "payment": {}, "auth_code": "string", "method": "string", "card_id": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/transfer
Transfer domainScope: Domains/TransferDomain
Transfer domain. Domain operations run against the registrar module of the domain.
Spends money / creates an invoice. Money rules apply (AK-40): "confirm": true in the body, an Idempotency-Key header, account balance only (no stored card), daily limit of paid API operations per account (default 50, operator can override per account/reseller, resets 00:00 Europe/Istanbul); violations answer 422 with [confirm_required], [idempotency_key_required], [balance_only] or [daily_limit] in the message.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-edinme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
Idempotency-Key required | header | string |
Request body
| Field | Type | Description |
|---|---|---|
terms required | boolean | Şartların kabulü. Doğru gönderilmelidir. |
domain required | string | Tam alan adı. |
auth_code | string | Mevcut sağlayıcıdan alınan transfer kodu. Uzantı işaretliyse zorunludur ve her durumda hizmete yazılır. |
addons | string | Birlikte alınacak ek hizmetler. Alan adı yönetimi, kayıt gizliliği ve yönlendirme; yalnız uzantı sunuyorsa. |
nameservers | string | Ad sunucuları. İkiden dörde; verilmezse hesabın varsayılanları uygulanır. |
whois_profile_id | integer | Kayıtlı kayıt sahibi profili. Dört rolü birden doldurur. |
contacts | object | Rol bazında kişiler. Her rol ya kayıtlı bir profil numarası ya da satır içi bir kişi taşır ve o rol için profili ezer. |
coupons | string | Kupon kodları. |
billing_profile_id | integer | Fatura profilinin numarası. |
notes | string | Sipariş notu. |
payment | object | Ödeme kaynağı. Hesap bakiyesi ya da kayıtlı kart. |
years | string | |
accept_premium | string | |
method | string | |
card_id | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | auth_code_required, checkout_blocked, domain_not_registered, domain_transfer_locked, domains_not_offered, terms_required, transfer_not_offered |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/transfer' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"terms": true, "domain": "string", "auth_code": "string", "addons": "string", "nameservers": "string", "whois_profile_id": 1, "contacts": {}, "coupons": "string", "billing_profile_id": 1, "notes": "string", "payment": {}, "years": "string", "accept_premium": "string", "method": "string", "card_id": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/transfer", headers=h, json={"terms": True, "domain": "string", "auth_code": "string", "addons": "string", "nameservers": "string", "whois_profile_id": 1, "contacts": {}, "coupons": "string", "billing_profile_id": 1, "notes": "string", "payment": {}, "years": "string", "accept_premium": "string", "method": "string", "card_id": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/transfer", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({"terms": true, "domain": "string", "auth_code": "string", "addons": "string", "nameservers": "string", "whois_profile_id": 1, "contacts": {}, "coupons": "string", "billing_profile_id": 1, "notes": "string", "payment": {}, "years": "string", "accept_premium": "string", "method": "string", "card_id": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/domains/whois-profiles
List whois profilesScope: Domains/GetWhoisProfiles
List whois profiles. Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-kisileri-ve-gizlilik).
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/whois-profiles' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/whois-profiles", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/whois-profiles", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/whois-profiles
Create whois profileScope: Domains/CreateWhoisProfile
Create whois profile. Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-kisileri-ve-gizlilik).
Request body
| Field | Type | Description |
|---|---|---|
name required | string | Profilin etiketi. |
contact required | object | contactKaydedilecek kişi. İl burada zorunlu değildir. |
first_name required | string | Kişinin adı. |
last_name required | string | Kişinin soyadı. |
company | string | Kurum adı. Tek isteğe bağlı alandır. |
email required | string | Geçerli bir e-posta. |
phone required | string | Telefon. |
address required | string | Adres satırı. |
address2 | string | İkinci adres satırı. İsteğe bağlı; anahtar yoksa boş satır kaydedilir. |
city required | string | Şehir. |
state | string | İl ya da eyalet. Alan adı kişilerinde zorunludur, kayıtlı profillerde değildir. |
zip required | string | Posta kodu. |
country required | string | Ülke kodu. Büyük harfe çevrilir. |
postal_code | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | contact_email_invalid, contact_field_invalid, contact_field_required, contact_name_required, name_required, profile_rejected |
| 500 | profile_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/whois-profiles' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "string", "contact": {}, "first_name": "string", "last_name": "string", "company": "string", "email": "string", "phone": "string", "address": "string", "address2": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "postal_code": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/whois-profiles", headers=h, json={"name": "string", "contact": {}, "first_name": "string", "last_name": "string", "company": "string", "email": "string", "phone": "string", "address": "string", "address2": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "postal_code": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/whois-profiles", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "string", "contact": {}, "first_name": "string", "last_name": "string", "company": "string", "email": "string", "phone": "string", "address": "string", "address2": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "postal_code": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/domains/whois-profiles/{pid}
Update whois profile (path: {pid})Scope: Domains/UpdateWhoisProfile
Update whois profile (path: {pid}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-kisileri-ve-gizlilik).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
pid required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
name required | string | Yeni etiket. |
contact required | object | contactTam kişi. Kayıtlı kişi bütünüyle değiştirilir. |
first_name required | string | Kişinin adı. |
last_name required | string | Kişinin soyadı. |
company | string | Kurum adı. Tek isteğe bağlı alandır. |
email required | string | Geçerli bir e-posta. |
phone required | string | Telefon. |
address required | string | Adres satırı. |
address2 | string | İkinci adres satırı. Profil bütün olarak değiştirilir; anahtar yoksa boş satır kaydedilir. |
city required | string | Şehir. |
state | string | İl ya da eyalet. Alan adı kişilerinde zorunludur, kayıtlı profillerde değildir. |
zip required | string | Posta kodu. |
country required | string | Ülke kodu. Büyük harfe çevrilir. |
postal_code | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | contact_email_invalid, contact_field_invalid, contact_field_required, contact_name_required, name_required, profile_rejected |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/domains/whois-profiles/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "string", "contact": {}, "first_name": "string", "last_name": "string", "company": "string", "email": "string", "phone": "string", "address": "string", "address2": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "postal_code": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/domains/whois-profiles/1", headers=h, json={"name": "string", "contact": {}, "first_name": "string", "last_name": "string", "company": "string", "email": "string", "phone": "string", "address": "string", "address2": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "postal_code": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/whois-profiles/1", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"name": "string", "contact": {}, "first_name": "string", "last_name": "string", "company": "string", "email": "string", "phone": "string", "address": "string", "address2": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "postal_code": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/domains/whois-profiles/{pid}
Delete whois profile (path: {pid})Scope: Domains/DeleteWhoisProfile
Delete whois profile (path: {pid}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-kisileri-ve-gizlilik).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
pid required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/domains/whois-profiles/1' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/domains/whois-profiles/1", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/whois-profiles/1", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/whois-profiles/{pid}/default
Set default whois profile (path: {pid})Scope: Domains/SetDefaultWhoisProfile
Set default whois profile (path: {pid}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-kisileri-ve-gizlilik).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
pid required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/whois-profiles/1/default' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/whois-profiles/1/default", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/whois-profiles/1/default", {
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}`);GET/domains/default-nameservers
Get default nameserversScope: Domains/GetDefaultNameservers
Get default nameservers. Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/default-nameservers' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/default-nameservers", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/default-nameservers", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/domains/default-nameservers
Update default nameserversScope: Domains/UpdateDefaultNameservers
Update default nameservers. Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Request body
| Field | Type | Description |
|---|---|---|
nameservers required | string | Varsayılan set. İkiden dörde kadar geçerli sunucu adı; boşluklar kırpılır ve küçük harfe çevrilir. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | nameservers_invalid |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/domains/default-nameservers' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"nameservers": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/domains/default-nameservers", headers=h, json={"nameservers": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/default-nameservers", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"nameservers": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/domains
List domainsScope: Domains/GetDomains
List domains. Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-alan-adlari).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
page | query | integer | Kaçıncı sayfa. |
limit | query | integer | Sayfa başına satır. En çok 100. |
status | query | string | Durum süzgeci. Rozet gruplarını alır. |
tld | query | string | Yalnız bu uzantının alan adları. |
search | query | string | Alan adında arar. |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/domains/{domain}
Get domain (path: {domain})Scope: Domains/GetDomain
Get domain (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-alan-adlari).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/1' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/1", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PATCH/domains/{domain}
Update domain (path: {domain})Scope: Domains/UpdateDomain
Update domain (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-alan-adlari).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
auto_renew | boolean | Alan adı bazlı otomatik yenileme. Yalnız etkin alan adlarında ve gerçek bir mantıksal değerle. |
billing_profile_id | integer | Fatura profilinin numarası. Sıfır hesabın varsayılanına döner. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | auto_renew_invalid, autorenew_locked, billing_profile_rejected, no_auto_pay_source, not_actionable, nothing_to_update |
Code samples
curl -s -X PATCH 'https://www.gyrohosting.com/api/v1/client/domains/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"auto_renew": true, "billing_profile_id": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.patch("https://www.gyrohosting.com/api/v1/client/domains/1", headers=h, json={"auto_renew": True, "billing_profile_id": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1", {
method: "PATCH",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"auto_renew": true, "billing_profile_id": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/{domain}/renew
Renew domain (path: {domain})Scope: Domains/RenewDomain
Renew domain (path: {domain}). Domain operations run against the registrar module of the domain.
Spends money / creates an invoice. Money rules apply (AK-40): "confirm": true in the body, an Idempotency-Key header, account balance only (no stored card), daily limit of paid API operations per account (default 50, operator can override per account/reseller, resets 00:00 Europe/Istanbul); violations answer 422 with [confirm_required], [idempotency_key_required], [balance_only] or [daily_limit] in the message.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-alan-adlari).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string | |
Idempotency-Key required | header | string |
Request body
| Field | Type | Description |
|---|---|---|
years required | integer | Yenileme süresi. Detaydaki fiyatlı süre satırlarından biri olmalıdır. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | not_renewable, years_invalid |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/1/renew' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"years": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/1/renew", headers=h, json={"years": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/renew", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({"years": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/domains/{domain}/transfer-status
Get transfer status (path: {domain})Scope: Domains/GetTransferStatus
Get transfer status (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-edinme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | not_a_transfer |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/1/transfer-status' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/1/transfer-status", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/transfer-status", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/domains/{domain}/nameservers
Get nameservers (path: {domain})Scope: Domains/GetNameservers
Get nameservers (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/1/nameservers' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/1/nameservers", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/nameservers", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/domains/{domain}/nameservers
Update nameservers (path: {domain})Scope: Domains/UpdateNameservers
Update nameservers (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
nameservers required | string | Yeni set. İkiden dörde kadar geçerli sunucu adı; boş girişler sayımdan önce düşer. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | nameservers_failed, nameservers_invalid, nameservers_not_supported, nameservers_rejected, not_actionable |
| 500 | nameservers_failed |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/domains/1/nameservers' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"nameservers": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/domains/1/nameservers", headers=h, json={"nameservers": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/nameservers", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"nameservers": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/domains/{domain}/child-nameservers
Get child nameservers (path: {domain})Scope: Domains/GetChildNameservers
Get child nameservers (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | child_ns_failed, child_ns_not_supported |
| 500 | child_ns_failed |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/1/child-nameservers' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/1/child-nameservers", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/child-nameservers", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/{domain}/child-nameservers
Create child nameserver (path: {domain})Scope: Domains/CreateChildNameserver
Create child nameserver (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
host required | string | Sunucunun tam adı. Küçük harfe çevrilir. |
ip required | string | Sunucunun adresi. Biçimi doğrulanır. |
ns | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | child_ns_failed, child_ns_fields, child_ns_host_invalid, child_ns_ip_invalid, child_ns_not_supported, child_ns_rejected, not_actionable |
| 500 | child_ns_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/1/child-nameservers' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"host": "string", "ip": "string", "ns": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/1/child-nameservers", headers=h, json={"host": "string", "ip": "string", "ns": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/child-nameservers", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"host": "string", "ip": "string", "ns": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/domains/{domain}/child-nameservers
Delete child nameserver (path: {domain})Scope: Domains/DeleteChildNameserver
Delete child nameserver (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | child_ns_failed, child_ns_fields, child_ns_not_supported, child_ns_rejected, not_actionable |
| 500 | child_ns_failed |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/domains/1/child-nameservers' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/domains/1/child-nameservers", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/child-nameservers", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/domains/{domain}/transfer-lock
Get transfer lock (path: {domain})Scope: Domains/GetTransferLock
Get transfer lock (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-edinme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/1/transfer-lock' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/1/transfer-lock", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/transfer-lock", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/domains/{domain}/transfer-lock
Update transfer lock (path: {domain})Scope: Domains/UpdateTransferLock
Update transfer lock (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-edinme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
locked required | boolean | Yeni kilit durumu. Gerçek bir mantıksal değer olmalıdır; metin ve sayı reddedilir. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | lock_failed, lock_not_supported, lock_rejected, locked_invalid, not_actionable |
| 500 | lock_failed |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/domains/1/transfer-lock' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"locked": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/domains/1/transfer-lock", headers=h, json={"locked": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/transfer-lock", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"locked": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/{domain}/auth-code
Send auth code (path: {domain})Scope: Domains/SendAuthCode
Send auth code (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-edinme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | auth_code_failed, auth_code_not_supported, auth_code_rejected, not_actionable |
| 500 | auth_code_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/1/auth-code' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/1/auth-code", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/auth-code", {
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}`);PUT/domains/{domain}/auth-code
Save auth code (path: {domain})Scope: Domains/SaveAuthCode
Save auth code (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-edinme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
code required | string | Yeni transfer kodu. İşaretleme ayıklanır ve boşluklar kırpılır. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | code_required, not_actionable |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/domains/1/auth-code' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"code": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/domains/1/auth-code", headers=h, json={"code": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/auth-code", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"code": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/domains/{domain}/dns-records
List dns records (path: {domain})Scope: Domains/GetDnsRecords
List dns records (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_pending, addon_required, dns_failed, dns_not_supported, dns_rejected |
| 500 | dns_failed |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/1/dns-records' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/1/dns-records", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/dns-records", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/{domain}/dns-records
Create dns record (path: {domain})Scope: Domains/CreateDnsRecord
Create dns record (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
type required | string | Kayıt türü. |
name required | string | Kaydın yanıtlayacağı ad. Kabul edilen biçim sağlayıcıya göre değişir. |
value required | string | Kaydın içeriği. |
ttl | integer | Yaşam süresi. Verilmezse sağlayıcının varsayılanı kullanılır. |
priority | integer | Öncelik. Posta ve hizmet kayıtları dışında yok sayılır. |
identity | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_required, dns_failed, dns_fields, dns_not_supported, dns_rejected, not_actionable |
| 500 | dns_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/1/dns-records' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"type": "string", "name": "string", "value": "string", "ttl": 1, "priority": 1, "identity": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/1/dns-records", headers=h, json={"type": "string", "name": "string", "value": "string", "ttl": 1, "priority": 1, "identity": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/dns-records", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"type": "string", "name": "string", "value": "string", "ttl": 1, "priority": 1, "identity": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/domains/{domain}/dns-records
Update dns record (path: {domain})Scope: Domains/UpdateDnsRecord
Update dns record (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
identity | string | Listeden gelen kayıt numarası. Liste bir numara döndürdüyse mutlaka gönderin. |
type required | string | Kayıt türü. |
name required | string | Kaydın adı. |
value required | string | Yeni içerik. |
ttl | integer | Yaşam süresi. Verilmezse kayıt mevcut yaşam süresini korur. |
priority | integer | Öncelik. Verilmezse kayıt, türü değişmediği sürece mevcut önceliğini korur. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_required, dns_edit_not_supported, dns_failed, dns_fields, dns_rejected, not_actionable |
| 500 | dns_failed |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/domains/1/dns-records' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"identity": "string", "type": "string", "name": "string", "value": "string", "ttl": 1, "priority": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/domains/1/dns-records", headers=h, json={"identity": "string", "type": "string", "name": "string", "value": "string", "ttl": 1, "priority": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/dns-records", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"identity": "string", "type": "string", "name": "string", "value": "string", "ttl": 1, "priority": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/domains/{domain}/dns-records
Delete dns record (path: {domain})Scope: Domains/DeleteDnsRecord
Delete dns record (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_required, dns_failed, dns_fields, dns_rejected, not_actionable |
| 500 | dns_failed |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/domains/1/dns-records' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/domains/1/dns-records", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/dns-records", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/domains/{domain}/dnssec
List dnssec records (path: {domain})Scope: Domains/GetDnssecRecords
List dnssec records (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | dnssec_failed, dnssec_not_supported |
| 500 | dnssec_failed |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/1/dnssec' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/1/dnssec", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/dnssec", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/{domain}/dnssec
Create dnssec record (path: {domain})Scope: Domains/CreateDnssecRecord
Create dnssec record (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
key_tag required | integer | Anahtarın etiketi. dnskey-keytag-flags'te anahtar bayrağını taşır. |
algorithm required | integer | Anahtar algoritmasının numarası. Modülün bildirdiği kümede olmalıdır. |
digest_type required | integer | Özet algoritmasının numarası ya da meta.dnssec_fields'in adlandırdığı anahtar bayrağı veya protokol. Modülün bildirdiği kümede olmalıdır. |
digest required | string | İmza özeti. DNSKEY isteyen servis sağlayıcı burada açık anahtarı (base64) alır. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | dnssec_algorithm_invalid, dnssec_digest_type_invalid, dnssec_failed, dnssec_fields, dnssec_not_supported, dnssec_rejected, not_actionable |
| 500 | dnssec_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/1/dnssec' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"key_tag": 1, "algorithm": 1, "digest_type": 1, "digest": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/1/dnssec", headers=h, json={"key_tag": 1, "algorithm": 1, "digest_type": 1, "digest": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/dnssec", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"key_tag": 1, "algorithm": 1, "digest_type": 1, "digest": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/domains/{domain}/dnssec
Delete dnssec record (path: {domain})Scope: Domains/DeleteDnssecRecord
Delete dnssec record (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/ad-sunuculari-ve-kayitlar).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | dnssec_failed, dnssec_fields, dnssec_not_supported, dnssec_rejected, not_actionable |
| 500 | dnssec_failed |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/domains/1/dnssec' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/domains/1/dnssec", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/dnssec", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/domains/{domain}/whois
Get whois contacts (path: {domain})Scope: Domains/GetWhoisContacts
Get whois contacts (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-kisileri-ve-gizlilik).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | whois_not_supported, whois_rejected |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/1/whois' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/1/whois", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/whois", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/domains/{domain}/whois
Update whois contacts (path: {domain})Scope: Domains/UpdateWhoisContacts
Update whois contacts (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-kisileri-ve-gizlilik).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
role | string | Hangi rollere yazılacağı. Verilmezse dört rolün hepsine yazılır. |
contact required | object | contactYazılacak kişi. |
first_name required | string | Kişinin adı. |
last_name required | string | Kişinin soyadı. |
company | string | Kurum adı. Tek isteğe bağlı alandır. |
email required | string | Geçerli bir e-posta. |
phone required | string | Telefon. |
address required | string | Adres satırı. |
address2 | string | İkinci adres satırı (daire, kat, blok). Anahtar gönderilmezse sağlayıcıdaki satır korunur; boş metin satırı siler. |
city required | string | Şehir. |
state | string | İl ya da eyalet. Alan adı kişilerinde zorunludur, kayıtlı profillerde değildir. |
zip required | string | Posta kodu. |
country required | string | Ülke kodu. Büyük harfe çevrilir. |
postal_code | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | contact_email_invalid, contact_field_invalid, contact_field_required, contact_name_required, not_actionable, role_invalid, whois_failed, whois_not_supported, whois_rejected |
| 500 | whois_failed |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/domains/1/whois' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"role": "string", "contact": {}, "first_name": "string", "last_name": "string", "company": "string", "email": "string", "phone": "string", "address": "string", "address2": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "postal_code": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/domains/1/whois", headers=h, json={"role": "string", "contact": {}, "first_name": "string", "last_name": "string", "company": "string", "email": "string", "phone": "string", "address": "string", "address2": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "postal_code": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/whois", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"role": "string", "contact": {}, "first_name": "string", "last_name": "string", "company": "string", "email": "string", "phone": "string", "address": "string", "address2": "string", "city": "string", "state": "string", "zip": "string", "country": "string", "postal_code": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/{domain}/whois/apply
Apply whois profile (path: {domain})Scope: Domains/ApplyWhoisProfile
Apply whois profile (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-kisileri-ve-gizlilik).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
profile_id required | integer | Uygulanacak profilin numarası. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | not_actionable, whois_failed, whois_not_supported, whois_rejected |
| 500 | whois_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/1/whois/apply' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"profile_id": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/1/whois/apply", headers=h, json={"profile_id": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/whois/apply", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"profile_id": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/domains/{domain}/whois-privacy
Update whois privacy (path: {domain})Scope: Domains/UpdateWhoisPrivacy
Update whois privacy (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/alan-adi-kisileri-ve-gizlilik).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
enabled required | boolean | Gizlilik açık mı. Gerçek bir mantıksal değer olmalıdır. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_required, enabled_invalid, not_actionable, privacy_failed, privacy_not_supported, privacy_rejected |
| 500 | privacy_failed |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/domains/1/whois-privacy' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"enabled": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/domains/1/whois-privacy", headers=h, json={"enabled": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/whois-privacy", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"enabled": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/domains/{domain}/email-forwards
List email forwards (path: {domain})Scope: Domains/GetEmailForwards
List email forwards (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/yonlendirme-kurma).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_pending, addon_required, email_forwarding_failed, email_forwarding_not_supported |
| 500 | email_forwarding_failed |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/1/email-forwards' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/1/email-forwards", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/email-forwards", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/{domain}/email-forwards
Create email forward (path: {domain})Scope: Domains/CreateEmailForward
Create email forward (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/yonlendirme-kurma).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
prefix required | string | Alan adındaki yerel kısım. Yönlendirme bu kısım ile alan adının birleşimine yanıt verir. |
target required | string | Hedef posta kutusu. Geçerli bir e-posta adresi olmalıdır. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_required, email_forward_fields, email_forward_rejected, email_forward_target_invalid, email_forwarding_failed, email_forwarding_not_supported, not_actionable |
| 500 | email_forwarding_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/1/email-forwards' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"prefix": "string", "target": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/1/email-forwards", headers=h, json={"prefix": "string", "target": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/email-forwards", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"prefix": "string", "target": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/domains/{domain}/email-forwards
Delete email forward (path: {domain})Scope: Domains/DeleteEmailForward
Delete email forward (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/yonlendirme-kurma).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_required, email_forward_fields, email_forwarding_failed, email_forwarding_not_supported, not_actionable |
| 500 | email_forwarding_failed |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/domains/1/email-forwards' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/domains/1/email-forwards", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/email-forwards", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/domains/{domain}/forwarding
Get url forwarding (path: {domain})Scope: Domains/GetUrlForwarding
Get url forwarding (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/yonlendirme-kurma).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_pending, addon_required, url_forwarding_failed, url_forwarding_not_supported |
| 500 | url_forwarding_failed |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/domains/1/forwarding' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/domains/1/forwarding", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/forwarding", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/domains/{domain}/forwarding
Update url forwarding (path: {domain})Scope: Domains/UpdateUrlForwarding
Update url forwarding (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/yonlendirme-kurma).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Request body
| Field | Type | Description |
|---|---|---|
url required | string | Tam hedef adres. Şeması yönlendirmenin şeması olur; yazılmazsa güvensiz şema kullanılır. |
method | integer | Yönlendirme türü. Kalıcı olan varsayılandır; başka bir değer ona düşer. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_required, not_actionable, url_forwarding_failed, url_forwarding_not_supported, url_forwarding_rejected, url_required |
| 500 | url_forwarding_failed |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/domains/1/forwarding' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url": "string", "method": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/domains/1/forwarding", headers=h, json={"url": "string", "method": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/forwarding", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"url": "string", "method": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);DELETE/domains/{domain}/forwarding
Delete url forwarding (path: {domain})Scope: Domains/DeleteUrlForwarding
Delete url forwarding (path: {domain}). Domain operations run against the registrar module of the domain.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/yonlendirme-kurma).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_required, not_actionable, url_forwarding_failed, url_forwarding_not_supported, url_forwarding_rejected |
| 500 | url_forwarding_failed |
Code samples
curl -s -X DELETE 'https://www.gyrohosting.com/api/v1/client/domains/1/forwarding' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.delete("https://www.gyrohosting.com/api/v1/client/domains/1/forwarding", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/forwarding", {
method: "DELETE",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/domains/{domain}/addons/{key}
Buy domain addon (path: {domain}, {key})Scope: Domains/BuyDomainAddon
Buy domain addon (path: {domain}, {key}). Domain operations run against the registrar module of the domain.
Spends money / creates an invoice. Money rules apply (AK-40): "confirm": true in the body, an Idempotency-Key header, account balance only (no stored card), daily limit of paid API operations per account (default 50, operator can override per account/reseller, resets 00:00 Europe/Istanbul); violations answer 422 with [confirm_required], [idempotency_key_required], [balance_only] or [daily_limit] in the message.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/sahip-olunan-alan-adlari).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
domain required | path | string | |
key required | path | string | |
Idempotency-Key required | header | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | addon_active, addon_free, addon_not_offered, addon_not_supported, addon_pending, addon_rejected, addon_term_invalid, not_actionable |
| 500 | addon_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/domains/1/addons/1' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Idempotency-Key: $(uuidgen)"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/domains/1/addons/1", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/domains/1/addons/1", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Idempotency-Key": crypto.randomUUID(),
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Orders
Preview (quote) and place orders for any product.
GET/orders
List ordersScope: Orders/GetOrders
List orders. Orders of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/musteri-olarak-siparis).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
page | query | integer | Kaçıncı sayfa. |
limit | query | integer | Sayfa başına satır. En çok 100. |
status | query | string | Durum süzgeci: bekliyor, işlemde, etkin ya da iptal. |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | status_invalid |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/orders' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/orders", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/orders", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/orders
Create orderScope: Orders/CreateOrder
Create order. Orders of the calling account.
Spends money / creates an invoice. Money rules apply (AK-40): "confirm": true in the body, an Idempotency-Key header, account balance only (no stored card), daily limit of paid API operations per account (default 50, operator can override per account/reseller, resets 00:00 Europe/Istanbul); violations answer 422 with [confirm_required], [idempotency_key_required], [balance_only] or [daily_limit] in the message.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/musteri-olarak-siparis).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
Idempotency-Key required | header | string |
Request body
| Field | Type | Description |
|---|---|---|
terms required | boolean | Şartların kabulü. Doğru gönderilmelidir. |
items required | string | items[]Sipariş satırları. Birden yirmiye kadar. |
product_id required | integer | Sipariş edilecek ürünün numarası. |
cycle required | string | Ödeme döngüsü. Ürünün fiyatlı döngülerinden biri olmalıdır. |
quantity | integer | Adet. Yalnız ürün çoklu alıma izin veriyorsa dikkate alınır. |
addons | object | Seçilen ek hizmetler. Ek hizmet numarasını seçenek numarasına eşler. Ürünün ilk dönemi ücretsiz dahil ettiği ek hizmet gönderilmese de siparişe eklenir. İlk dönem tutarı 0 olur, yenilemeler ek hizmet fiyatından faturalanır ve siparişten çıkarılamaz. |
addons_qty | object | Adetli ek hizmetlerin sayısı. |
requirements | object | Ürünün sorduğu alanların yanıtları. Zorunlu işaretlenen her alan gönderilmelidir. |
requirement_files | object | Dosya isteyen alanların içeriği. Kodlanmış içerik olarak gönderilir; adres kabul edilmez. |
metrics | string | Açılacak ölçümlerin numaraları. |
domain | object | Satırın alan adı ekseni. Seçim, ad, alt alan adı kökü ve lisans alanlarını taşır. |
coupons | string | Kupon kodları. Operatörün kendiliğinden uygulanan kuponları da katılır. |
billing_profile_id | integer | Fatura profilinin numarası. |
notes | string | Sipariş notu. Bin karakterden uzunu kırpılır. |
payment | object | paymentÖdeme kaynağı. Toplam sıfırın üstündeyse zorunludur. |
method | string | Ödeme yolu: hesap bakiyesi ya da kayıtlı kart. |
card_id | integer | Çekilecek kartın numarası. Verilmezse hesabın varsayılan kartı çekilir. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | card_not_chargeable, checkout_blocked, insufficient_balance, no_stored_card, payment_method_restricted, terms_required, verification_required |
| 404 | not_found |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/orders' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"terms": true, "items": "string", "product_id": 1, "cycle": "string", "quantity": 1, "addons": {}, "addons_qty": {}, "requirements": {}, "requirement_files": {}, "metrics": "string", "domain": {}, "coupons": "string", "billing_profile_id": 1, "notes": "string", "payment": {}, "method": "string", "card_id": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
h["Idempotency-Key"] = str(uuid.uuid4())
r = requests.post("https://www.gyrohosting.com/api/v1/client/orders", headers=h, json={"terms": True, "items": "string", "product_id": 1, "cycle": "string", "quantity": 1, "addons": {}, "addons_qty": {}, "requirements": {}, "requirement_files": {}, "metrics": "string", "domain": {}, "coupons": "string", "billing_profile_id": 1, "notes": "string", "payment": {}, "method": "string", "card_id": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/orders", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
"Idempotency-Key": crypto.randomUUID(),
},
body: JSON.stringify({"terms": true, "items": "string", "product_id": 1, "cycle": "string", "quantity": 1, "addons": {}, "addons_qty": {}, "requirements": {}, "requirement_files": {}, "metrics": "string", "domain": {}, "coupons": "string", "billing_profile_id": 1, "notes": "string", "payment": {}, "method": "string", "card_id": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/orders/preview
Preview orderScope: Orders/PreviewOrder
Preview order. Orders of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/musteri-olarak-siparis).
Request body
| Field | Type | Description |
|---|---|---|
items required | string | items[]Sipariş satırları. Birden yirmiye kadar; şekli sipariş ucuyla aynıdır. |
product_id required | integer | Sipariş edilecek ürünün numarası. |
cycle required | string | Ödeme döngüsü. Ürünün fiyatlı döngülerinden biri olmalıdır. |
quantity | integer | Adet. Yalnız ürün çoklu alıma izin veriyorsa dikkate alınır. |
addons | object | Seçilen ek hizmetler. Ek hizmet numarasını seçenek numarasına eşler. Ürünün ilk dönemi ücretsiz dahil ettiği ek hizmet gönderilmese de siparişe eklenir. İlk dönem tutarı 0 olur, yenilemeler ek hizmet fiyatından faturalanır ve siparişten çıkarılamaz. |
addons_qty | object | Adetli ek hizmetlerin sayısı. |
requirements | object | Ürünün sorduğu alanların yanıtları. Zorunlu işaretlenen her alan gönderilmelidir. |
requirement_files | object | Dosya isteyen alanların içeriği. Kodlanmış içerik olarak gönderilir; adres kabul edilmez. |
metrics | string | Açılacak ölçümlerin numaraları. |
domain | object | Satırın alan adı ekseni. Seçim, ad, alt alan adı kökü ve lisans alanlarını taşır. |
coupons | string | Denenecek kupon kodları. |
billing_profile_id | integer | Fatura profilinin numarası. Vergi bağlamını belirler; verilmezse varsayılan profil, hesapta kayıtlı profil yoksa hesabın ülkesi kullanılır. |
payment | object | Ödeme bloğu. Verilirse yöntemin komisyonu toplama eklenir; bakiye yeterliliği burada denetlenmez. |
method | string | |
card_id | string |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | coupon_invalid, cycle_invalid, domain_acquisition_not_here, items_required, product_not_orderable, requirement_missing |
| 404 | not_found |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/orders/preview' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"items": "string", "product_id": 1, "cycle": "string", "quantity": 1, "addons": {}, "addons_qty": {}, "requirements": {}, "requirement_files": {}, "metrics": "string", "domain": {}, "coupons": "string", "billing_profile_id": 1, "payment": {}, "method": "string", "card_id": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/orders/preview", headers=h, json={"items": "string", "product_id": 1, "cycle": "string", "quantity": 1, "addons": {}, "addons_qty": {}, "requirements": {}, "requirement_files": {}, "metrics": "string", "domain": {}, "coupons": "string", "billing_profile_id": 1, "payment": {}, "method": "string", "card_id": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/orders/preview", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"items": "string", "product_id": 1, "cycle": "string", "quantity": 1, "addons": {}, "addons_qty": {}, "requirements": {}, "requirement_files": {}, "metrics": "string", "domain": {}, "coupons": "string", "billing_profile_id": 1, "payment": {}, "method": "string", "card_id": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/orders/{id}
Get order (path: {id})Scope: Orders/GetOrder
Get order (path: {id}). Orders of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/musteri-olarak-siparis).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/orders/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/orders/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/orders/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Support tickets
Departments, open, reply, close, reopen, rate, attachments.
GET/tickets/departments
List ticket departmentsScope: Tickets/GetTicketDepartments
List ticket departments. Support ticket of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/destek-isteme).
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | ticket_system_disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/tickets/departments' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/tickets/departments", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/tickets/departments", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/tickets/access-groups
List ticket access groupsScope: Tickets/GetTicketAccessGroups
List ticket access groups. Support ticket of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/destek-isteme).
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | ticket_system_disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/tickets/access-groups' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/tickets/access-groups", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/tickets/access-groups", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/tickets
List ticketsScope: Tickets/GetTickets
List tickets. Support ticket of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/destek-isteme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
page | query | integer | Kaçıncı sayfa. |
limit | query | integer | Sayfa başına satır. En çok 100. |
status | query | string | Durum süzgeci. Müşteriye gösterilen durum sözlüğünü kabul eder. |
department | query | integer | Departman süzgeci. |
search | query | string | Konu, referans ve departman adında arar. |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | status_invalid, ticket_system_disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/tickets' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/tickets", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/tickets", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/tickets
Create ticketScope: Tickets/CreateTicket
Create ticket. Support ticket of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/destek-isteme).
Request body
| Field | Type | Description |
|---|---|---|
department_id required | integer | Departmanın numarası. |
subject required | string | Konu. |
message required | string | Açılış mesajı. En az beş karakter; düz metindir ve işaretleme ayıklanır. |
priority | integer | Öncelik. Verilmezse orta alınır. |
service_id | integer | Talebi bir hizmete bağlar. |
custom_fields | object | Departman alanlarının yanıtları. Alan numarasını değere eşler; kutu tipli alanlar dizi alır. |
credentials | string | Erişim bilgileri. Her satır bir grup numarası ve alan haritası taşır; mesaja şifreli işlenir. |
attachments | array<any> | Ekler. Kodlanmış içerik olarak gönderilir; adres reddedilir. |
encrypt_message | boolean | Mesaj gövdesi şifreli saklansın mı. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | access_group_invalid, attachment_invalid, credential_field_required, custom_field_required, department_invalid, message_too_short, subject_required, ticket_rejected, ticket_system_disabled |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/tickets' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"department_id": 1, "subject": "string", "message": "string", "priority": 1, "service_id": 1, "custom_fields": {}, "credentials": "string", "attachments": [null], "encrypt_message": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/tickets", headers=h, json={"department_id": 1, "subject": "string", "message": "string", "priority": 1, "service_id": 1, "custom_fields": {}, "credentials": "string", "attachments": [None], "encrypt_message": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/tickets", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"department_id": 1, "subject": "string", "message": "string", "priority": 1, "service_id": 1, "custom_fields": {}, "credentials": "string", "attachments": [null], "encrypt_message": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/tickets/{id}
Get ticket (path: {id})Scope: Tickets/GetTicket
Get ticket (path: {id}). Support ticket of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/destek-isteme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | ticket_system_disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/tickets/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/tickets/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/tickets/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/tickets/{id}/reply
Reply ticket (path: {id})Scope: Tickets/ReplyTicket
Reply ticket (path: {id}). Support ticket of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/destek-isteme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
message required | string | Yanıt metni. En az beş karakter. |
credentials | string | Erişim bilgileri. |
attachments | array<any> | Ekler. |
encrypt_message | boolean | Gövde şifreli saklansın mı. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | access_group_invalid, attachment_invalid, message_too_short, reply_rejected, ticket_not_open, ticket_system_disabled |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/tickets/47466/reply' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"message": "string", "credentials": "string", "attachments": [null], "encrypt_message": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/tickets/47466/reply", headers=h, json={"message": "string", "credentials": "string", "attachments": [None], "encrypt_message": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/tickets/47466/reply", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"message": "string", "credentials": "string", "attachments": [null], "encrypt_message": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/tickets/{id}/close
Close ticket (path: {id})Scope: Tickets/CloseTicket
Close ticket (path: {id}). Support ticket of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/destek-isteme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
rating | integer | Kapatırken verilen puan. Yalnız talep henüz puansızken işlenir. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | ticket_system_disabled |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/tickets/47466/close' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"rating": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/tickets/47466/close", headers=h, json={"rating": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/tickets/47466/close", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"rating": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/tickets/{id}/reopen
Reopen ticket (path: {id})Scope: Tickets/ReopenTicket
Reopen ticket (path: {id}). Support ticket of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/destek-isteme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | ticket_locked, ticket_system_disabled |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/tickets/47466/reopen' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/tickets/47466/reopen", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/tickets/47466/reopen", {
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/tickets/{id}/rating
Rate ticket (path: {id})Scope: Tickets/RateTicket
Rate ticket (path: {id}). Support ticket of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/destek-isteme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
rating required | integer | Verilen puan. Birden beşe. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | already_rated, rating_invalid, ticket_system_disabled |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/tickets/47466/rating' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"rating": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/tickets/47466/rating", headers=h, json={"rating": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/tickets/47466/rating", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"rating": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/tickets/{id}/replies/{rid}/rating
Rate ticket reply (path: {id}, {rid})Scope: Tickets/RateTicketReply
Rate ticket reply (path: {id}, {rid}). Support ticket of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/destek-isteme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
rid required | path | integer |
Request body
| Field | Type | Description |
|---|---|---|
rating required | integer | Verilen puan. Birden beşe. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | already_rated, rating_invalid, ticket_system_disabled |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/tickets/47466/replies/1/rating' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"rating": 1}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/tickets/47466/replies/1/rating", headers=h, json={"rating": 1}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/tickets/47466/replies/1/rating", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"rating": 1}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/tickets/{id}/attachments/{aid}
Get ticket attachment (path: {id}, {aid})Scope: Tickets/GetTicketAttachment
Get ticket attachment (path: {id}, {aid}). Support ticket of the calling account.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/destek-isteme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer | |
aid required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | ticket_system_disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/tickets/47466/attachments/1' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/tickets/47466/attachments/1", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/tickets/47466/attachments/1", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);SMS
SMS senders, quote and send.
GET/sms/senders
List sms sendersScope: Sms/GetSmsSenders
List sms senders.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/mesaj-gonderme).
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | sms_api_disabled, sms_disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/sms/senders' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/sms/senders", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/sms/senders", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/sms/quote
Quote smsScope: Sms/QuoteSms
Quote sms.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/mesaj-gonderme).
Request body
| Field | Type | Description |
|---|---|---|
sender required | string | Gönderen başlığı. Hesabın etkin başlıklarından biri olmalıdır. |
message required | string | Mesaj metni. Parça tavanını aşan metin kırpılır ve kırpıldığı bildirilir. |
numbers required | array<any> | Alıcı numaralar. Uluslararası biçimde; tek bir metin olarak gönderilirse satır, virgül ve noktalı virgülden bölünür. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | message_required, numbers_required, sender_invalid, sms_api_disabled, sms_disabled |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/sms/quote' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sender": "string", "message": "string", "numbers": [null]}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/sms/quote", headers=h, json={"sender": "string", "message": "string", "numbers": [None]}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/sms/quote", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"sender": "string", "message": "string", "numbers": [null]}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/sms/send
Send smsScope: Sms/SendSms
Send sms.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/mesaj-gonderme).
Request body
| Field | Type | Description |
|---|---|---|
sender required | string | Gönderen başlığı. Hesabın etkin başlıklarından biri olmalıdır. |
message required | string | Mesaj metni. Parça tavanını aşan metin kırpılır ve kırpıldığı bildirilir. |
numbers required | array<any> | Alıcı numaralar. Uluslararası biçimde; tek bir metin olarak gönderilirse satır, virgül ve noktalı virgülden bölünür. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | insufficient_balance, no_recipients, price_unavailable, send_rejected, sender_invalid, sms_api_disabled, sms_disabled, sms_module_unavailable |
| 500 | send_failed |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/sms/send' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sender": "string", "message": "string", "numbers": [null]}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/sms/send", headers=h, json={"sender": "string", "message": "string", "numbers": [None]}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/sms/send", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"sender": "string", "message": "string", "numbers": [null]}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/sms/messages
List sms messagesScope: Sms/GetSmsMessages
List sms messages.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/mesaj-gonderme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
page | query | integer | Kaçıncı sayfa. |
limit | query | integer | Sayfa başına satır. En çok 100. |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | sms_api_disabled, sms_disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/sms/messages' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/sms/messages", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/sms/messages", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/sms/messages/{id}
Get sms message (path: {id})Scope: Sms/GetSmsMessage
Get sms message (path: {id}).
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/mesaj-gonderme).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
id required | path | integer |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 404 | not_found |
| 422 | sms_api_disabled, sms_disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/sms/messages/47466' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/sms/messages/47466", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/sms/messages/47466", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);Affiliate
Affiliate programme.
GET/affiliate
Get affiliateScope: Affiliate/GetAffiliate
Get affiliate.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/satis-ortakligi-kazanci).
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | affiliate_disabled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/affiliate' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/affiliate", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/affiliate", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);GET/affiliate/commissions
List affiliate commissionsScope: Affiliate/GetAffiliateCommissions
List affiliate commissions.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/satis-ortakligi-kazanci).
Parameters
| Field | in | Type | Description |
|---|---|---|---|
page | query | integer | Kaçıncı sayfa. |
limit | query | integer | Sayfa başına satır. En çok 100. |
Responses
| 200 | Success — data: array<object> |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | affiliate_disabled, not_enrolled |
Code samples
curl -s 'https://www.gyrohosting.com/api/v1/client/affiliate/commissions' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.get("https://www.gyrohosting.com/api/v1/client/affiliate/commissions", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/affiliate/commissions", {
method: "GET",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
},
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);POST/affiliate/enroll
Enroll affiliateScope: Affiliate/EnrollAffiliate
Enroll affiliate.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/satis-ortakligi-kazanci).
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | affiliate_disabled |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/affiliate/enroll' \
-H "Authorization: Bearer $GYRO_TOKEN"import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/affiliate/enroll", headers=h, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/affiliate/enroll", {
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/affiliate/withdraw
Withdraw affiliateScope: Affiliate/WithdrawAffiliate
Withdraw affiliate.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/satis-ortakligi-kazanci).
Request body
| Field | Type | Description |
|---|---|---|
amount required | number | İstenen tutar. Alt sınır ile kullanılabilir bakiye arasında olmalıdır. |
gateway required | string | Ödeme yolu. Operatörün sunduklarından biri olmalıdır. |
gateway_info | string | Hedef bilgisi. Kayıtlı bir hedef varsa atlanabilir. |
save_default | boolean | Bu hedefi sonraki talepler için kaydet. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | affiliate_disabled, affiliate_disabled_account, amount_invalid, below_minimum, gateway_info_required, gateway_invalid, not_enrolled, withdrawal_pending, withdrawal_rejected |
Code samples
curl -s -X POST 'https://www.gyrohosting.com/api/v1/client/affiliate/withdraw' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"amount": 1.0, "gateway": "string", "gateway_info": "string", "save_default": true}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.post("https://www.gyrohosting.com/api/v1/client/affiliate/withdraw", headers=h, json={"amount": 1.0, "gateway": "string", "gateway_info": "string", "save_default": True}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/affiliate/withdraw", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"amount": 1.0, "gateway": "string", "gateway_info": "string", "save_default": true}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);PUT/affiliate/payment-method
Save affiliate payout methodScope: Affiliate/SaveAffiliatePayoutMethod
Save affiliate payout method.
Core WISECP client endpoint (Turkish reference: https://dev.wisecp.com/tr/satis-ortakligi-kazanci).
Request body
| Field | Type | Description |
|---|---|---|
gateway required | string | Ödeme yolu. |
info | string | Hedef bilgisi. Boş göndermek kaydı siler. |
Responses
| 200 | Success — data: object |
| 401 | Missing, invalid or revoked key |
| 403 | Key lacks the scope, IP not allowed, or feature disabled |
| 422 | affiliate_disabled, gateway_invalid, not_enrolled |
Code samples
curl -s -X PUT 'https://www.gyrohosting.com/api/v1/client/affiliate/payment-method' \
-H "Authorization: Bearer $GYRO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"gateway": "string", "info": "string"}'import os, uuid, requests
h = {"Authorization": "Bearer " + os.environ["GYRO_TOKEN"]}
r = requests.put("https://www.gyrohosting.com/api/v1/client/affiliate/payment-method", headers=h, json={"gateway": "string", "info": "string"}, timeout=60)
r.raise_for_status()
print(r.json()["data"])const res = await fetch("https://www.gyrohosting.com/api/v1/client/affiliate/payment-method", {
method: "PUT",
headers: {
"Authorization": `Bearer ${process.env.GYRO_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({"gateway": "string", "info": "string"}),
});
const { data, error } = await res.json();
if (!res.ok) throw new Error(`${error.code}: ${error.message}`);