Přejít na obsah
Aktuální kupón:sleva 10 %Uplatnit v objednávce

API pro vlastní panely a reselling

Ovládejte své služby z vlastního systému: stejné funkce jako v zákaznickém účtu, s klíči a oprávněními, která si sami nastavíte.

K čemu API slouží

API je pro každého, kdo chce služby StormHostu ovládat z vlastního prostředí: reselleři s vlastním panelem pro své zákazníky, firmy s interními nástroji nebo vývojáři, kteří chtějí restart serveru, zálohy nebo DNS řešit skriptem.

Přes API funguje skoro všechno, co děláte v zákaznickém účtu: zapnutí a restart, statistiky, přeinstalace, firewall, rDNS, zálohy, soubory, databáze, nastavení herních serverů a Minecraftu, Discord boti, DNS domén, změny balíčků, obnovy i platba kreditem.

Klíč jedná vaším jménem, ale jen v rozsahu oprávnění, která mu dáte. U služby, kterou s vámi někdo sdílí, navíc platí oprávnění, která vám dal její majitel.

Rychlý start

  1. V zákaznickém účtu otevřete Nastavení účtu, záložku API klíče, a vytvořte klíč. Zvolte název, oprávnění, případně služby a IP adresy, ze kterých ho budete používat, a platnost. Vytvoření potvrdíte kódem z aplikace nebo heslem.
  2. Klíč se ukáže jen jednou. Zkopírujte si ho a uložte bezpečně, třeba do proměnné prostředí na serveru. U nás je uložený jen jeho otisk, takže ho neumíme znovu zobrazit.
  3. Vyzkoušejte první požadavek. Endpoint /api/v1/key vrátí informace o klíči a funguje s každým platným klíčem:
curl https://stormhost.eu/api/v1/key \
  -H "Authorization: Bearer shk_…"

Ověření klíčem

  • Každý požadavek posílá klíč v hlavičce Authorization ve tvaru Bearer shk_… (místo toho jde použít i hlavičku X-API-Key).
  • API nepoužívá cookies. Požadavek s přihlašovací cookie zákaznického účtu odmítne, takže klíč nejde zneužít z prohlížeče.
  • Klíč nikdy nedávejte do kódu, který běží v prohlížeči nebo v mobilní aplikaci. Patří jen na váš server.
  • Po změně nebo obnově hesla a při zablokování účtu dosavadní klíče přestanou platit. Vytvořte pak nové.
Authorization: Bearer shk_ab12cd34ef56_…

Oprávnění

Klíči dejte jen oprávnění, která opravdu potřebuje. Chybějící oprávnění API odmítne odpovědí 403 s kódem insufficient_scope a názvem potřebného oprávnění v poli requiredScope.

OprávněníCo povoluje
account:readÚdaje účtu (jen čtení)
services:readSeznam služeb, stav a statistiky
services:powerZapnout, vypnout, restartovat
services:consoleKonzole
services:networkSíť: rDNS, privátní síť, adresy
services:firewallFirewall
services:filesSoubory, světy, pluginy a módy
services:databaseDatabáze
services:backupsZálohy a obnova
services:settingsNastavení služby (hry, boti, plánovač, upozornění, ISO)
services:secretsCitlivé: přeinstalace, hesla, SFTP, kód pro převod doményjen s omezením na IP adresy
domains:readDNS záznamy (jen čtení)
domains:writeDNS záznamy a nameservery (úpravy)
billing:readDoklady a kredit (jen čtení)
billing:writeObjednávky změn, obnovy a platba kreditem

Omezení na služby a IP adresy

Klíč můžete omezit na vybrané služby. K ostatním službám se pak nedostane a API odpoví 404, jako by neexistovaly. Omezený klíč nemá přístup k dokladům a kreditu účtu. Bez omezení platí pro všechny vaše služby, i ty budoucí.

Klíč můžete omezit na IP adresy nebo rozsahy (např. 203.0.113.10 nebo 203.0.113.0/24, nejvýš 20). Z jiné adresy API odpoví 403 s kódem ip_not_allowed. Citlivé oprávnění services:secrets jde jen s tímto omezením.

Platnost klíče volíte při vytvoření (30 až 365 dní, nebo bez omezení). Klíč můžete kdykoli odvolat, přestane platit okamžitě.

Požadavky a odpovědi

  • Adresa API je https://stormhost.eu/api/v1. Všechny odpovědi jsou JSON v kódování UTF-8, kromě stahování souborů a PDF.
  • Požadavky s tělem (POST, PUT, PATCH, DELETE) posílejte jako JSON s hlavičkou Content-Type: application/json.
  • Jazyk hlášek zvolíte parametrem ?locale=cs, en, sk, pl nebo de, u zápisů i polem locale v těle. Bez něj odpovídáme česky.
  • Identifikátor služby {id} najdete v seznamu služeb (GET /api/v1/services) nebo v adrese služby v zákaznickém účtu.
  • Úspěšná odpověď má stav 200. Chyba má stav 4xx nebo 5xx a v těle pole error (text pro člověka) a obvykle i code (strojový kód).
{
  "error": "This API key lacks the services:power scope.",
  "code": "insufficient_scope",
  "requiredScope": "services:power"
}

Chyby

Chyby společné všem funkcím. Chyby jednotlivých funkcí najdete u nich v přehledu.

StavKódVýznam
400cookies_not_allowedPožadavek nese cookies. API se používá jen s klíčem.
401missing_keyChybí klíč v hlavičce Authorization.
401invalid_keyKlíč je neplatný, prošlý nebo odvolaný.
403ip_not_allowedKlíč nejde použít z této IP adresy.
403insufficient_scopeKlíč nemá potřebné oprávnění (pole requiredScope).
403email_unverifiedE-mail účtu není ověřený.
404not_foundNeznámá adresa, nebo služba, ke které klíč nemá přístup.
400—Funkce není pro tento typ služby (třeba nastavení Minecraftu u VPS).
409—Služba není aktivní (čeká na založení, je pozastavená nebo zrušená).
405method_not_allowedMetoda není povolená, hlavička Allow uvádí povolené.
429rate_limitedPřekročený limit požadavků, opakujte po době v hlavičce Retry-After.
503unavailableSlužba je dočasně nedostupná, zkuste to za chvíli.

Limity

  • Jeden klíč smí poslat nejvýš 300 požadavků za minutu (všechny funkce dohromady).
  • Některé funkce mají vlastní, přísnější limit stejně jako v zákaznickém účtu, například zapnutí a restart služby 5 za minutu.
  • Po překročení limitu API odpoví 429 a hlavička Retry-After řekne, za kolik sekund to zkusit znovu. Opakované neplatné klíče z jedné IP adresy se dočasně blokují.
  • Aktivních klíčů může mít účet nejvýš 20.

Ukázky kódu

Ukázky ověří klíč a vypíšou služby. Klíč čtou z proměnné prostředí STORMHOST_API_KEY. Typický postup resellera: vypsat služby, zjistit stav a podle potřeby službu restartovat.

curl

curl https://stormhost.eu/api/v1/key \
  -H "Authorization: Bearer $STORMHOST_API_KEY"

curl "https://stormhost.eu/api/v1/services?status=active" \
  -H "Authorization: Bearer $STORMHOST_API_KEY"

curl -X POST https://stormhost.eu/api/v1/services/SERVICE_ID/power \
  -H "Authorization: Bearer $STORMHOST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"restart"}'

JavaScript (Node.js)

const API = "https://stormhost.eu/api/v1";
const headers = { Authorization: `Bearer ${process.env.STORMHOST_API_KEY}` };

const res = await fetch(`${API}/services`, { headers });
if (!res.ok) throw new Error((await res.json()).error);
const { data } = await res.json();

for (const s of data) console.log(s.id, s.name, s.status);

await fetch(`${API}/services/${data[0].id}/power`, {
  method: "POST",
  headers: { ...headers, "Content-Type": "application/json" },
  body: JSON.stringify({ action: "restart" }),
});

PHP

<?php
$api = "https://stormhost.eu/api/v1";
$key = getenv("STORMHOST_API_KEY");

function call(string $method, string $url, string $key, ?array $body = null): array {
    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_CUSTOMREQUEST => $method,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => ["Authorization: Bearer $key", "Content-Type: application/json"],
        CURLOPT_POSTFIELDS => $body ? json_encode($body) : null,
    ]);
    $out = json_decode(curl_exec($ch), true);
    curl_close($ch);
    return $out;
}

$services = call("GET", "$api/services", $key)["data"];
call("POST", "$api/services/{$services[0]['id']}/power", $key, ["action" => "restart"]);

Python

import os, requests

API = "https://stormhost.eu/api/v1"
s = requests.Session()
s.headers["Authorization"] = f"Bearer {os.environ['STORMHOST_API_KEY']}"

services = s.get(f"{API}/services").json()["data"]
for svc in services:
    print(svc["id"], svc["name"], svc["status"])

r = s.post(f"{API}/services/{services[0]['id']}/power", json={"action": "restart"})
r.raise_for_status()

Přehled funkcí

U každé funkce je metoda, adresa, potřebné oprávnění, parametry a ukázka odpovědi. Hodnoty v ukázkách jsou smyšlené.

Klíč a účet

GET/keyInformace o API klíči

Vrátí název klíče, jeho oprávnění, omezení na služby a IP adresy a platnost. Nepotřebuje žádné oprávnění, hodí se k ověření klíče.

Oprávnění: –

Ukázka odpovědi

{
  "name": "Můj panel",
  "key": "shk_a1b2c3d4_…",
  "scopes": [
    "services:read",
    "services:power"
  ],
  "serviceIds": [],
  "allowedIps": [
    "203.0.113.10"
  ],
  "expiresAt": null,
  "createdAt": "2026-10-01T08:00:00.000Z"
}

Možné chyby

  • 401invalid_key Klíč je neplatný, vypršel nebo byl odvolán.
GET/meÚdaje o účtu

Vrátí základní údaje účtu, ke kterému klíč patří: e-mail, jméno, firmu, IČO, DIČ a zemi.

Oprávnění: account:read

Ukázka odpovědi

{
  "id": "clx9k2m4p0000cus01abcdef",
  "email": "[email protected]",
  "firstName": "Jan",
  "lastName": "Novák",
  "companyName": null,
  "ico": null,
  "dic": null,
  "country": "CZ",
  "emailVerified": true,
  "createdAt": "2026-03-12T09:30:00.000Z"
}

Možné chyby

  • 401invalid_key Účet klíče nebyl nalezen.

Služby

GET/overview/metricsOkamžité metriky služeb

Vrátí aktuální stav a využití až 8 služeb najednou: u VPS a herních serverů napájení, procesor, paměť a dobu běhu, u Minecraftu hráče, u rackhousingu příkon, u domén datum expirace. Když data nejdou zjistit, služba má state: unavailable s důvodem v reason.

Oprávnění: services:read

Parametry v adrese

NázevTypPovinnéPopis
idsstringneID služeb oddělená čárkou, nejvýš 8. Bez parametru vrátí prvních 8 služeb. Neznámá ID se tiše vynechají. Klíč omezený na vybrané služby smí poslat jen jejich ID.
localestringneJazyk chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka odpovědi

{
  "at": "2026-11-07T10:00:00.000Z",
  "ttlMs": 2500,
  "truncated": false,
  "services": [
    {
      "serviceId": "clx9k2m4p0000svc01abcdef",
      "sampledAt": "2026-11-07T09:59:58.000Z",
      "kind": "vps",
      "state": "ok",
      "power": "running",
      "cpuPercent": 12.5,
      "cpuAt": "2026-11-07T09:59:00.000Z",
      "memUsedMib": 1536,
      "memTotalMib": 4096,
      "uptimeSeconds": 864000,
      "cpuSeries": [
        {
          "t": 1794045540000,
          "v": 11.2
        },
        {
          "t": 1794045600000,
          "v": 12.5
        }
      ]
    },
    {
      "serviceId": "clx9k2m4p0001svc02abcdef",
      "sampledAt": "2026-11-07T09:59:58.000Z",
      "kind": "game",
      "state": "ok",
      "power": "running",
      "cpuPercent": 34.1,
      "memUsedMib": 2900,
      "memTotalMib": 6144,
      "uptimeSeconds": 7200,
      "players": {
        "state": "ok",
        "online": 5,
        "max": 20,
        "at": "2026-11-07T09:55:00.000Z",
        "stale": false
      }
    },
    {
      "serviceId": "clx9k2m4p0002svc03abcdef",
      "sampledAt": "2026-11-07T09:59:58.000Z",
      "kind": "domain",
      "state": "ok",
      "expiresOn": "2027-05-01"
    },
    {
      "serviceId": "clx9k2m4p0003svc04abcdef",
      "sampledAt": "2026-11-07T09:59:58.000Z",
      "kind": "vps",
      "state": "unavailable",
      "reason": "provider"
    }
  ]
}

Možné chyby

  • 404not_found Klíč je omezený na vybrané služby a ids obsahuje jinou službu.
  • 429rate_limited Překročený limit 40 dotazů za minutu.
  • 503unavailable Seznam služeb teď nejde načíst. Zkuste to za pár sekund.
GET/servicesSeznam služeb

Vrátí vaše služby i služby, které s vámi někdo sdílí (role member, u nich bez ceny a s vašimi oprávněními). Klíč omezený na vybrané služby vidí jen je.

Oprávnění: services:read

Parametry v adrese

NázevTypPovinnéPopis
statusstringneFiltr podle stavu: PENDING, ACTIVE, SUSPENDED nebo TERMINATED (na velikosti písmen nezáleží).
localestringneJazyk názvů služeb: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka odpovědi

{
  "data": [
    {
      "id": "clx9k2m4p0000svc01abcdef",
      "name": "VPS Start",
      "type": "VPS",
      "kind": "vps",
      "status": "ACTIVE",
      "role": "owner",
      "plan": "vps-start",
      "address": "203.0.113.25",
      "priceCzk": 249,
      "currency": "CZK",
      "expiresAt": "2026-12-01T00:00:00.000Z",
      "createdAt": "2026-06-01T10:00:00.000Z"
    },
    {
      "id": "clx9k2m4p0001svc02abcdef",
      "name": "Minecraft server",
      "type": "GAME_SERVER",
      "kind": "game",
      "status": "ACTIVE",
      "role": "member",
      "permissions": [
        "power",
        "console"
      ],
      "plan": null,
      "address": "mc.example.com",
      "priceCzk": null,
      "currency": "CZK",
      "expiresAt": "2026-11-20T00:00:00.000Z",
      "createdAt": "2026-08-15T12:00:00.000Z"
    }
  ]
}
GET/services/{id}Detail služby

Vrátí jednu službu ve stejném tvaru jako seznam služeb. Funguje i pro pozastavené a ukončené služby.

Oprávnění: services:read

Parametry v adrese

NázevTypPovinnéPopis
localestringneJazyk názvu služby a chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka odpovědi

{
  "data": {
    "id": "clx9k2m4p0000svc01abcdef",
    "name": "VPS Start",
    "type": "VPS",
    "kind": "vps",
    "status": "ACTIVE",
    "role": "owner",
    "plan": "vps-start",
    "address": "203.0.113.25",
    "priceCzk": 249,
    "currency": "CZK",
    "expiresAt": "2026-12-01T00:00:00.000Z",
    "createdAt": "2026-06-01T10:00:00.000Z"
  }
}

Možné chyby

  • 404 Služba neexistuje, nepatří vám nebo na ni klíč nemá přístup.
  • 400 Tento druh služby API nepodporuje.
  • 403mfa_required Vlastník sdílené služby vyžaduje dvoufázové ověření, které na účtu nemáte zapnuté.

Služby obecně

POST/services/{id}/console-tokenToken pro připojení ke konzoli

Vydá jednorázový token platný 30 s pro websocket konzole VPS (VNC nebo terminál) nebo herního serveru. Konzole otevřená tokenem z API běží nejdéle asi minutu; jen aktivní služba, limit 10 za minutu.

Oprávnění: services:console

Tělo požadavku (JSON)

NázevTypPovinnéPopis
modestringanoJen u VPS: vnc nebo term. U herního serveru se nečte.

Ukázka těla

{
  "mode": "vnc"
}

Ukázka odpovědi

{
  "token": "eyJhbGciOi…example",
  "password": "example-rfb-ticket"
}

Možné chyby

  • 400 U VPS chybí nebo je neplatná hodnota mode.
  • 403 Chybí právo Konzole u sdílené služby.
  • 404 Služba nenalezena nebo u ní konzole není.
  • 409 Služba není aktivní nebo je VPS zamčená (obnova ze zálohy).
  • 412NOT_PROVISIONED Server ještě není připravený.
  • 429 Víc než 10 tokenů za minutu.
GET/services/{id}/crashRozbor pádu a logu serveru

Rozebere log, crash report nebo výpis konzole herního serveru či bota a vrátí nálezy s návrhy řešení. Nic na serveru nemění; nálezy obsahují id a parametry, ne hotové texty. Limit 10 rozborů za minutu na službu.

Oprávnění: services:read

Parametry v adrese

NázevTypPovinnéPopis
sourcestringneauto (výchozí), latest, crash-report, console nebo file.
namestringneSoubor pro source=file, např. logs/latest.log, crash-reports/crash-….txt nebo hs_err_pid….log (max. 120 znaků).
liststringnefiles vrátí seznam souborů, které jde rozebrat (nejvýš 50).
langstringneJazyk hlášek: cs, en, sk, pl nebo de.
tplstringne1 = povolit i návrhy, které pošlou pevný příkaz do konzole.

Ukázka odpovědi

{
  "result": {
    "v": 1,
    "kind": "mc",
    "findings": [
      {
        "id": "mc.oom",
        "sev": "critical",
        "p": {
          "heapMb": 2048
        },
        "evidence": [
          {
            "line": 412,
            "text": "java.lang.OutOfMemoryError: Java heap space"
          }
        ],
        "fix": {
          "type": "recalc-memory"
        },
        "alt": [
          {
            "type": "upgrade"
          }
        ]
      }
    ],
    "rootCause": {
      "cls": "java.lang.OutOfMemoryError",
      "msg": "Java heap space",
      "line": 412
    },
    "stats": {
      "lines": 1830,
      "truncated": false,
      "ms": 42,
      "timedOut": false,
      "crashReport": false
    }
  },
  "sources": [
    {
      "kind": "log",
      "name": "logs/latest.log",
      "mtime": 1762508000,
      "truncated": false
    }
  ]
}

Možné chyby

  • 400bad-request Neplatný parametr. Kód bad-name: tenhle soubor rozebrat nejde.
  • 403forbidden Chybí právo Konzole nebo Soubory u sdílené služby.
  • 404no-source Log se nenašel, server možná ještě neběžel.
  • 412not-ready Server ještě není připravený.
  • 413too-large Log je na rozbor příliš velký (nad 16 MiB).
  • 429rate Překročený limit. Kód busy: právě běží rozbory jiných serverů.
  • 502failed Log se nepodařilo načíst.
GET/services/{id}/databaseDatabázový server na VPS a přehled

Zjistí, jestli je na VPS MariaDB/MySQL nebo PostgreSQL, a po připojení vrátí verzi, databáze a uživatele. Jen VPS.

Oprávnění: services:database

Parametry v adrese

NázevTypPovinnéPopis
localestringneJazyk důvodu v connectError: cs, en, sk, pl nebo de.

Ukázka odpovědi

{
  "detection": {
    "mysql": {
      "installed": true,
      "listening": true
    },
    "postgres": {
      "installed": false,
      "listening": false
    },
    "os": {
      "id": "debian",
      "like": "",
      "name": "Debian GNU/Linux 12 (bookworm)"
    },
    "canAutoInstall": true,
    "install": {
      "running": false,
      "engine": null,
      "exitCode": null,
      "logTail": null
    }
  },
  "config": {
    "engine": "mysql",
    "port": 3306,
    "username": "stormhost_panel",
    "auto": true
  },
  "overview": {
    "version": "10.11.6-MariaDB",
    "databases": [
      {
        "name": "shop",
        "sizeBytes": 5242880,
        "tables": 14,
        "system": false
      }
    ],
    "users": [
      {
        "name": "shop",
        "host": "localhost",
        "databases": [
          "shop"
        ],
        "system": false
      }
    ]
  },
  "connectError": null
}

Možné chyby

  • 403 Chybí oprávnění Databáze.
  • 401AUTH_FAILED VPS odmítl přihlašovací údaje.
  • 409HOST_KEY_CHANGED Otisk SSH klíče VPS se změnil (nový v presentedHostKey); potvrďte ho akcí trustHostKey.
  • 412NO_TARGET VPS zatím nemá adresu nebo přístupové údaje (také NO_CREDENTIALS).
  • 502UNREACHABLE VPS není dostupný (také TIMEOUT, FAILED).
POST/services/{id}/databaseInstalace, připojení, databáze a uživatelé

Spravuje databázový server na VPS podle pole action. Instalace běží na pozadí (jen Debian/Ubuntu); smazání databáze nebo uživatele je nevratné. Vygenerované heslo se vrátí jen jednou.

Oprávnění: services:database

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanoinstall, connectAuto, connectManual, disconnect, createDatabase, dropDatabase, createUser, dropUser, setPassword nebo grant.
enginestringneinstall, connectAuto, connectManual: mysql nebo postgres. connectAuto založí účet panelu přes lokální přístup roota.
portintegerneconnectManual: port databázového serveru.
usernamestringneconnectManual: uživatel, pod kterým se panel připojí.
passwordstringneconnectManual: heslo (povinné). createUser, setPassword: nové heslo 8–128 znaků; bez něj se vygeneruje.
namestringneDatabázové akce: název databáze nebo uživatele, písmena bez diakritiky, číslice a podtržítko, nejvýš 63 znaků, nezačíná číslicí.
createUserbooleannecreateDatabase: založit i stejnojmenného uživatele s plnými právy.
hoststringnecreateDatabase, createUser (MySQL): localhost (výchozí) nebo %. dropUser: konkrétní host, jinak všechny.
databasestringnecreateUser (nepovinné), grant (povinné): databáze, ke které uživatel dostane plná práva.

Ukázka těla

{
  "action": "createDatabase",
  "name": "shop",
  "createUser": true,
  "host": "localhost"
}

Ukázka odpovědi

{
  "ok": true,
  "username": "shop",
  "password": "<generated>"
}

Možné chyby

  • 400 Neplatný požadavek, vyhrazený název, instalace už běží, systém neumí automatickou instalaci nebo chyba z databázového serveru.
  • 412 Databázový server ještě není připojený.
  • 403 Chybí oprávnění Databáze.
  • 500 Vnitřní chyba (v odpovědi je ref pro podporu).
  • 401AUTH_FAILED VPS odmítl přihlašovací údaje.
  • 409HOST_KEY_CHANGED Otisk SSH klíče VPS se změnil (nový v presentedHostKey); potvrďte ho akcí trustHostKey.
  • 412NO_TARGET VPS zatím nemá adresu nebo přístupové údaje (také NO_CREDENTIALS).
  • 502UNREACHABLE VPS není dostupný (také TIMEOUT, FAILED).
GET/services/{id}/database/browseTabulky a řádky databáze na VPS

Bez table vrátí tabulky databáze s odhadem počtu řádků a velikostí. S table vrátí řádky po 50. Jen VPS s připojeným databázovým serverem.

Oprávnění: services:database

Parametry v adrese

NázevTypPovinnéPopis
dbstringanoNázev databáze.
tablestringneNázev tabulky; bez něj se vrátí seznam tabulek.
schemastringnePostgreSQL: schéma tabulky, výchozí public.
pageintegerneStránka od 0, po 50 řádcích.

Ukázka odpovědi

{
  "columns": [
    "id",
    "name",
    "created_at"
  ],
  "rows": [
    [
      "1",
      "Alice",
      "2026-10-01 12:00:00"
    ],
    [
      "2",
      "Bob",
      "2026-10-03 08:30:00"
    ]
  ],
  "page": 0,
  "pageSize": 50,
  "total": 2
}

Možné chyby

  • 400 Neplatný název nebo chyba z databázového serveru.
  • 412 Databázový server ještě není připojený.
  • 403 Chybí oprávnění Databáze.
  • 401AUTH_FAILED VPS odmítl přihlašovací údaje.
  • 409HOST_KEY_CHANGED Otisk SSH klíče VPS se změnil (nový v presentedHostKey); potvrďte ho akcí trustHostKey.
  • 412NO_TARGET VPS zatím nemá adresu nebo přístupové údaje (také NO_CREDENTIALS).
  • 502UNREACHABLE VPS není dostupný (také TIMEOUT, FAILED).
POST/services/{id}/database/querySpustit SQL dotaz na VPS

Spustí SQL dotaz pod účtem, kterým se panel připojuje k databázovému serveru VPS. Vrátí nejvýš 500 řádků, limit 25 s. Dotaz může data i měnit nebo mazat.

Oprávnění: services:database

Tělo požadavku (JSON)

NázevTypPovinnéPopis
sqlstringanoSQL dotaz, nejvýš 100 000 znaků.
dbstringneDatabáze, ve které dotaz poběží.

Ukázka těla

{
  "db": "shop",
  "sql": "SELECT id, name FROM customers ORDER BY id LIMIT 10"
}

Ukázka odpovědi

{
  "columns": [
    "id",
    "name"
  ],
  "rows": [
    [
      "1",
      "Alice"
    ],
    [
      "2",
      "Bob"
    ]
  ],
  "rowCount": 2,
  "affectedRows": null,
  "truncated": false,
  "command": "SELECT",
  "durationMs": 7
}

Možné chyby

  • 400 Neplatný požadavek nebo chyba z databázového serveru.
  • 412 Databázový server ještě není připojený.
  • 403 Chybí oprávnění Databáze.
  • 429 Nejvýš 60 dotazů za minutu.
  • 401AUTH_FAILED VPS odmítl přihlašovací údaje.
  • 409HOST_KEY_CHANGED Otisk SSH klíče VPS se změnil (nový v presentedHostKey); potvrďte ho akcí trustHostKey.
  • 412NO_TARGET VPS zatím nemá adresu nebo přístupové údaje (také NO_CREDENTIALS).
  • 502UNREACHABLE VPS není dostupný (také TIMEOUT, FAILED).
GET/services/{id}/filesVýpis složky na serveru

Vypíše obsah složky na VPS (přes SFTP) nebo na herním serveru či Discord botovi, nejvýš 5000 položek. U VPS přidá přístupové údaje bez hesla.

Oprávnění: services:files

Parametry v adrese

NázevTypPovinnéPopis
pathstringneAbsolutní cesta ke složce. Výchozí / u her a botů, domovská složka uživatele u VPS.

Ukázka odpovědi

{
  "path": "/home/app",
  "entries": [
    {
      "name": "logs",
      "type": "dir",
      "size": 4096,
      "mtime": 1762500000,
      "mode": "drwxr-xr-x",
      "owner": "app",
      "group": "app"
    },
    {
      "name": "config.yml",
      "type": "file",
      "size": 1832,
      "mtime": 1762489123,
      "mode": "-rw-r--r--",
      "owner": "app",
      "group": "app"
    },
    {
      "name": "current",
      "type": "link",
      "size": 12,
      "mtime": 1762400000,
      "mode": "lrwxrwxrwx",
      "owner": "app",
      "group": "app",
      "linkTarget": "/srv/releases/42",
      "linkType": "dir"
    }
  ],
  "truncated": false,
  "access": {
    "host": "203.0.113.20",
    "port": 22,
    "username": "root",
    "customCredentials": false,
    "hasDefaultPassword": true,
    "hostKey": "SHA256:AbCdEfGhIjKlMnOpQrStUvWxYz0123456789abcdefg"
  }
}

Možné chyby

  • 400 Neplatná cesta nebo chyba SFTP.
  • 403 Chybí oprávnění Soubory.
  • 404 Složka na herním serveru neexistuje.
  • 401AUTH_FAILED VPS odmítl přihlašovací údaje.
  • 409HOST_KEY_CHANGED Otisk SSH klíče VPS se změnil (nový v presentedHostKey); potvrďte ho akcí trustHostKey.
  • 412NO_TARGET VPS zatím nemá adresu nebo přístupové údaje (také NO_CREDENTIALS).
  • 502UNREACHABLE VPS není dostupný (také TIMEOUT, FAILED).
POST/services/{id}/filesVytvořit, přejmenovat, upravit nebo smazat soubory

Provede souborovou akci na VPS, herním serveru nebo Discord botovi podle pole action. Mazání je nevratné; u VPS maže složky i s obsahem. Nahrávání souborů přes API nejde, použijte SFTP.

Oprávnění: services:files

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanomkdir, touch, rename, delete, chmod, write; jen VPS a jen vlastník: credentials, resetCredentials, trustHostKey; jen hry a boti: compress, decompress.
pathstringnemkdir, touch, rename, chmod, write, decompress: absolutní cesta k položce.
tostringnerename: nová absolutní cesta.
pathsstring[]nedelete: 1–200 absolutních cest.
modestringnechmod: práva osmičkově, 3–4 číslice (např. 644).
contentstringnewrite: celý nový obsah souboru v UTF-8, nejvýš 2 MB.
usernamestringnecredentials: SSH uživatel pro správce souborů (místo root).
passwordstringnecredentials: heslo SSH uživatele, uloží se šifrovaně po úspěšném přihlášení.
portintegernecredentials: SSH port 1–65535.
fingerprintstringnetrustHostKey: nový otisk klíče ve tvaru SHA256:….
dirstringnecompress: složka, ve které jsou položky k zabalení.
namesstring[]necompress: 1–200 jmen ze složky dir.
archiveNamestringnecompress: název archivu .tar.gz, nejvýš 120 znaků.
intostringnedecompress: here (výchozí) nebo newFolder.
folderNamestringnedecompress: název nové složky, nejvýš 120 znaků.
localestringneJazyk hlášek: cs, en, sk, pl nebo de. Výchozí cs.

Ukázka těla

{
  "action": "write",
  "path": "/server.properties",
  "content": "motd=Můj server\nmax-players=20\n"
}

Ukázka odpovědi

{
  "ok": true
}

Možné chyby

  • 400 Neplatný požadavek, cesta nebo název; systémové složky a /proc, /sys, /dev měnit nejde.
  • 403 Přístupové údaje mění jen vlastník; nebo chybí oprávnění Soubory.
  • 409 Soubor nebo složka s tímto názvem už existuje.
  • 409JOB_RUNNING Na Minecraft serveru běží změna softwaru nebo instalace modpacku.
  • 409ARCHIVE_BUSY Probíhá jiné balení nebo rozbalování.
  • 413 Obsah pro write je větší než 2 MB.
  • 429 Nejvýš 10 balení a rozbalení za 10 minut.
  • 401AUTH_FAILED VPS odmítl přihlašovací údaje.
  • 409HOST_KEY_CHANGED Otisk SSH klíče VPS se změnil (nový v presentedHostKey); potvrďte ho akcí trustHostKey.
  • 412NO_TARGET VPS zatím nemá adresu nebo přístupové údaje (také NO_CREDENTIALS).
  • 502UNREACHABLE VPS není dostupný (také TIMEOUT, FAILED).
GET/services/{id}/files/downloadStáhnout soubor nebo přečíst text

Stáhne soubor z VPS, herního serveru nebo Discord bota. S as=text vrátí obsah textového souboru v UTF-8 jako JSON, nejvýš 1 MB.

Oprávnění: services:files

Parametry v adrese

NázevTypPovinnéPopis
pathstringanoAbsolutní cesta k souboru.
asstringnetext = vrátit obsah jako JSON místo stažení.

Ukázka odpovědi

{
  "path": "/server.properties",
  "content": "motd=Můj server\nmax-players=20\n",
  "eol": "lf",
  "bom": false
}

Možné chyby

  • 400 Neplatná cesta, nejde o běžný soubor, nebo jde o /proc, /sys, /dev na VPS.
  • 413TOO_LARGE as=text: soubor je větší než 1 MB.
  • 415BINARY as=text: soubor není text v UTF-8.
  • 403 Chybí oprávnění Soubory.
  • 401AUTH_FAILED VPS odmítl přihlašovací údaje.
  • 409HOST_KEY_CHANGED Otisk SSH klíče VPS se změnil (nový v presentedHostKey); potvrďte ho akcí trustHostKey.
  • 412NO_TARGET VPS zatím nemá adresu nebo přístupové údaje (také NO_CREDENTIALS).
  • 502UNREACHABLE VPS není dostupný (také TIMEOUT, FAILED).
GET/services/{id}/liveAktuální stav a využití serveru

Vrátí stav napájení a aktuální využití CPU, RAM, disku a sítě VPS nebo herního serveru. Pro průběžné sledování použijte live/stream; když stav zjistit nejde, odpověď je 200 s ok: false.

Oprávnění: services:read

Parametry v adrese

NázevTypPovinnéPopis
pollstringneHodnota live pro opakované dotazy (po 2 s), odpověď jde z posledního živého vzorku.

Ukázka odpovědi

{
  "ok": true,
  "status": {
    "status": "ACTIVE",
    "details": {
      "vmStatus": "running",
      "gameState": null,
      "cpuPercent": 12.4,
      "memUsedMib": 1840,
      "memTotalMib": 4096,
      "diskUsedGb": 18.2,
      "diskTotalGb": 60,
      "netinMbps": 0.42,
      "netoutMbps": 1.1,
      "uptimeSeconds": 86400,
      "diskVolumes": [
        {
          "mountpoint": "/",
          "usedBytes": 19542261760,
          "totalBytes": 64424509440
        }
      ],
      "netInBps": 420000,
      "netOutBps": 1100000,
      "diskReadBytesPerSec": 0,
      "diskWriteBytesPerSec": 24576
    }
  }
}

Možné chyby

  • 403mfa_required Vlastník služby vyžaduje u členů dvoufázové ověření.
  • 404 Služba nenalezena.
  • 429 Víc než 240 dotazů za minutu.
GET/services/{id}/live/streamŽivé statistiky přes SSE

Otevře proud Server-Sent Events se vzorky využití VPS nebo herního serveru zhruba každou sekundu (hello, backfill, sample, disk, status, unavailable, end). Spojení s API klíčem skončí asi po minutě událostí end, pak se připojte znovu.

Oprávnění: services:read

Ukázka odpovědi

event: hello
data: {"v":1,"kind":"vps","intervalMs":1000,"serverNow":1762508460000}

event: sample
data: {"t":1762508461000,"power":"running","vmStatus":"running","gameState":null,"cpuPercent":8.3,"memUsedMib":1840,"memTotalMib":4096,"netInBps":420000,"netOutBps":1100000,"diskReadBytesPerSec":0,"diskWriteBytesPerSec":24576,"uptimeSeconds":86401}

event: end
data: {"reason":"rotate"}

Možné chyby

  • 403mfa_required Vlastník služby vyžaduje u členů dvoufázové ověření.
  • 404 Služba nenalezena.
  • 200 Ostatní problémy přijdou jako událost end s důvodem: unsupported, busy (s retryInMs), revoked, inactive, moved, rotate.
PATCH/services/{id}/namePřejmenování služby

Nastaví vlastní název služby, který se pak vrací v poli name (productName zůstane název tarifu). null nebo prázdný řetězec vrátí původní název. Jen vlastník služby.

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
namestring | nullanoNový název, nejvýš 60 znaků.
localestringneJazyk chybových hlášek (cs, en, sk, pl, de).

Ukázka těla

{
  "name": "Survival server"
}

Ukázka odpovědi

{
  "name": "Survival server"
}

Možné chyby

  • 400invalid Název je delší než 60 znaků nebo tělo obsahuje jiná pole.
  • 404not_allowed Služba nepatří vašemu účtu.
GET/services/{id}/outletsStav zásuvek PDU a události

Vrátí stav zásuvek rackhousingu (zapnuto, vypnuto, příkon, proud), zda je smíte ovládat, a posledních 20 událostí PDU. Jen pro rackhousing; bez zásuvek je view null.

Oprávnění: services:read

Parametry v adrese

NázevTypPovinnéPopis
beforestringneID události, od které načíst starší události (stránkování).

Ukázka odpovědi

{
  "view": {
    "canControl": true,
    "controlBlocked": null,
    "measuredAt": "2026-11-07T09:41:00.000Z",
    "stale": false,
    "outlets": [
      {
        "n": 3,
        "state": "on",
        "pending": false,
        "powerW": 120,
        "currentA": 0.52
      }
    ],
    "events": [
      {
        "id": "clx9k2m4p0001",
        "at": "2026-11-06T18:12:00.000Z",
        "kind": "command",
        "severity": "info",
        "outlet": 3,
        "action": "reboot",
        "result": "ok",
        "actorType": "customer",
        "actor": "vy",
        "serviceRef": "#A1B2C3",
        "message": "Restart zásuvky 3 — provedeno."
      }
    ],
    "eventsMore": false,
    "eventsAvailable": true
  }
}

Možné chyby

  • 400 Služba není rackhousing.
  • 404 Služba nenalezena.
POST/services/{id}/outletsZapnout, vypnout nebo restartovat zásuvky

Pošle příkaz zásuvkám PDU, které patří vaší službě rackhousingu. Funguje jen u aktivní služby, u které podpora ovládání povolila; limit 6 za minutu na účet a 5 za minutu na službu.

Oprávnění: services:power

Tělo požadavku (JSON)

NázevTypPovinnéPopis
outletsnumber[]anoČísla zásuvek 1–48 (1 až 48 položek), jen zásuvky této služby.
commandstringanoon, off, reboot nebo cancel (zruší čekající příkaz).

Ukázka těla

{
  "outlets": [
    3,
    4
  ],
  "command": "reboot"
}

Ukázka odpovědi

{
  "ok": true,
  "outlets": [
    {
      "n": 3,
      "state": "on",
      "pending": true
    },
    {
      "n": 4,
      "state": "on",
      "pending": true
    }
  ]
}

Možné chyby

  • 400not_yours Některá zásuvka k této službě nepatří. Bez kódu: neplatné tělo požadavku.
  • 403not_allowed Ovládání zásuvek u služby není zapnuté.
  • 409inactive Služba není aktivní. Kód no_config: PDU teď není dostupné.
  • 429 Překročený limit požadavků.
  • 502pdu_failed PDU příkaz neprovedlo.
GET/services/{id}/powerSpotřeba elektřiny rackhousingu

Vrátí příkon zásuvek rackhousingu proti přidělenému příkonu, kWh za tento a minulý měsíc a denní přehled. Jen pro rackhousing, data jsou z posledního měření PDU; bez zásuvek nebo dat je view null.

Oprávnění: services:read

Ukázka odpovědi

{
  "view": {
    "contractedW": 500,
    "currentW": 212,
    "measuredAt": "2026-11-07T09:41:00.000Z",
    "stale": false,
    "monthKwh": 38.4,
    "lastMonthKwh": 151.2,
    "month": {
      "y": 2026,
      "m": 11,
      "days": 30,
      "today": 7
    },
    "daily": [
      5.1,
      5.3,
      5.4,
      5.6,
      5.5,
      5.7,
      5.8,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null,
      null
    ],
    "outlets": [
      {
        "n": 3,
        "powerW": 120,
        "monthKwh": 21.6
      },
      {
        "n": 4,
        "powerW": 92,
        "monthKwh": 16.8
      }
    ]
  }
}

Možné chyby

  • 400 Služba není rackhousing.
  • 404 Služba neexistuje nebo k ní nemáte přístup.
POST/services/{id}/powerZapnout, vypnout nebo restartovat server

Zapne, vypne nebo restartuje VPS nebo herní server (i bota). Jen u aktivní služby, nejvýš 5 požadavků za minutu na službu; stav služby ve fakturaci se nemění.

Oprávnění: services:power

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanostart, stop nebo restart.

Ukázka těla

{
  "action": "restart"
}

Ukázka odpovědi

{
  "ok": true
}

Možné chyby

  • 400 Chybí nebo je neplatná hodnota action.
  • 404 Služba nenalezena, nebo u ní ovládání napájení není (např. rackhousing, web).
  • 409 Služba není aktivní, běží změna softwaru serveru nebo ještě běží obnova ze zálohy.
  • 429 Víc než 5 požadavků za minutu na službu.
  • 502 Akci se nepodařilo provést, zkuste to znovu.
GET/services/{id}/rackhousingPřehled rackhousingu

Vrátí umístění v racku, výšku, přidělený příkon, porty se stavem linky a IP adresy služby rackhousingu. Stav portů je z posledního měření, nic se při dotazu nepřepíná.

Oprávnění: services:read

Ukázka odpovědi

{
  "view": {
    "site": "Praha",
    "rack": "R12",
    "unitRange": "U20–U21",
    "heightU": 2,
    "powerW": 500,
    "ports1g": 1,
    "ports10g": 1,
    "ports": [
      {
        "port": "port 3",
        "speed": "1g",
        "speedText": "1 Gbit",
        "status": "up"
      },
      {
        "port": "port 4",
        "speed": "10g",
        "speedText": "10 Gbit",
        "status": "down"
      }
    ],
    "ipv4": [
      {
        "address": "203.0.113.10",
        "prefix": 29,
        "gateway": "203.0.113.9"
      }
    ],
    "ipv6": "2001:db8:100::/48",
    "equipment": "1× server 2U",
    "polledAt": "2026-11-07T09:40:00.000Z"
  }
}

Možné chyby

  • 400 Služba není rackhousing.
  • 404 Služba nenalezena.
GET/services/{id}/sftpPřihlašovací údaje SFTP

Vrátí adresu, port a uživatelské jméno SFTP herního serveru nebo bota; heslo se nevrací. Člen sdílené služby dostane jen owner: false. Funkce zatím není spuštěná a vrací 404.

Oprávnění: services:secrets

Parametry v adrese

NázevTypPovinnéPopis
langstringneen pro anglické hlášky, jinak česky.

Ukázka odpovědi

{
  "owner": true,
  "host": "203.0.113.40",
  "port": 2022,
  "username": "user.1a2b3c4d",
  "canSetPassword": true
}

Možné chyby

  • 404 SFTP zatím není spuštěné, nebo služba nenalezena.
  • 400 Služba není herní server ani bot.
  • 502 Údaje se nepodařilo načíst.
POST/services/{id}/sftpNastavit heslo SFTP

Nastaví zadané heslo pro SFTP herního serveru nebo bota; heslo se nikam neukládá a vlastník dostane e-mail. Jen vlastník, limit 5× za hodinu, potvrzení z portálu tu nahrazuje oprávnění services:secrets. Funkce zatím není spuštěná a vrací 404.

Oprávnění: services:secrets

Parametry v adrese

NázevTypPovinnéPopis
langstringneen pro anglické hlášky, jinak česky.

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanoVždy setPassword.
passwordstringanoNové heslo, 10–200 znaků, ne běžné ani uniklé heslo.

Ukázka těla

{
  "action": "setPassword",
  "password": "example-Sftp-Pass-2026"
}

Ukázka odpovědi

{
  "ok": true,
  "username": "user.1a2b3c4d"
}

Možné chyby

  • 400weak_password Heslo nesplňuje pravidla nebo je tělo neplatné.
  • 403insufficient_scope Klíči chybí oprávnění services:secrets. Kód not_owner: nejste vlastník.
  • 404 SFTP zatím není spuštěné.
  • 409admin_user SFTP pro tuto službu nastaví podpora. Další kódy: email_mismatch, foreign_server, inactive.
  • 429 Víc než 5 pokusů za hodinu.
  • 502failed Heslo se nepodařilo nastavit. Kód unavailable: služba teď není dostupná.

VPS a rackhousing

GET/services/{id}/backupsSeznam záloh VPS

Vrátí zálohy VPS ze všech úložišť, jen z doby současného vlastníka. Výsledek se 20 s drží v mezipaměti, limit 10 dotazů za minutu; partial: true znamená, že některé úložiště neodpovědělo. Záloha i úložiště mají neprůhledné id (storageId zálohy = id úložiště v storages); id zálohy pošlete do backups/restore.

Oprávnění: services:backups

Ukázka odpovědi

{
  "backups": [
    {
      "id": "Q2xP7rT0aN4mVb8sKe1wYg",
      "storageId": "h5Jd9LkQ2pWm0ZcR7tUv3A",
      "storageLabel": "Backup 1",
      "sizeBytes": 8589934592,
      "createdAt": 1762394400,
      "name": "vps-000001"
    }
  ],
  "storages": [
    {
      "id": "h5Jd9LkQ2pWm0ZcR7tUv3A",
      "label": "Backup 1",
      "enabled": true
    },
    {
      "id": "Xo3bN6qE8yTf1GsD4lHk9w",
      "label": "Backup 2",
      "enabled": false
    }
  ]
}

Možné chyby

  • 403 Chybí právo Zálohy u sdílené služby.
  • 409 Služba není aktivní, nebo právě probíhá obnova ze zálohy.
  • 412NOT_PROVISIONED VPS ještě není připravená.
  • 429 Víc než 10 dotazů za minutu.
  • 502 Zálohy se nepodařilo načíst.
POST/services/{id}/backups/restoreObnovit VPS ze zálohy

Tvrdě vypne VPS a přepíše její disk obsahem zvolené zálohy; nevratné. U větších disků obnova doběhne na pozadí (pending: true) a VPS půjde zapnout, až skončí. Limit 3 za minutu na službu.

Oprávnění: services:backups

Tělo požadavku (JSON)

NázevTypPovinnéPopis
idstringanoid zálohy ze seznamu backups.

Ukázka těla

{
  "id": "Q2xP7rT0aN4mVb8sKe1wYg"
}

Ukázka odpovědi

{
  "ok": true,
  "pending": true,
  "message": "Obnova ze zálohy běží. VPS půjde zapnout, až skončí (u větších disků i několik minut)."
}

Možné chyby

  • 400 Chybí id.
  • 403 Záloha k této službě nepatří nebo už neexistuje.
  • 409 Služba není aktivní nebo už běží jiná obnova.
  • 429 Víc než 3 pokusy za minutu.
  • 502 Obnovu se nepodařilo spustit nebo dokončit.
GET/services/{id}/ddosDostupnost ochrany Anti-DDoS

Řekne, zda je pro IP adresy VPS dostupné nastavení ochrany Anti-DDoS. Zatím vrací vždy available: false; u sdílené služby potřebuje člen právo Síť.

Oprávnění: services:read

Ukázka odpovědi

{
  "available": false
}

Možné chyby

  • 400 Služba není VPS.
  • 409 Služba není aktivní.
GET/services/{id}/firewallPravidla firewallu VPS

Vrátí nastavení firewallu VPS a všechna pravidla včetně spravovaných (pole managed), která měnit nejdou. Hodnotu digest pošlete při úpravě pravidla.

Oprávnění: services:firewall

Ukázka odpovědi

{
  "digest": "3f2a9c0d1e5b7a8c4d6e2f1a0b9c8d7e6f5a4b3c",
  "baseline": true,
  "enabled": true,
  "ipfilter": true,
  "macfilter": true,
  "policyIn": "DROP",
  "policyOut": "ACCEPT",
  "inboundDefault": "accept",
  "scannerBlock": true,
  "ipfilterEntries": [
    "203.0.113.25",
    "2001:db8:10::/64"
  ],
  "rules": [
    {
      "pos": 0,
      "managed": "censys",
      "type": "in",
      "action": "DROP",
      "proto": "",
      "dport": "",
      "sport": "",
      "source": "+dc/censys",
      "dest": "",
      "macro": "",
      "comment": "",
      "enable": true
    },
    {
      "pos": 1,
      "managed": null,
      "type": "in",
      "action": "DROP",
      "proto": "tcp",
      "dport": "3306",
      "sport": "",
      "source": "",
      "dest": "",
      "macro": "",
      "comment": "MySQL ven ne",
      "enable": true
    },
    {
      "pos": 2,
      "managed": "allowIn",
      "type": "in",
      "action": "ACCEPT",
      "proto": "",
      "dport": "",
      "sport": "",
      "source": "",
      "dest": "+guest/ipfilter-net0",
      "macro": "",
      "comment": "",
      "enable": true
    }
  ]
}

Možné chyby

  • 403 Chybí právo Firewall u sdílené služby.
  • 409 Služba není aktivní nebo akci teď nejde provést.
  • 412 VPS ještě není připravená.
  • 502 Firewall se nepodařilo načíst.
POST/services/{id}/firewallUpravit pravidla firewallu VPS

Přidá, upraví, zapne nebo vypne, smaže či přesune vlastní pravidlo, přepne výchozí příchozí provoz nebo použije doporučené nastavení. Akce nad pozicí chtějí digest z GET; nejvýš 50 vlastních pravidel, hlášky jsou česky.

Oprávnění: services:firewall

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanoadd, update, toggle, delete, move, setInbound nebo applyBaseline.
posnumbernePro update, toggle, delete a move: pozice vlastního pravidla z GET.
digeststringnePro update, toggle, delete a move: digest z GET.
ruleobjectnePro add a update: type (in, out), action (ACCEPT, DROP, REJECT), proto ("", tcp, udp, icmp, ipv6-icmp), dport, sport (např. 22, 80,443, 25565:25570; jen TCP a UDP), source, dest (IP nebo rozsah, nejvýš 10), comment (max. 100), enable.
enablebooleannePro toggle: zapnout nebo vypnout pravidlo.
directionstringnePro move: up nebo down (jen mezi vlastními pravidly).
valuestringnePro setInbound: accept nebo drop (výchozí příchozí provoz).

Ukázka těla

{
  "action": "add",
  "rule": {
    "type": "in",
    "action": "ACCEPT",
    "proto": "tcp",
    "dport": "22",
    "source": "198.51.100.0/24",
    "comment": "SSH z kanceláře"
  }
}

Ukázka odpovědi

{
  "ok": true,
  "firewall": {
    "digest": "9b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c",
    "baseline": true,
    "enabled": true,
    "ipfilter": true,
    "macfilter": true,
    "policyIn": "DROP",
    "policyOut": "ACCEPT",
    "inboundDefault": "accept",
    "scannerBlock": true,
    "ipfilterEntries": [
      "203.0.113.25"
    ],
    "rules": []
  }
}

Možné chyby

  • 400 Neplatné tělo nebo pravidlo (port, adresa, protokol), nebo víc než 50 vlastních pravidel.
  • 403 Spravované pravidlo nejde měnit, nebo chybí právo Firewall.
  • 409 Firewall se mezitím změnil (načtěte digest znovu), služba není aktivní, běží obnova ze zálohy nebo doporučené nastavení nejde použít.
  • 502 Změnu se nepodařilo uložit.
GET/services/{id}/historyHistorie využití VPS

Vrátí průběh CPU, RAM, sítě a disku VPS za zvolené období (nejvýš 300 bodů), špičky CPU a přenos za 30 dní a od začátku měsíce. Výsledek se 20 s drží v mezipaměti, limit 30 dotazů za minutu.

Oprávnění: services:read

Parametry v adrese

NázevTypPovinnéPopis
rangestringnehour, day, week, month nebo year. Výchozí day.
langstringneen pro anglické chybové hlášky, jinak česky.

Ukázka odpovědi

{
  "range": "day",
  "points": [
    {
      "t": 1762473600,
      "cpu": 6.2,
      "ram": 44.8,
      "netIn": 52000,
      "netOut": 138000,
      "diskRead": 0,
      "diskWrite": 20480
    }
  ],
  "cpuPeak": [
    {
      "t": 1762473600,
      "cpu": 31.5
    }
  ],
  "cpu": {
    "avg": 7.1,
    "max": 64.2
  },
  "transfer30d": {
    "inBytes": 18253611008,
    "outBytes": 42949672960
  },
  "transferMonth": {
    "inBytes": 4294967296,
    "outBytes": 9663676416
  }
}

Možné chyby

  • 400 Služba není VPS.
  • 409 VPS není aktivní ani pozastavená, nebo ji teď nejde ověřit.
  • 429 Víc než 30 dotazů za minutu.
  • 502 Statistiky teď nejde načíst.
GET/services/{id}/installStav instalace VPS

Vrátí fázi instalace nebo reinstalace VPS (image, create, start, finish, done) a zda ještě běží. Hodí se pro dotazování po reinstalaci, limit 90 dotazů za minutu.

Oprávnění: services:read

Ukázka odpovědi

{
  "status": "ACTIVE",
  "phase": "finish",
  "active": true,
  "source": "reinstall",
  "restarting": false,
  "running": true,
  "reboot": true,
  "failed": false
}

Možné chyby

  • 400 Služba není VPS.
  • 404 Služba nenalezena.
  • 429 Víc než 90 dotazů za minutu.
GET/services/{id}/isoISO obrazy a připojené ISO

Vrátí katalog ISO, vaše vlastní ISO, limity, aktuálně připojené ISO s volbou bootu a stav poslední akce. Jen vlastník VPS.

Oprávnění: services:settings

Ukázka odpovědi

{
  "available": true,
  "catalog": [
    {
      "id": "clx9a0iso0001",
      "kind": "catalog",
      "name": "Debian 13 netinst",
      "osFamily": "debian",
      "sizeBytes": 754974720,
      "createdAt": "2026-10-20T08:00:00.000Z",
      "lastUsedAt": null,
      "expiresAt": null
    }
  ],
  "own": [
    {
      "id": "clx9a0iso0002",
      "kind": "custom",
      "name": "Rescue tools",
      "osFamily": null,
      "sizeBytes": 524288000,
      "createdAt": "2026-11-02T12:00:00.000Z",
      "lastUsedAt": "2026-11-03T09:00:00.000Z",
      "expiresAt": "2026-12-03T09:00:00.000Z"
    }
  ],
  "limits": {
    "count": 2,
    "maxBytes": 10737418240,
    "retentionDays": 30
  },
  "status": {
    "attached": false,
    "bootFromIso": false,
    "isoId": null,
    "name": null
  },
  "job": null
}

Možné chyby

  • 400 Služba není VPS.
  • 403 Nejste vlastník služby.
  • 409 Služba není aktivní.
POST/services/{id}/isoPřidat, připojit nebo odpojit ISO

Podle action přidá vlastní ISO z odkazu HTTPS, smaže ho, připojí ISO k VPS, přepne boot nebo ISO vysune. Připojení běží jako akce na pozadí (soubor se teprve stáhne); jen vlastník, nejvýš 2 vlastní ISO do 10 GB.

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanoadd, delete, attach, boot nebo detach.
namestringnePro add: název ISO (max. 80 znaků), jinak podle souboru.
urlstringnePro add: veřejný odkaz https:// na soubor ISO s uvedenou velikostí.
isoIdstringnePro delete a attach: ID ISO z GET.
bootbooleannePro attach a boot: true = bootovat z ISO, jinak z disku.

Ukázka těla

{
  "action": "attach",
  "isoId": "clx9a0iso0001",
  "boot": true
}

Ukázka odpovědi

{
  "ok": true,
  "job": {
    "id": "clx9r1t7w0004",
    "kind": "iso",
    "state": "running",
    "step": null,
    "startedAt": "2026-11-07T10:00:00.000Z",
    "updatedAt": "2026-11-07T10:00:00.000Z"
  }
}

Možné chyby

  • 400url Odkaz nejde použít (ne HTTPS, neveřejná síť, nad 10 GB, bez velikosti, není soubor). Další kódy: limit, attached; bez kódu neplatná action.
  • 404not_found ISO nenalezeno.
  • 409unavailable ISO teď nejsou dostupná. Bez kódu: na VPS běží jiná akce.
  • 429 Víc než 10 přidaných ISO za den.
  • 502 Akce se nepodařila.
GET/services/{id}/private-networkPrivátní sítě v lokalitě VPS

Vrátí vaše privátní sítě v lokalitě VPS, jejich členy, limity a stav této VPS v každé síti. Jen vlastník VPS.

Oprávnění: services:network

Ukázka odpovědi

{
  "enabled": true,
  "scope": "location",
  "maxNetworks": 5,
  "maxMembers": 20,
  "priceCzk": null,
  "networks": [
    {
      "id": "clx9p7net0001",
      "name": "zalohy",
      "cidr": "10.20.0.0/24",
      "prefix": 24,
      "createdAt": "2026-10-18T08:00:00.000Z",
      "members": [
        {
          "serviceId": "clx9svc000001",
          "shortId": "#000001",
          "ipv4": "203.0.113.25",
          "address": "10.20.0.1",
          "state": "active",
          "isThis": true,
          "own": true
        }
      ],
      "me": {
        "address": "10.20.0.1",
        "mac": "BC:24:11:00:00:01",
        "nicIndex": 1,
        "state": "active",
        "cloudInit": false,
        "failed": false
      },
      "canDelete": false
    }
  ]
}

Možné chyby

  • 403 Nejste vlastník služby.
  • 409 Služba není aktivní.
  • 503unavailable Privátní sítě teď nejsou k dispozici.
POST/services/{id}/private-networkZaložit, připojit nebo odpojit síť

Založí privátní síť, připojí nebo odpojí tuto VPS, nebo smaže prázdnou síť. Připojení chce zapnuté doporučené nastavení firewallu; když pendingRestart je true, změna se projeví po restartu VPS.

Oprávnění: services:network

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanocreate, attach, detach nebo delete.
namestringnePro create: název sítě, 1–40 znaků (písmena, číslice, mezera, . _ -).
cidrstringnePro create: privátní rozsah /16 až /29 začínající adresou sítě, např. 10.20.0.0/24.
networkIdstringnePro attach, detach a delete: ID sítě z GET.
addressstring|nullnePro attach: adresa VPS v síti; prázdné = první volná.
cloudInitbooleannePro attach: true = adresu zapsat i do cloud-initu VPS.

Ukázka těla

{
  "action": "attach",
  "networkId": "clx9p7net0001",
  "address": "10.20.0.5"
}

Ukázka odpovědi

{
  "ok": true,
  "address": "10.20.0.5",
  "mac": "BC:24:11:00:00:05",
  "pendingRestart": true,
  "view": {
    "enabled": true,
    "scope": "location",
    "maxNetworks": 5,
    "maxMembers": 20,
    "priceCzk": null,
    "networks": []
  }
}

Možné chyby

  • 400invalid_request Neplatné tělo. Další kódy: name_invalid, cidr_invalid, address_invalid, address_outside, address_reserved.
  • 404network_not_found Síť nenalezena. Kód not_member: VPS v síti není.
  • 409firewall_required Nejdřív použijte doporučené nastavení firewallu. Další kódy: cidr_overlap, limit_networks, limit_members, address_taken, network_full, not_empty, detaching, other_location, other_node, no_slot, vm_locked, disabled, no_vlan.
  • 412vm_not_ready VPS ještě není připravená.
  • 502apply_failed Změnu se nepodařilo dokončit.
  • 503unavailable Privátní sítě teď nejsou k dispozici.
GET/services/{id}/rdnsReverzní DNS adres VPS

Vrátí PTR záznamy IP adres VPS: aktuální, výchozí a vlastní hodnotu, a IPv6 rozsahy služby. U sdílené služby potřebuje člen právo Síť.

Oprávnění: services:network

Ukázka odpovědi

{
  "configured": true,
  "error": null,
  "entries": [
    {
      "ip": "203.0.113.25",
      "family": 4,
      "current": "mail.example.com",
      "default": "25.113.0.203.example.net",
      "custom": "mail.example.com"
    },
    {
      "ip": "2001:db8:10::2",
      "family": 6,
      "current": null,
      "default": "vps.example.net",
      "custom": null
    }
  ],
  "ranges": [
    {
      "cidr": "2001:db8:10::/64",
      "family": 6
    }
  ],
  "vmIpv6": "2001:db8:10::2"
}

Možné chyby

  • 400 Služba není VPS.
  • 403 Chybí právo Síť u sdílené služby.
  • 409 Služba není aktivní.
POST/services/{id}/rdnsNastavit nebo vrátit PTR záznam

Nastaví vlastní reverzní DNS pro IP adresu přidělenou VPS, nebo s hostname null vrátí výchozí záznam. Nejvýš 32 vlastních záznamů, limit 20 změn za minutu; hlášky jsou česky.

Oprávnění: services:network

Tělo požadavku (JSON)

NázevTypPovinnéPopis
ipstringanoIPv4 nebo IPv6 adresa služby (i z jejího IPv6 rozsahu).
hostnamestring|nullanoNázev hostitele, např. mail.example.com (max. 253 znaků); null nebo prázdné = výchozí záznam.

Ukázka těla

{
  "ip": "203.0.113.25",
  "hostname": "mail.example.com"
}

Ukázka odpovědi

{
  "ok": true,
  "ip": "203.0.113.25",
  "ptr": "mail.example.com",
  "isDefault": false
}

Možné chyby

  • 400 Neplatný název hostitele, reverzní nebo vyhrazená doména, nebo víc než 32 vlastních záznamů.
  • 403 IP adresa nepatří této službě, nebo chybí právo Síť.
  • 502 rDNS se teď nepodařilo uložit.
GET/services/{id}/reinstallSystémy pro reinstalaci VPS

Vrátí systémy, které jde na VPS nainstalovat, aktuální systém, čas poslední reinstalace a stav poslední akce. Jen vlastník služby.

Oprávnění: services:read

Ukázka odpovědi

{
  "options": [
    {
      "key": "ubuntu-2404",
      "label": "Ubuntu 24.04 LTS"
    },
    {
      "key": "debian-13",
      "label": "Debian 13"
    }
  ],
  "job": {
    "id": "clx9r1t7w0002",
    "kind": "reinstall",
    "state": "done",
    "step": null,
    "startedAt": "2026-11-01T10:00:00.000Z",
    "updatedAt": "2026-11-01T10:06:12.000Z",
    "finishedAt": "2026-11-01T10:06:12.000Z",
    "error": null
  },
  "os": "ubuntu-2404",
  "reinstalledAt": "2026-11-01T10:06:12.000Z"
}

Možné chyby

  • 400 Služba není VPS.
  • 403 Nejste vlastník služby.
  • 409 Služba není aktivní.
POST/services/{id}/reinstallPřeinstalovat VPS

Smaže disk VPS a nainstaluje zvolený systém; běží na pozadí, průběh sledujte přes install. Nové root heslo je jen v této odpovědi. Jen vlastník, nejvýš 3× za den; potvrzení z portálu tu nahrazuje oprávnění services:secrets.

Oprávnění: services:secrets

Tělo požadavku (JSON)

NázevTypPovinnéPopis
osstringanoKlíč systému z GET, např. ubuntu-2404 nebo debian-13.
sshKeysstringneVeřejné SSH klíče, jeden na řádek, nejvýš 10 (ssh-ed25519, ssh-rsa, ecdsa-…).

Ukázka těla

{
  "os": "debian-13",
  "sshKeys": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIExampleKeyExampleKeyExampleKeyExample user@laptop"
}

Ukázka odpovědi

{
  "started": true,
  "password": "example-Root-Pass-123",
  "job": {
    "id": "clx9r1t7w0003",
    "kind": "reinstall",
    "state": "running",
    "step": null,
    "startedAt": "2026-11-07T10:00:00.000Z",
    "updatedAt": "2026-11-07T10:00:00.000Z"
  }
}

Možné chyby

  • 400 Chybí nebo je neplatný systém, neplatný SSH klíč nebo víc než 10 klíčů.
  • 403insufficient_scope Klíči chybí oprávnění services:secrets, nebo nejste vlastník.
  • 409 Na VPS běží jiná akce, je v záchranném režimu, uzel je vytížený nebo reinstalace není dostupná.
  • 429 Reinstalace už proběhla 3× za posledních 24 hodin.
  • 502 Reinstalaci se nepodařilo spustit.
POST/services/{id}/reveal-secretZobrazit uložené root heslo VPS

Vrátí uložené root heslo VPS z doby založení, reinstalace nebo poslední změny. Každé zobrazení se zapíše do auditu a vlastník dostane e-mail; limit 5× za 10 minut, potvrzení z portálu tu nahrazuje oprávnění services:secrets.

Oprávnění: services:secrets

Ukázka odpovědi

{
  "password": "example-Root-Pass-789"
}

Možné chyby

  • 403insufficient_scope Klíči chybí oprávnění services:secrets. Bez kódu: chybí právo u sdílené služby.
  • 404 Služba nenalezena nebo u ní není uložené heslo.
  • 429 Víc než 5 zobrazení za 10 minut.
  • 503 Heslo teď nejde zobrazit, zkuste to znovu.
GET/services/{id}/root-passwordLze nastavit nové root heslo?

Zjistí, zda jde root heslo VPS teď změnit přes qemu-guest-agent, a když ne, vrátí důvod. Výsledek se 60 s drží v mezipaměti.

Oprávnění: services:secrets

Parametry v adrese

NázevTypPovinnéPopis
langstringneen pro anglické hlášky, jinak česky.

Ukázka odpovědi

{
  "available": false,
  "reason": "stopped",
  "message": "VPS je vypnutá. Heslo jde nastavit jen u běžící VPS."
}

Možné chyby

  • 400 Služba není VPS.
  • 403 Chybí právo Tajné údaje u sdílené služby.
  • 409 Služba není aktivní.
POST/services/{id}/root-passwordNastavit nové root heslo VPS

Vygeneruje nové root heslo, nastaví ho v běžící VPS přes qemu-guest-agent a vrátí ho jen v této odpovědi; vlastník dostane e-mail. Limit 3× za hodinu na službu a 10× za den na účet; potvrzení z portálu tu nahrazuje oprávnění services:secrets.

Oprávnění: services:secrets

Parametry v adrese

NázevTypPovinnéPopis
langstringneen pro anglické hlášky, jinak česky.

Ukázka odpovědi

{
  "password": "example-Root-Pass-456"
}

Možné chyby

  • 403insufficient_scope Klíči chybí oprávnění services:secrets. Bez kódu: chybí právo u sdílené služby.
  • 409 Heslo teď nastavit nejde; pole reason: agent_down, stopped, rescue, command_disabled, not_configured, no_permission nebo busy.
  • 429 Překročený limit 3× za hodinu nebo 10× za den.
  • 502 Agent heslo nenastavil, staré heslo platí dál (reason failed nebo unavailable).

Herní servery

GET/services/{id}/alertsNastavení upozornění na pád a výpadek

Vrátí nastavení upozornění herního serveru nebo Discord bota (e-mail, Discord webhook, události) a historii posledních upozornění. Adresa webhooku se nikdy nevrací, jen její konec. Jen pro vlastníka služby.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
langstringneJazyk hlášek: en, jinak cs.

Ukázka odpovědi

{
  "settings": {
    "enabled": true,
    "email": true,
    "discord": {
      "hint": "discord.com/api/webhooks/…ab12",
      "disabled": false
    },
    "events": {
      "crash": true,
      "down": true,
      "recovered": true,
      "cleanExit": false,
      "node": true
    },
    "includeLog": true,
    "updatedAt": "2026-11-02T18:20:00.000Z"
  },
  "history": [
    {
      "id": "alr_01",
      "at": "2026-11-06T21:14:03.000Z",
      "kind": "crash",
      "exitCode": 137,
      "oom": true,
      "reason": null,
      "cause": null,
      "suppressed": null,
      "channels": {
        "email": "sent",
        "discord": "sent"
      },
      "extra": 0,
      "downtimeMin": null
    }
  ]
}

Možné chyby

  • 403 Jen pro vlastníka služby.
POST/services/{id}/alertsUložit, otestovat nebo vypnout upozornění

Mění nastavení upozornění podle pole action. Nový Discord webhook se uloží, jen když na něj projde zkušební zpráva. Tělo nesmí obsahovat jiná pole. Jen pro vlastníka služby.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
langstringneJazyk hlášek: en, jinak cs.

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanosave, test (zkušební zpráva na uložený webhook, 1× za minutu a 5× za hodinu), removeDiscord nebo disable.
enabledbooleannesave: zapnout hlídání.
emailbooleannesave: posílat upozornění e-mailem vlastníkovi.
eventsobjectnesave: které události hlásit, klíče crash, down, recovered, cleanExit, node (boolean).
includeLogbooleannesave: přiložit konec logu.
webhookstringnesave: nová adresa Discord webhooku (https://discord.com/api/webhooks/…), nejvýš 300 znaků.

Ukázka těla

{
  "action": "save",
  "enabled": true,
  "email": true,
  "events": {
    "crash": true,
    "down": true,
    "recovered": true,
    "cleanExit": false,
    "node": true
  },
  "includeLog": true
}

Ukázka odpovědi

{
  "ok": true,
  "settings": {
    "enabled": true,
    "email": true,
    "discord": null,
    "events": {
      "crash": true,
      "down": true,
      "recovered": true,
      "cleanExit": false,
      "node": true
    },
    "includeLog": true,
    "updatedAt": "2026-11-07T10:05:00.000Z"
  }
}

Možné chyby

  • 400bad-request Neplatné tělo nebo pole navíc.
  • 400webhook Adresa není Discord webhook.
  • 400test-failed Zkušební zprávu se nepodařilo doručit.
  • 400no-webhook test: není uložený žádný webhook.
  • 400no-channel Zapnuté hlídání potřebuje e-mail nebo webhook.
  • 429rate Zkušební zprávu jde poslat jednou za minutu a 5× za hodinu.
  • 500failed Nastavení se nepodařilo uložit.
  • 403 Jen pro vlastníka služby.
GET/services/{id}/gameSíť, databáze, zálohy nebo spuštění serveru

Vrátí jednu část nastavení herního serveru nebo Discord bota podle parametru section. Hesla k databázím a tajné hodnoty proměnných dostane jen vlastník a člen s právem Tajné údaje.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
sectionstringanonetwork (porty a SFTP), databases (databáze), backups (zálohy a doplněk záloh) nebo startup (příkaz a proměnné spuštění).
localestringneJazyk hlášek při odmítnutí přístupu: cs, en, sk, pl nebo de.

Ukázka odpovědi

{
  "allocations": [
    {
      "id": 1201,
      "ip": "203.0.113.10",
      "port": 25565,
      "notes": null,
      "primary": true
    },
    {
      "id": 1202,
      "ip": "203.0.113.10",
      "port": 25566,
      "notes": "Dynmap",
      "primary": false
    }
  ],
  "limit": 3,
  "sftp": {
    "ip": "203.0.113.10",
    "port": 2022
  }
}

Možné chyby

  • 400 Chybí nebo je neznámá sekce (section).
  • 403 Chybí oprávnění k dané sekci (Síť, Databáze, Zálohy nebo Nastavení).
  • 412 Server zatím není v herním panelu dostupný.
POST/services/{id}/gameDatabáze, zálohy, proměnné, porty a reinstalace

Provede jednu akci na herním serveru nebo Discord botovi podle pole action. Obnova a smazání zálohy, smazání databáze a reinstalace jsou nevratné; reinstalace zastaví server a přepíše soubory.

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanocreateDatabase, rotateDatabasePassword, deleteDatabase, createBackup, restoreBackup, deleteBackup, lockBackup (zamkne nebo odemkne), setVariable, reinstall, addAllocation nebo removeAllocation.
namestringnecreateDatabase: název databáze, 1–48 znaků (písmena, číslice, podtržítko), povinné. createBackup: nepovinný název zálohy, nejvýš 191 znaků.
remotestringnecreateDatabase: odkud se k databázi smí připojit (IP adresa nebo %). Výchozí % = odkudkoli.
databaseIdstringnerotateDatabasePassword, deleteDatabase: id databáze z GET ?section=databases.
uuidstring (uuid)nerestoreBackup, deleteBackup, lockBackup: uuid zálohy z GET ?section=backups.
truncatebooleannerestoreBackup: před obnovou smazat všechny soubory serveru. Výchozí false.
keystringnesetVariable: název proměnné spuštění (velká písmena, číslice, podtržítko).
valuestringnesetVariable: nová hodnota, nejvýš 4096 znaků, bez řídicích znaků.
allocationIdintegerneremoveAllocation: id portu z GET ?section=network. Hlavní port odebrat nejde.
localestringneJazyk hlášek: cs, en, sk, pl nebo de. Výchozí cs.

Ukázka těla

{
  "action": "setVariable",
  "key": "MAX_PLAYERS",
  "value": "32"
}

Ukázka odpovědi

{
  "ok": true,
  "value": "32"
}

Možné chyby

  • 400 Neplatné tělo požadavku nebo název databáze.
  • 400CONTROL_CHARS Hodnota proměnné obsahuje řídicí znaky.
  • 403 Chybí oprávnění k akci; reinstalace navíc chce Soubory a Napájení.
  • 403SECRETS_REQUIRED Tajnou proměnnou smí měnit jen vlastník nebo člen s právem Tajné údaje.
  • 403FILES_REQUIRED Zdroj kódu Discord bota jde měnit jen s oprávněním Soubory.
  • 404 Záloha neexistuje.
  • 409MANAGED_VARIABLE Proměnnou spravuje StormHost, měnit ji nejde.
  • 409MC_MANAGED_VARIABLE U Minecraftu proměnnou nastavuje záložka Software.
  • 409PROTECTED_ARGUMENT Volné argumenty nesmí přepsat chráněné parametry (např. RCON).
  • 409JOB_RUNNING Na Minecraft serveru právě běží změna softwaru.
  • 409PORT_LIMIT Balíček už nemá volný port.
  • 409NO_FREE_PORT Na uzlu teď není volný port.
  • 412 Server zatím není v herním panelu dostupný.
GET/services/{id}/game/backup-downloadStáhnout zálohu herního serveru

Stáhne archiv zálohy (.tar.gz) herního serveru nebo Discord bota. Archiv obsahuje všechny soubory včetně tajných údajů, proto člen potřebuje i oprávnění Soubory.

Oprávnění: services:backups

Parametry v adrese

NázevTypPovinnéPopis
uuidstring (uuid)anouuid zálohy z GET …/game?section=backups.
localestringneJazyk hlášek při odmítnutí přístupu: cs, en, sk, pl nebo de.

Ukázka odpovědi

Binární soubor (Content-Type: application/gzip, Content-Disposition: attachment; filename="backup-….tar.gz")

Možné chyby

  • 400 Chybí nebo je neplatné uuid.
  • 403 Chybí oprávnění Zálohy nebo Soubory.
  • 404 Záloha neexistuje.
  • 502 Zálohu se nepodařilo stáhnout z herního panelu.
  • 429 Nejvýš 10 stažení za minutu.
GET/services/{id}/schedulesPlány herního serveru nebo bota

Vrátí naplánované úlohy (restart, záloha, příkaz, zapnutí nebo vypnutí) herního serveru nebo Discord bota, jejich příští a poslední běh, limity a dostupné sloty záloh.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
localestringneJazyk textů v odpovědi: en, jinak cs.

Ukázka odpovědi

{
  "schedules": [
    {
      "id": 41,
      "name": "Denní restart",
      "cron": {
        "minute": "0",
        "hour": "5",
        "dom": "*",
        "month": "*",
        "dow": "*"
      },
      "target": {
        "minute": "0",
        "hour": "5",
        "dom": "*",
        "month": "*",
        "dow": "*"
      },
      "active": true,
      "onlyWhenOnline": false,
      "processing": false,
      "stuck": false,
      "lastRunAt": "2026-11-07T04:00:00.000Z",
      "nextRunAt": "2026-11-08T04:00:00.000Z",
      "kind": "restart",
      "preset": {
        "kind": "restart",
        "repeat": {
          "kind": "daily",
          "time": "05:00"
        },
        "countdown": {
          "m5": true,
          "m1": true,
          "s10": true
        }
      },
      "origin": "portal",
      "author": "you",
      "lastResult": "ok",
      "lastResultCause": null,
      "allowed": true
    }
  ],
  "panelZone": {
    "expected": "Europe/Prague",
    "detected": "Europe/Prague",
    "ok": true,
    "preview": "Europe/Prague"
  },
  "backupSlots": 1,
  "canBackup": true,
  "backupAddonPriceCzk": 120,
  "game": "minecraft",
  "countdown": true,
  "mcVersion": "1.21.4",
  "isOwner": true,
  "permissions": {
    "console": true,
    "power": true,
    "backups": true
  },
  "limits": {
    "maxSchedules": 10,
    "nameMax": 60,
    "commandMax": 256,
    "messageMax": 100,
    "hourSteps": [
      1,
      2,
      3,
      4,
      6,
      8,
      12
    ]
  }
}

Možné chyby

  • 403 Chybí oprávnění Nastavení.
  • 412 Server zatím není v herním panelu dostupný.
POST/services/{id}/schedulesZaložit, upravit, spustit nebo smazat plán

Spravuje plány podle pole action. Na serveru je nejvýš 10 plánů; příkaz nejdřív po 15 minutách, restart a zapnutí nebo vypnutí po hodině, záloha jednou denně a jen jeden zálohový plán.

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanocreate, update, delete, toggle (zapnout nebo vypnout), run (spustit hned, nejvýš 1× za minutu) nebo unstick (uvolnit zaseknutý plán).
scheduleIdintegerneVšechny akce kromě create: id plánu z GET.
presetobjectnecreate, update: kind restart (repeat, countdown {m5, m1, s10}, message do 100 znaků), backup (repeat), command (repeat, command do 256 znaků, onlyWhenOnline) nebo power (repeat, signal start|stop).
preset.repeatobjectneOpakování: {kind: daily, time: "HH:MM"}, {kind: weekly, days: [0–6, 0 = neděle], time}, {kind: hours, every: 1|2|3|4|6|8|12, minute: 0–59} nebo {kind: cron, expr}.
namestringnecreate, update: název plánu, nejvýš 60 znaků.
ackbooleannecreate, update: u zálohového plánu musí být true (potvrzení, že nová záloha nahradí starší).
activebooleannetoggle: true zapne, false vypne.
localestringneJazyk hlášek: cs, en, sk, pl nebo de. Výchozí cs.

Ukázka těla

{
  "action": "create",
  "name": "Noční restart",
  "preset": {
    "kind": "restart",
    "repeat": {
      "kind": "daily",
      "time": "04:30"
    },
    "countdown": {
      "m5": true,
      "m1": true,
      "s10": false
    },
    "message": "Server se za chvíli restartuje."
  }
}

Ukázka odpovědi

{
  "ok": true,
  "id": 42
}

Možné chyby

  • 400INVALID Plán není vyplněný správně.
  • 400GAP Plán by se spouštěl moc často.
  • 400BACKUP_ACK U zálohového plánu chybí ack: true.
  • 400COMMAND_FORBIDDEN Příkaz by server vypnul nebo restartoval; použijte předvolbu restart nebo power.
  • 403FORBIDDEN K plánu chybí oprávnění (podle úloh Konzole, Napájení nebo Zálohy).
  • 404NOT_FOUND Plán neexistuje.
  • 409LIMIT Server už má 10 plánů.
  • 409BACKUP_SLOTS Zálohy podle plánu potřebují doplněk Záloha.
  • 409BACKUP_EXISTS Zálohový plán už existuje.
  • 409NOT_EDITABLE Plán vznikl mimo portál; jde jen vypnout nebo smazat.
  • 409PANEL_TZ Plány na konkrétní čas teď nejdou nastavit, zatím jen opakování po hodinách.
  • 409SUSPENDED Server je pozastavený.
  • 409JOB_RUNNING Na Minecraft serveru běží změna softwaru.
  • 429RATE Plán jde spustit nejvýš jednou za minutu.
  • 502PARTIAL Plán se neuložil celý a zůstal vypnutý.
GET/services/{id}/vip-shopVIP obchod Minecraft serveru

Vrátí VIP obchod Minecraft serveru: údaje obchodu, položky s rozpadem ceny, aktuální sazby a souhrn prodejů po měsících. Jen pro vlastníka služby.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
langstringneJazyk hlášek: cs, en, sk, pl nebo de. Výchozí cs.

Ukázka odpovědi

{
  "view": {
    "state": {
      "mode": "live",
      "open": true,
      "checkoutOpen": true
    },
    "usable": true,
    "shop": {
      "id": "shp_3k9d",
      "slug": "muj-server",
      "title": "Můj server",
      "status": "active",
      "sellerName": "Jan Novák",
      "sellerIco": null,
      "sellerEmail": "[email protected]",
      "sellerAddress": null,
      "playerTerms": null,
      "termsVersion": "2026-10-29",
      "termsAcceptedAt": "2026-11-01T09:00:00.000Z",
      "termsCurrent": true,
      "suspendedReason": null,
      "createdAt": "2026-11-01T09:00:00.000Z"
    },
    "items": [
      {
        "id": "itm_8f2a",
        "title": "VIP na 30 dní",
        "description": "Barevné jméno a /fly",
        "priceCzk": 99,
        "category": "Ranky",
        "durationDays": 30,
        "commandsBuy": [
          "lp user {player} parent addtemp vip 30d"
        ],
        "commandsExpire": [],
        "active": true,
        "sortOrder": 0,
        "breakdown": null
      }
    ],
    "rates": null,
    "termsVersion": "2026-10-29",
    "summary": [
      {
        "month": "2026-11",
        "count": 3,
        "priceHaler": 29700,
        "commissionHaler": 1485,
        "feeHaler": 1020,
        "creditHaler": 27195
      }
    ]
  }
}

Možné chyby

  • 400not_minecraft VIP obchod je jen u Minecraft serverů.
  • 404disabled VIP obchod teď není pro účet dostupný.
  • 503disabled VIP obchod ještě není připravený.
  • 500failed Akce se nepodařila.
  • 403 Jen pro vlastníka služby.
POST/services/{id}/vip-shopUpravit obchod a položky VIP obchodu

Založí nebo upraví VIP obchod, pozastaví ho a spravuje položky podle pole action. Údaje obchodu se posílají vždy celé; při založení a po změně podmínek je nutné terms: true. Jen pro vlastníka služby.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
langstringneJazyk hlášek: cs, en, sk, pl nebo de. Výchozí cs.

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanosaveShop, setStatus, saveItem nebo deleteItem.
slugstringnesaveShop: adresa obchodu, 3–32 znaků a–z, 0–9 a pomlčka.
titlestringnesaveShop: název obchodu (2–60 znaků). saveItem: název položky (2–60 znaků).
sellerNamestringnesaveShop: jméno nebo firma prodávajícího (2–120 znaků).
sellerIcostringnesaveShop: IČO prodávajícího (nepovinné).
sellerEmailstringnesaveShop: kontaktní e-mail prodávajícího.
sellerAddressstringnesaveShop: adresa prodávajícího, 5–200 znaků (nepovinné).
playerTermsstringnesaveShop: vlastní podmínky pro hráče, nejvýš 20 000 znaků (nepovinné).
termsbooleannesaveShop: souhlas s podmínkami provozovatele obchodu.
statusstringnesetStatus: active nebo paused.
idstringnesaveItem: id položky pro úpravu (bez id se založí nová, nejvýš 50). deleteItem: id položky (povinné).
descriptionstringnesaveItem: popis, nejvýš 500 znaků.
priceCzkintegernesaveItem: cena v Kč, 10–10 000 (povinné).
categorystringnesaveItem: kategorie, nejvýš 40 znaků.
durationDaysinteger | nullnesaveItem: platnost ve dnech 1–3650, null = trvale.
commandsBuystring[]nesaveItem: 1–10 příkazů po nákupu, každý do 300 znaků; jediná proměnná {player}; příkazy jako stop, restart, op zakázané.
commandsExpirestring[]nesaveItem: nejvýš 10 příkazů po vypršení platnosti.
activebooleannesaveItem: nabízet položku v obchodě. Výchozí true.
sortOrderintegernesaveItem: pořadí 0–10 000.

Ukázka těla

{
  "action": "saveItem",
  "title": "VIP na 30 dní",
  "priceCzk": 99,
  "category": "Ranky",
  "durationDays": 30,
  "commandsBuy": [
    "lp user {player} parent addtemp vip 30d"
  ],
  "commandsExpire": [],
  "active": true
}

Ukázka odpovědi

{
  "ok": true,
  "item": {
    "id": "itm_8f2a",
    "title": "VIP na 30 dní",
    "description": null,
    "priceCzk": 99,
    "category": "Ranky",
    "durationDays": 30,
    "commandsBuy": [
      "lp user {player} parent addtemp vip 30d"
    ],
    "commandsExpire": [],
    "active": true,
    "sortOrder": 0,
    "breakdown": null
  }
}

Možné chyby

  • 400bad Neplatný požadavek nebo neznámá akce.
  • 400 Chybné pole; kód a pole (field) říkají které, např. slug, title, seller_email, terms, item_price, command_denied.
  • 404no_shop Služba ještě nemá obchod.
  • 404item_not_found Položka neexistuje.
  • 409slug_taken Adresa obchodu je obsazená.
  • 409suspended Obchod je pozastavený provozovatelem.
  • 409items_max Obchod už má 50 položek.
  • 400not_minecraft VIP obchod je jen u Minecraft serverů.
  • 500failed Akce se nepodařila.
  • 403 Jen pro vlastníka služby.
GET/services/{id}/vip-shop/salesProdeje VIP obchodu a doručení

Vrátí posledních 50 prodejů VIP obchodu se stavem doručení příkazů, provizí, poplatkem a připsaným kreditem. Částky jsou v haléřích. Funguje i u neaktivní služby. Jen pro vlastníka.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
langstringneJazyk hlášek: cs, en, sk, pl nebo de. Výchozí cs.
beforestring (ISO 8601)neStarší prodeje než tento čas (stránkování).

Ukázka odpovědi

{
  "sales": [
    {
      "id": "sal_51c0",
      "number": "VIP-2026-000123",
      "createdAt": "2026-11-05T19:02:11.000Z",
      "paidAt": "2026-11-05T19:03:40.000Z",
      "state": "paid",
      "refundState": null,
      "test": false,
      "itemTitle": "VIP na 30 dní",
      "durationDays": 30,
      "playerName": "Steve_42",
      "buyerEmail": "[email protected]",
      "priceHaler": 9900,
      "commissionHaler": 495,
      "feeHaler": 340,
      "creditHaler": 9065,
      "reversedHaler": null,
      "deliveries": [
        {
          "id": "dlv_77aa",
          "kind": "purchase",
          "state": "done",
          "attempts": 1,
          "nextAttemptAt": null,
          "doneAt": "2026-11-05T19:03:52.000Z",
          "lastErrorCode": null,
          "sent": 1,
          "total": 1
        }
      ]
    }
  ]
}

Možné chyby

  • 404no_shop Služba ještě nemá obchod.
  • 400not_minecraft VIP obchod je jen u Minecraft serverů.
  • 500failed Akce se nepodařila.
  • 403 Jen pro vlastníka služby.
POST/services/{id}/vip-shop/salesZopakovat doručení příkazů za prodej

Hned zkusí znovu poslat příkazy jednoho doručení na server. Nejvýš 10× za minutu na službu. Jen pro vlastníka.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
langstringneJazyk hlášek: cs, en, sk, pl nebo de. Výchozí cs.

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanoretry.
deliveryIdstringanoid doručení z GET (deliveries[].id).

Ukázka těla

{
  "action": "retry",
  "deliveryId": "dlv_77aa"
}

Ukázka odpovědi

{
  "ok": true,
  "state": "done",
  "code": null
}

Možné chyby

  • 400bad Neplatný požadavek.
  • 404no_shop Služba ještě nemá obchod.
  • 404delivery_not_found Doručení neexistuje.
  • 409delivery_state Doručení teď znovu poslat nejde.
  • 429rate Nejvýš 10 pokusů za minutu.
  • 400not_minecraft VIP obchod je jen u Minecraft serverů.
  • 500failed Akce se nepodařila.
  • 403 Jen pro vlastníka služby.

Minecraft

GET/services/{id}/minecraft/datapacksDatapacky aktivního světa

Bez parametrů vrátí datapacky aktivního světa. S `q` hledá datapacky na Modrinthu pro verzi serveru, s `project` vrátí verze jednoho datapacku.

Oprávnění: services:files

Parametry v adrese

NázevTypPovinnéPopis
qstringneHledaný text (nejvýš 80 znaků).
offsetintegernePosun ve výsledcích hledání, výchozí 0.
projectstringneID nebo slug projektu na Modrinthu, vrátí jeho verze se souborem.

Ukázka odpovědi

{
  "version": "1.21.4",
  "world": "world",
  "worldValid": true,
  "worldExists": true,
  "power": "running",
  "busy": null,
  "items": [
    {
      "name": "example-pack.zip",
      "kind": "zip",
      "size": 48211,
      "mtime": 1730970000,
      "source": "modrinth",
      "title": "Example Pack",
      "versionName": "1.2.0",
      "projectId": "AbCdEf12",
      "enabled": true,
      "compat": "ok"
    }
  ],
  "evidenceBroken": false,
  "canConsole": true,
  "maxUploadMb": 50
}

Možné chyby

  • 409NOT_IMPORTED Software serveru zatím není nastavený, nejdřív použijte minecraft/software.
  • 412NO_PANEL Server teď není dostupný v herním panelu.
  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
POST/services/{id}/minecraft/datapacksInstalace, odebrání a načtení datapacků

`install` stáhne datapack z Modrinthu do aktivního světa, na běžícím serveru se projeví až po `reload`. `remove` datapack vypne a smaže, `reload` spustí příkaz `reload` (jen běžící server, u sdílené služby s oprávněním Konzole). Nahrání vlastního ZIPu přes API nejde.

Oprávnění: services:files

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringano`install`, `remove` nebo `reload`.
projectIdstringneJen `install`: ID projektu na Modrinthu (1–64 znaků).
versionIdstringneJen `install`: ID verze z `GET ?project=` (1–16 znaků).
namestringneJen `remove`: název souboru nebo složky datapacku z výpisu (nejvýš 120 znaků).

Ukázka těla

{
  "action": "install",
  "projectId": "AbCdEf12",
  "versionId": "XyZ98765"
}

Ukázka odpovědi

{
  "ok": true,
  "file": "example-pack.zip",
  "replaced": null,
  "needsReload": true,
  "packFormat": "61",
  "compat": "ok"
}

Možné chyby

  • 400INVALID Neplatné tělo požadavku.
  • 403FORBIDDEN `reload` bez oprávnění Konzole u sdílené služby.
  • 404NO_SUCH_PACK Datapack s tímto názvem ve světě není.
  • 409NAME_TAKEN Datapack se stejným názvem už ve světě je, nejdřív ho odeberte.
  • 409TOO_MANY Ve světě je už 100 datapacků.
  • 409NOT_RUNNING Server neběží, zapněte ho a zkuste to znovu.
  • 409JOB Na serveru běží jiná změna nebo instalace doplňku.
  • 422INCOMPATIBLE Verze datapacku není pro verzi serveru.
  • 422NO_PACK_MCMETA Soubor není platný datapack (chybí pack.mcmeta).
  • 429RATE_LIMITED Limit: instalace a odebrání 20 za 10 minut, `reload` 10 za 10 minut.
GET/services/{id}/minecraft/dnsVlastní adresa serveru

Vrátí stav vlastní adresy (záznamy A/AAAA a SRV), výchozí port serveru a přímou adresu. S `check` jen ověří, jestli je název volný. Když se změnila IP nebo port serveru, záznamy se při čtení samy srovnají (`resynced`).

Oprávnění: services:network

Parametry v adrese

NázevTypPovinnéPopis
checkstringneNázev k ověření dostupnosti, vrátí `{ name, fqdn, available, code?, error? }`.
localestringneJazyk chybových hlášek kontroly přístupu: cs, en, sk, pl, de.

Ukázka odpovědi

{
  "enabled": true,
  "zone": "play.example.com",
  "ttl": 300,
  "nameMin": 3,
  "nameMax": 32,
  "current": {
    "name": "mujserver",
    "fqdn": "mujserver.play.example.com",
    "zone": "play.example.com",
    "ip": "203.0.113.10",
    "port": 25565,
    "recordType": "A",
    "srvName": "_minecraft._tcp.mujserver.play.example.com",
    "createdAt": "2026-11-07T10:15:00.000Z",
    "updatedAt": null,
    "records": {
      "address": "ok",
      "srv": "ok"
    }
  },
  "allocation": {
    "ip": "203.0.113.10",
    "alias": null,
    "port": 25565
  },
  "directAddress": "203.0.113.10:25565",
  "allocationError": null,
  "allocationErrorCode": null,
  "recordsError": null,
  "recordsErrorCode": null,
  "resynced": false,
  "canManage": true
}

Možné chyby

  • 400NOT_MINECRAFT Služba není Minecraft server.
  • 503PANEL Správa serveru je dočasně nedostupná.
  • 500SETUP_FAILED Nepodařilo se dokončit, zkuste to později.
POST/services/{id}/minecraft/dnsZaložení, změna a odebrání adresy

Založí adresu `<name>.<zone>`, přejmenuje ji, odebere, nebo znovu zapíše záznamy podle současné IP a portu (`resync`). Služba musí být aktivní; adresu jde měnit nejvýš 5× za hodinu a 20× denně.

Oprávnění: services:network

Parametry v adrese

NázevTypPovinnéPopis
localestringneJazyk chybových hlášek kontroly přístupu: cs, en, sk, pl, de.

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringano`create`, `rename`, `delete` nebo `resync`.
namestringnePro `create` a `rename`: 3–32 znaků, malá písmena a–z, číslice a pomlčky (ne na začátku ani na konci).

Ukázka těla

{
  "action": "create",
  "name": "mujserver"
}

Ukázka odpovědi

{
  "ok": true,
  "current": {
    "name": "mujserver",
    "fqdn": "mujserver.play.example.com",
    "zone": "play.example.com",
    "ip": "203.0.113.10",
    "port": 25565,
    "recordType": "A",
    "srvName": "_minecraft._tcp.mujserver.play.example.com",
    "createdAt": "2026-11-07T10:15:00.000Z",
    "updatedAt": null,
    "records": {
      "address": "ok",
      "srv": "ok"
    }
  }
}

Možné chyby

  • 400INVALID Neplatné tělo požadavku.
  • 400INVALID_NAME Název nesplňuje pravidla.
  • 400RESERVED Název je vyhrazený.
  • 400SAME_NAME Server už tuhle adresu má.
  • 404NONE Server žádnou vlastní adresu nemá.
  • 409TAKEN Adresa je obsazená.
  • 409EXISTS Server už vlastní adresu má, použijte `rename`.
  • 409NO_ALLOCATION Server nemá výchozí port.
  • 409NOT_PUBLIC Výchozí adresa serveru není veřejná.
  • 412NO_PANEL_LINK Server teď není dostupný v herním panelu.
  • 429RATE_LIMITED Překročený limit změn, zkuste to později.
  • 503DISABLED Vlastní adresy teď nejsou dostupné.
  • 502DNS Zápis DNS záznamů selhal.
GET/services/{id}/minecraft/eulaStav přijetí EULA

Vrátí, jestli je v eula.txt přijatá licence Minecraftu. `accepted: null` znamená, že soubor zatím neexistuje.

Oprávnění: services:settings

Ukázka odpovědi

{
  "accepted": false,
  "acceptedAt": null,
  "url": "https://aka.ms/MinecraftEULA"
}

Možné chyby

  • 412 Server teď není dostupný v herním panelu (hláška `panel.unavailable` v poli `msg`).
  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
POST/services/{id}/minecraft/eulaPřijetí EULA

Zapíše do eula.txt `eula=true`. Se `start: true` zároveň zapne vypnutý server (u sdílené služby s oprávněním Napájení). Limit 10 za 10 minut.

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
acceptbooleananoMusí být `true`.
startbooleannePo přijetí zapnout vypnutý server.

Ukázka těla

{
  "accept": true,
  "start": true
}

Ukázka odpovědi

{
  "ok": true,
  "accepted": true,
  "acceptedAt": "2026-11-07T10:15:00.000Z",
  "started": true,
  "startError": null,
  "startErrorMsg": null
}

Možné chyby

  • 400 Chybí `accept: true`.
  • 403 `start` bez oprávnění Napájení.
  • 409 Na serveru právě běží změna (job).
  • 412 Server teď není dostupný v herním panelu (hláška `panel.unavailable` v poli `msg`).
GET/services/{id}/minecraft/gamerulesPravidla hry aktivního světa

Vrátí pravidla hry platná pro verzi serveru s aktuální a výchozí hodnotou. U sdílené služby je potřeba oprávnění Konzole.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
langstringneJazyk názvů pravidel: `cs` (výchozí) nebo `en`.

Ukázka odpovědi

{
  "version": "1.21.4",
  "world": "world",
  "worldValid": true,
  "power": "running",
  "busy": null,
  "perDimension": true,
  "source": "file",
  "fileAt": "2026-11-07T10:15:00.000Z",
  "pending": [],
  "rules": [
    {
      "id": "minecraft:keep_inventory",
      "name": "keepInventory",
      "type": "bool",
      "min": null,
      "max": null,
      "group": "players",
      "common": true,
      "label": "Keep inventory after death",
      "value": false,
      "default": false
    }
  ]
}

Možné chyby

  • 409NOT_IMPORTED Software serveru zatím není nastavený, nejdřív použijte minecraft/software.
  • 412NO_PANEL Server teď není dostupný v herním panelu.
  • 413FILE_TOO_LARGE Soubor s pravidly je příliš velký.
  • 422FILE_CORRUPT Soubor s pravidly je poškozený.
  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
POST/services/{id}/minecraft/gamerulesZměna pravidel hry

Nastaví pravidla příkazem `gamerule` na běžícím serveru, projeví se hned bez restartu. Najednou nejvýš 30 pravidel, limit 30 požadavků za 10 minut.

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
rulesobjectanoMapa `id` pravidla (z GET) na hodnotu `boolean` nebo celé číslo.
allDimensionsbooleanneNa Paperu a odvozených serverech nastavit ve všech dimenzích, výchozí `true`.

Ukázka těla

{
  "rules": {
    "minecraft:keep_inventory": true,
    "minecraft:spawn_radius": 0
  },
  "allDimensions": true
}

Ukázka odpovědi

{
  "ok": true,
  "world": "world",
  "results": [
    {
      "id": "minecraft:keep_inventory",
      "status": "set"
    },
    {
      "id": "minecraft:spawn_radius",
      "status": "unchanged"
    }
  ]
}

Možné chyby

  • 400INVALID Neplatné tělo požadavku.
  • 400NO_CHANGES V `rules` nic není.
  • 400UNKNOWN_RULE Pravidlo ve verzi serveru neexistuje (pole `rule`).
  • 400INVALID_VALUE Neplatná hodnota pravidla (pole `rule`).
  • 409NOT_RUNNING Server neběží, zapněte ho a zkuste to znovu.
  • 409NOT_IMPORTED Software serveru zatím není nastavený, nejdřív použijte minecraft/software.
  • 409JOB Na serveru běží jiná změna nebo instalace doplňku.
  • 429CONSOLE_BUSY Konzole serveru je zaneprázdněná.
  • 412NO_PANEL Server teď není dostupný v herním panelu.
GET/services/{id}/minecraft/jobStav běžící změny serveru

Vrátí poslední job (změna softwaru, reinstalace, modpack, svět) s krokem, záznamem a průběhem. Po spuštění jobu ho dotazujte zhruba každé 2 s, dokud `status` není `done` nebo `failed`; zaseknutý job se označí jako `failed` s `interrupted: true`.

Oprávnění: services:settings

Ukázka odpovědi

{
  "job": {
    "id": "k3j9x2m1q8",
    "kind": "switch",
    "status": "running",
    "step": "install",
    "log": [
      {
        "at": "2026-11-07T10:15:00.000Z",
        "key": "job.log.installing",
        "params": {
          "label": "Paper 1.21.4"
        }
      }
    ],
    "startedAt": "2026-11-07T10:15:00.000Z",
    "updatedAt": "2026-11-07T10:16:10.000Z",
    "error": null,
    "errorMsg": null,
    "progress": {
      "done": 42,
      "total": 168,
      "unit": "files",
      "bytesDone": null,
      "bytesTotal": null
    },
    "from": {
      "type": "paper",
      "version": "1.21.1",
      "build": "130"
    },
    "target": {
      "type": "paper",
      "version": "1.21.4",
      "build": "232"
    },
    "destructive": true,
    "finishedAt": null
  },
  "active": true
}

Možné chyby

  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
POST/services/{id}/minecraft/jobSkrytí dokončeného jobu

Skryje dokončený nebo selhaný job, aby ho GET už nevracel. Běžící job skrýt nejde.

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanoVždy `dismiss`.
jobIdstringano`id` jobu z GET (8–40 malých písmen a číslic).

Ukázka těla

{
  "action": "dismiss",
  "jobId": "k3j9x2m1q8"
}

Ukázka odpovědi

{
  "ok": true
}

Možné chyby

  • 400 Neplatné tělo požadavku (hláška v poli `msg`).
  • 409 Job ještě běží nebo už to není poslední job.
GET/services/{id}/minecraft/modpacksModpacky: stav, hledání a náhled

Bez parametrů vrátí nainstalovaný modpack, odložené soubory a frontu. `search` hledá modpacky na Modrinthu, `project` vrátí projekt s verzemi, `preview` ukáže, co by instalace udělala (nic nemění), `serverFiles=1` vypíše soubory .mrpack v kořeni serveru.

Oprávnění: services:files

Parametry v adrese

NázevTypPovinnéPopis
searchstringneHledaný text na Modrinthu.
mcstringneS `search`: verze Minecraftu, např. `1.21.1`.
loaderstringneS `search`: `fabric`, `forge` nebo `neoforge`.
sortstringneS `search`: `downloads`, `relevance` nebo `newest`.
offsetintegerneS `search`: posun ve výsledcích.
projectstringneID nebo slug projektu; s `preview=modrinth` jen ID (8 znaků).
previewstringne`modrinth` (s `project` a `version`) nebo `upload` (s `upload`).
versionstringneS `preview=modrinth`: ID verze (8 znaků).
uploadstringneS `preview=upload`: `id` z akce `stageServerFile` (24 hex znaků).
modestringneS `preview`: `all` (výchozí), `keep-world` nebo `wipe`.
serverFilesstringne`1` vypíše soubory .mrpack v kořeni serveru.

Ukázka odpovědi

{
  "installed": null,
  "aside": null,
  "recovering": false,
  "server": {
    "type": "fabric",
    "version": "1.21.1",
    "memoryMib": 8192
  },
  "perms": {
    "install": true,
    "rollback": true,
    "deleteAside": true,
    "wipe": true,
    "replaceBackup": true
  },
  "queue": {
    "active": 0,
    "waiting": 0,
    "limit": 2
  },
  "limits": {
    "uploadMaxMb": 95,
    "serverFileMaxMb": 1024,
    "serverMb": 3072,
    "files": 30000
  }
}

Možné chyby

  • 400 Neplatný projekt, verze, nahraný soubor nebo režim (hláška v poli `msg`).
  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
POST/services/{id}/minecraft/modpacksInstalace a návrat modpacku

`install` a `rollback` spustí job na pozadí (odpověď 202), průběh sledujte přes minecraft/job. Server se při instalaci vypne, `all` staré soubory odloží (jde se vrátit přes `rollback`), `wipe` vše smaže (jen vlastník). Limit 3 za hodinu na službu (společný se změnou softwaru) a 10 denně na zákazníka; vlastní .mrpack nahrajte přes SFTP a připravte akcí `stageServerFile`.

Oprávnění: services:files

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringano`install`, `rollback`, `deleteAside` nebo `stageServerFile`.
originstringne`install`: `modrinth` nebo `mrpack` (vlastní soubor).
projectIdstringne`install` z Modrinthu: ID projektu (8 znaků).
versionIdstringne`install` z Modrinthu: ID verze (8 znaků).
uploadIdstringne`install` s `mrpack`: `id` z `stageServerFile` (24 hex znaků).
modestringne`install`: `all` (nahradit vše, staré odložit), `keep-world` (ponechat svět a server.properties) nebo `wipe` (smazat vše, jen vlastník).
replaceBackupbooleannePři plných slotech záloh přepsat nejstarší zálohu (vlastník nebo oprávnění Zálohy).
acceptEulabooleannePřijmout licenci Minecraftu (EULA) v rámci instalace.
confirmDowngradebooleannePotvrdit instalaci se starší verzí Minecraftu, než má svět.
namestringne`stageServerFile`: název souboru .mrpack v kořeni serveru (do 1 GB).

Ukázka těla

{
  "action": "install",
  "origin": "modrinth",
  "projectId": "AbCdEf12",
  "versionId": "XyZ98765",
  "mode": "all",
  "acceptEula": true
}

Ukázka odpovědi

{
  "ok": true,
  "job": {
    "id": "k3j9x2m1q8",
    "kind": "modpack",
    "status": "queued",
    "step": "queued",
    "log": [],
    "startedAt": "2026-11-07T10:15:00.000Z",
    "updatedAt": "2026-11-07T10:15:00.000Z",
    "error": null,
    "errorMsg": null,
    "progress": null
  },
  "warnings": []
}

Možné chyby

  • 400 Neplatné tělo požadavku (hláška v poli `msg`).
  • 403 Chybí oprávnění Nastavení, Soubory a Napájení (hláška v poli `msg`).
  • 403WIPE_OWNER Režim `wipe` smí jen vlastník.
  • 403BACKUP_PERMISSION `replaceBackup` bez oprávnění Zálohy.
  • 409JOB_RUNNING Na serveru už běží jiný job.
  • 409ADDON_RUNNING Probíhá instalace pluginu nebo módu.
  • 409QUEUE_FULL Fronta instalací je plná, zkuste to později.
  • 409DISK Na disku serveru je málo místa (`details.freeMb`, `details.needMb`).
  • 409DOWNGRADE Modpack má starší verzi Minecraftu, potvrďte `confirmDowngrade`.
  • 422LOADER Loader modpacku teď nejde nainstalovat.
  • 429 Překročený limit instalací (hodinový na službu nebo denní na zákazníka).
GET/services/{id}/minecraft/player-statsGraf počtu hráčů

Vrátí body grafu online hráčů za zvolené období s průměrem, maximem a rekordem. Když je sbírání vypnuté, `enabled` je `false` a `points` je prázdné.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
rangestringne`24h` (výchozí, body po 5 min), `7d` (po hodině) nebo `30d` (po 4 h).

Ukázka odpovědi

{
  "enabled": true,
  "collecting": true,
  "range": "24h",
  "canToggle": true,
  "bucketSec": 300,
  "points": [
    {
      "t": 1730973600000,
      "peak": 4,
      "avg": 2.5,
      "slots": 20,
      "state": "up"
    }
  ],
  "average": 2.1,
  "peak": {
    "online": 6,
    "at": "2026-11-07T10:15:00.000Z"
  },
  "record": {
    "online": 14,
    "at": "2026-10-20T19:40:00.000Z"
  },
  "last": {
    "at": "2026-11-07T10:15:00.000Z",
    "online": 3,
    "max": 20
  }
}

Možné chyby

  • 503unavailable Graf hráčů zatím není k dispozici.
  • 502ERROR Graf se nepodařilo načíst.
  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
POST/services/{id}/minecraft/player-statsZapnutí a vypnutí grafu hráčů

Zapne nebo vypne sbírání počtu hráčů. Vypnutí smaže všechna nasbíraná data služby (`deleted`). Limit 10 za 10 minut.

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
enabledbooleanano`true` zapnout, `false` vypnout a smazat data.

Ukázka těla

{
  "enabled": false
}

Ukázka odpovědi

{
  "ok": true,
  "enabled": false,
  "deleted": 2016
}

Možné chyby

  • 400INVALID Neplatné tělo požadavku.
  • 503unavailable Graf hráčů zatím není k dispozici.
  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
GET/services/{id}/minecraft/playersHráči, whitelist, operátoři a bany

Vrátí whitelist, operátory, bany a bany IP ze souborů serveru, nastavení ze server.properties a online hráče (jen s oprávněním Konzole). S `lookup` ověří nick u Mojangu.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
lookupstringneNick hráče k ověření, vrátí `{ lookup: { query, found, name, uuid } }` (oprávnění Konzole).

Ukázka odpovědi

{
  "power": "running",
  "busy": null,
  "canConsole": true,
  "version": "1.21.4",
  "settings": {
    "whitelist": true,
    "enforceWhitelist": false,
    "onlineMode": true,
    "opLevel": 4,
    "propsMissing": false
  },
  "propsInvalid": false,
  "floodgatePrefix": null,
  "online": {
    "online": 1,
    "max": 20,
    "players": [
      {
        "name": "Steve",
        "uuid": "0f3c1e2a-4b5d-4c6e-8f70-1a2b3c4d5e6f"
      }
    ],
    "truncated": false,
    "source": "console",
    "at": "2026-11-07T10:15:00.000Z"
  },
  "onlineError": null,
  "onlineErrorMsg": null,
  "lists": {
    "whitelist": {
      "status": "ok",
      "entries": [
        {
          "uuid": "0f3c1e2a-4b5d-4c6e-8f70-1a2b3c4d5e6f",
          "name": "Steve"
        }
      ]
    },
    "ops": {
      "status": "ok",
      "entries": [
        {
          "uuid": "0f3c1e2a-4b5d-4c6e-8f70-1a2b3c4d5e6f",
          "name": "Steve",
          "level": 4,
          "bypassesPlayerLimit": false
        }
      ]
    },
    "bans": {
      "status": "absent",
      "entries": []
    },
    "ipBans": {
      "status": "absent",
      "entries": []
    }
  },
  "known": [],
  "owner": true
}

Možné chyby

  • 400INVALID_NICK Neplatný nick v `lookup`.
  • 403FORBIDDEN `lookup` bez oprávnění Konzole.
  • 503MOJANG_BUSY Ověření u Mojangu teď nejde, zkuste to za minutu.
  • 412 Server teď není dostupný v herním panelu (hláška `panel.unavailable` v poli `msg`).
  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
POST/services/{id}/minecraft/playersWhitelist, operátoři, bany a kick

Na běžícím serveru provede změnu příkazem, na vypnutém úpravou souboru (`mode`). U sdílené služby je potřeba oprávnění Konzole; limit 30 změn za 10 minut na službu a 60 na zákazníka.

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringano`whitelist-add`, `whitelist-remove`, `whitelist-toggle`, `op`, `deop`, `ban`, `pardon`, `pardon-ip`, `kick`, `bedrock-whitelist-add` nebo `bedrock-whitelist-remove`.
nickstringneNick hráče (nejvýš 40 znaků); u akcí `bedrock-*` jméno hráče Bedrocku.
uuidstringneUUID ze seznamu, pro odebrání na vypnutém serveru i bez platného nicku.
levelintegerne`op`: úroveň operátora 1–4.
bypassesPlayerLimitbooleanne`op`: operátor se připojí i na plný server.
reasonstringne`ban` a `kick`: důvod (nejvýš 200 znaků).
ipstringne`pardon-ip`: zabanovaná IP adresa.
enabledbooleanne`whitelist-toggle` (povinné): zapnout nebo vypnout whitelist.

Ukázka těla

{
  "action": "op",
  "nick": "Steve",
  "level": 4
}

Ukázka odpovědi

{
  "ok": true,
  "mode": "command",
  "result": "done",
  "player": {
    "name": "Steve",
    "uuid": "0f3c1e2a-4b5d-4c6e-8f70-1a2b3c4d5e6f"
  }
}

Možné chyby

  • 400INVALID Neplatné tělo požadavku.
  • 400INVALID_NICK Neplatný nick nebo UUID.
  • 400INVALID_REASON Neplatný důvod.
  • 400INVALID_IP Neplatná IP adresa.
  • 409NOT_RUNNING Akce potřebuje běžící server (např. `kick`).
  • 409PLAYER_OFFLINE Hráč není online.
  • 409NO_FLOODGATE Akce `bedrock-*` potřebují Floodgate.
  • 409CONFLICT Soubor se mezitím změnil, zkuste to znovu.
  • 409JOB Na serveru běží jiná změna.
  • 422PLAYER_UNKNOWN Hráč s tímto nickem neexistuje.
  • 429RATE_LIMITED Překročený limit změn, zkuste to později.
  • 503MOJANG_BUSY Ověření u Mojangu teď nejde.
GET/services/{id}/minecraft/pluginsPluginy a módy serveru

Bez parametrů vypíše nainstalované pluginy nebo módy a `restartRequired`. Přepínače `search`, `versions`, `plan` a `updates` stačí uvést bez hodnoty (např. `?search&source=modrinth&q=maps`); `op` vrátí stav instalace na pozadí.

Oprávnění: services:files

Parametry v adrese

NázevTypPovinnéPopis
searchflagneHledání v katalogu (s `source`, `q`, `offset`).
versionsflagneKompatibilní verze projektu (s `source`, `project`).
planflagneNáhled instalace se závislostmi bez zápisu (s `source`, `project`, `version`, `deps`).
updatesflagneNovější verze souborů nainstalovaných přes portál.
sourcestringne`modrinth` nebo `hangar` (Hangar jen pro pluginy).
qstringneHledaný text.
offsetintegernePosun ve výsledcích hledání.
projectstringneID nebo slug projektu (1–64 znaků).
versionstringneS `plan`: ID verze, jinak nejnovější kompatibilní.
depsstringneS `plan`: `0` bez závislostí.
opstringneID operace (UUID) z odpovědi POST s 202.

Ukázka odpovědi

{
  "context": {
    "type": "paper",
    "kind": "plugins",
    "gameVersion": "1.21.4",
    "versionKnown": true,
    "versionSource": "metadata",
    "dir": "/plugins"
  },
  "sources": [
    "modrinth",
    "hangar"
  ],
  "maxBytes": 104857600,
  "items": [
    {
      "file": "ExamplePlugin-1.2.0.jar",
      "filename": "ExamplePlugin-1.2.0.jar",
      "enabled": true,
      "size": 512000,
      "modifiedAt": 1730970000,
      "managed": true,
      "source": "modrinth",
      "projectId": "AbCdEf12",
      "title": "Example Plugin",
      "icon": null,
      "url": "https://modrinth.com/plugin/example-plugin",
      "versionId": "XyZ98765",
      "versionName": "1.2.0",
      "publishedAt": "2026-11-07T10:15:00.000Z",
      "installedAt": "2026-11-07T10:15:00.000Z",
      "installedByYou": true,
      "dependencyOf": null,
      "unverified": true,
      "fromModpack": null,
      "dataFolder": "ExamplePlugin"
    }
  ],
  "dataFolders": [
    "ExamplePlugin"
  ],
  "folderExists": true,
  "changedAt": "2026-11-07T10:15:00.000Z",
  "restartRequired": true,
  "serverState": "running",
  "jobRunning": false,
  "op": null
}

Možné chyby

  • 400BAD_REQUEST Neznámý zdroj, projekt nebo verze.
  • 400UNSUPPORTED_TYPE Typ serveru pluginy ani módy nepodporuje (Vanilla).
  • 404OP_NOT_FOUND Operace neexistuje nebo už vypršela.
  • 429RATE_LIMITED Limit dotazů na katalogy: 60 za minutu.
  • 502SOURCE_ERROR Katalog teď neodpovídá.
POST/services/{id}/minecraft/pluginsInstalace a správa pluginů a módů

`install` a `update` běží na pozadí: hotová odpověď přijde do 40 s, jinak 202 s `pending: true` a `op`, stav pak čtěte přes `GET ?op=`. Změny se projeví po restartu serveru; limit 20 změn za 10 minut na službu.

Oprávnění: services:files

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringano`install`, `update`, `remove` nebo `toggle`.
sourcestringne`install`: `modrinth` nebo `hangar`.
projectstringne`install`: ID nebo slug projektu.
versionstringne`install` a `update`: ID verze, jinak nejnovější kompatibilní.
dependenciesbooleanne`install`: nainstalovat i povinné závislosti, výchozí `true`.
skipstring[]ne`install`: ID závislostí, které se vynechají (nejvýš 50).
replacebooleanne`install`: nahradit konfliktní soubory, výchozí `false`.
filestringne`update`, `remove`, `toggle`: název souboru z výpisu (nejvýš 255 znaků).
dataFolderstringne`remove`: smazat i složku s daty pluginu (název z `dataFolders`).
enabledbooleanne`toggle` (povinné): zapnout nebo vypnout soubor.

Ukázka těla

{
  "action": "install",
  "source": "modrinth",
  "project": "example-plugin",
  "dependencies": true
}

Ukázka odpovědi

{
  "ok": true,
  "op": {
    "id": "3f1c2a7e-9b4d-4e21-8c3a-5d6e7f809a1b",
    "action": "install",
    "status": "done",
    "step": "Hotovo",
    "stepMsg": {
      "key": "plugin.step.done"
    },
    "startedAt": "2026-11-07T10:15:00.000Z",
    "finishedAt": "2026-11-07T10:15:12.000Z",
    "result": {
      "installed": [
        {
          "file": "ExamplePlugin-1.2.0.jar",
          "title": "Example Plugin",
          "versionName": "1.2.0",
          "role": "target"
        }
      ],
      "removed": [],
      "skipped": [],
      "missing": []
    },
    "error": null,
    "errorMsg": null,
    "code": null,
    "data": null
  },
  "result": {
    "installed": [
      {
        "file": "ExamplePlugin-1.2.0.jar",
        "title": "Example Plugin",
        "versionName": "1.2.0",
        "role": "target"
      }
    ],
    "removed": [],
    "skipped": [],
    "missing": []
  }
}

Možné chyby

  • 400BAD_REQUEST Neplatné tělo požadavku nebo označení projektu či verze.
  • 404NOT_FOUND Soubor nebo projekt nebyl nalezen.
  • 404NO_VERSION Žádná kompatibilní verze.
  • 409JOB_RUNNING Na serveru běží jiná změna.
  • 409INSTALLING Server se právě instaluje.
  • 409EXISTS Soubor už existuje, použijte `replace`.
  • 409UP_TO_DATE Soubor už má nejnovější verzi.
  • 413TOO_LARGE Soubor je větší než 100 MB.
  • 422INCOMPATIBLE Verze není pro tento server.
  • 422EXTERNAL Projekt jde stáhnout jen ze stránky autora.
  • 429RATE_LIMITED Limit 20 změn za 10 minut.
  • 502SOURCE_ERROR Katalog teď neodpovídá.
GET/services/{id}/minecraft/propertiesObsah server.properties

Vrátí server.properties jako text i jako seznam klíčů s `etag` pro uložení. Tajné hodnoty (hesla RCON a Management Protocolu) jsou zamaskované; `reveal` jednu odhalí, jen s oprávněním Tajné údaje.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
revealstringne`rcon.password`, `management-server-secret` nebo `management-server-tls-keystore-password`; vrátí `{ key, value }`.

Ukázka odpovědi

{
  "locked": [
    "server-ip",
    "server-port",
    "query.port"
  ],
  "secretKeys": [
    "rcon.password",
    "management-server-secret",
    "management-server-tls-keystore-password"
  ],
  "privilegedKeys": [
    "enable-rcon",
    "rcon.port",
    "management-server-enabled",
    "management-server-host",
    "management-server-port",
    "management-server-tls-enabled",
    "management-server-tls-keystore",
    "management-server-allowed-origins"
  ],
  "allocationPorts": [
    25565,
    25566
  ],
  "canSecrets": true,
  "canPower": true,
  "jobActive": false,
  "exists": true,
  "etag": "9b1f0c2d4e6a8b0c1d2e3f4a5b6c7d8e9f0a1b2c",
  "raw": "motd=A Minecraft Server\nmax-players=20\nrcon.password=********\n",
  "entries": [
    {
      "key": "motd",
      "value": "A Minecraft Server"
    },
    {
      "key": "max-players",
      "value": "20"
    },
    {
      "key": "rcon.password",
      "value": "********"
    }
  ]
}

Možné chyby

  • 400 Neznámý klíč v `reveal`.
  • 403 `reveal` bez oprávnění Tajné údaje.
  • 422 Soubor je příliš velký nebo není textový.
  • 412 Server teď není dostupný v herním panelu (hláška `panel.unavailable` v poli `msg`).
  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
POST/services/{id}/minecraft/propertiesUložení server.properties

Uloží jednotlivé klíče (`fields`) nebo celý soubor (`raw`), vždy s `etag` z GET. Zamčené klíče (IP a porty) se nemění, tajné a vzdálenou správu mění jen oprávnění Tajné údaje. Změny se projeví po restartu, `restart: true` ho rovnou provede (oprávnění Napájení).

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
etagstringano`etag` z GET; když soubor neexistuje, `absent`.
fieldsobjectneKlíč na hodnotu (string, číslo nebo boolean). Nejde spolu s `raw`.
rawstringneCelý obsah souboru (nejvýš 80 000 znaků, výsledek do 64 KB). Zamčené a tajné klíče se vrátí na původní hodnotu.
createbooleanneZaložit soubor z výchozích hodnot, když ještě neexistuje.
restartbooleannePo uložení restartovat běžící server.

Ukázka těla

{
  "etag": "9b1f0c2d4e6a8b0c1d2e3f4a5b6c7d8e9f0a1b2c",
  "fields": {
    "motd": "Vítejte",
    "max-players": 30
  },
  "restart": true
}

Ukázka odpovědi

{
  "ok": true,
  "unchanged": false,
  "etag": "0c1d2e3f4a5b6c7d8e9f0a1b2c9b1f0c2d4e6a8b",
  "changed": [
    "motd",
    "max-players"
  ],
  "restored": [],
  "restarted": true,
  "restartError": null,
  "restartErrorMsg": null
}

Možné chyby

  • 400 Neplatné tělo požadavku (hláška v poli `msg`).
  • 400UNKNOWN_KEY Klíč nejde měnit přes `fields` (pole `key`).
  • 400LOCKED Klíč je zamčený (pole `key`).
  • 400INVALID Neplatná hodnota klíče (pole `key`).
  • 400RAW_INVALID Text souboru je moc dlouhý nebo obsahuje nepovolené znaky.
  • 403SECRETS Změna tajné hodnoty nebo vzdálené správy bez oprávnění Tajné údaje.
  • 403 `restart` bez oprávnění Napájení.
  • 409CONFLICT Soubor se mezitím změnil, načtěte nový `etag`.
  • 409NO_FILE Soubor neexistuje, pošlete `create: true`.
  • 409 Na serveru běží změna (job).
  • 412 Server teď není dostupný v herním panelu (hláška `panel.unavailable` v poli `msg`).
GET/services/{id}/minecraft/softwareSoftware serveru a dostupné verze

Bez parametrů vrátí typ a verzi serveru, historii změn, běžící job, sloty záloh, EULA a oprávnění. `versions` a `builds` vypíšou verze a buildy typu, `preview` ukáže dopad změny (Java, obraz, disk, varování) bez zápisu.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
versionsstringneTyp serveru: `paper`, `purpur`, `folia`, `vanilla`, `fabric`, `forge` nebo `neoforge`; vrátí až 250 verzí.
prereleasestringneS `versions`: `1` přidá předběžné verze.
buildsstringneTyp serveru; s `version` vrátí až 100 buildů.
previewstringneTyp serveru pro náhled změny (s `version`, `build`).
versionstringneVerze Minecraftu (u `preview` výchozí `latest`).
buildstringneS `preview`: konkrétní build nebo verze loaderu.
unstablestringne`1` povolí nestabilní buildy (`builds`, `preview`).

Ukázka odpovědi

{
  "state": {
    "type": "paper",
    "version": "1.21.4",
    "build": "232",
    "loaderVersion": null,
    "javaMajor": 21,
    "launch": {
      "kind": "jar",
      "file": "server.jar"
    },
    "history": [],
    "importedAt": null,
    "installedAt": "2026-11-07T10:15:00.000Z"
  },
  "job": null,
  "jobActive": false,
  "server": {
    "memoryMib": 8192,
    "diskMib": 40960,
    "javaMajor": 21,
    "imageOfficial": true,
    "busy": null
  },
  "panelError": null,
  "clientError": null,
  "backups": {
    "used": 1,
    "limit": 3
  },
  "diskFreeMb": 35200,
  "diskFreeUnknown": false,
  "eula": {
    "accepted": true,
    "acceptedAt": "2026-11-07T10:15:00.000Z"
  },
  "importSuggestion": null,
  "perms": {
    "change": true,
    "import": true,
    "eula": true,
    "power": true,
    "skipBackup": true
  },
  "types": [
    "paper",
    "purpur",
    "folia",
    "vanilla",
    "fabric",
    "forge",
    "neoforge"
  ]
}

Možné chyby

  • 400 Neznámý typ, verze nebo build (hláška v poli `msg`).
  • 422 Verzi nebo build nejde najít.
  • 502 Zdroj verzí teď neodpovídá.
  • 412 Server teď není dostupný v herním panelu (hláška `panel.unavailable` v poli `msg`).
  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
POST/services/{id}/minecraft/softwareZměna typu a verze serveru

`switch` a `reinstall` spustí job (202), průběh sledujte přes minecraft/job: server se vypne, zálohuje, nainstaluje se nový software a běžící server se znovu spustí. Potřebuje volný slot záloh (jinak `skipBackup`, jen vlastník) a lze ho spustit nejvýš 3× za hodinu. `import` jen zapíše, jaký software už na serveru je, nic nemění.

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringano`switch`, `reinstall` nebo `import`.
typestringne`switch` a `import`: `paper`, `purpur`, `folia`, `vanilla`, `fabric`, `forge` nebo `neoforge`.
versionstringne`switch` a `import`: verze Minecraftu (1–40 znaků), u `switch` jde i `latest`.
buildstringneBuild nebo verze loaderu, jinak nejnovější stabilní.
allowUnstablebooleanne`switch`: povolit nestabilní build.
modestringne`switch`: `keep` (výchozí, nic nemazat), `clean` (smazat vše kromě světa, nastavení a seznamů hráčů) nebo `wipe` (smazat vše).
acceptEulabooleanne`switch` a `reinstall`: přijmout EULA.
confirmDowngradebooleanne`switch`: potvrdit přechod na starší nebo neznámou verzi.
skipBackupbooleanne`switch` a `reinstall`: bez zálohy, jen vlastník.

Ukázka těla

{
  "action": "switch",
  "type": "paper",
  "version": "1.21.4",
  "mode": "keep",
  "acceptEula": true
}

Ukázka odpovědi

{
  "ok": true,
  "job": {
    "id": "k3j9x2m1q8",
    "kind": "switch",
    "status": "queued",
    "step": "queued",
    "log": [],
    "startedAt": "2026-11-07T10:15:00.000Z",
    "updatedAt": "2026-11-07T10:15:00.000Z",
    "error": null,
    "errorMsg": null,
    "progress": null
  },
  "warnings": []
}

Možné chyby

  • 400 Neplatné tělo požadavku (hláška v poli `msg`).
  • 403 Změna potřebuje oprávnění Nastavení, Soubory a Napájení.
  • 403SKIP_BACKUP_OWNER `skipBackup` smí jen vlastník.
  • 409JOB_RUNNING Na serveru už běží jiný job.
  • 409ADDON_RUNNING Probíhá instalace pluginu nebo módu.
  • 409BACKUP_SLOT Sloty záloh jsou plné.
  • 409BACKUP_DISABLED Služba nemá zálohy, změna jde jen se `skipBackup`.
  • 409DISK Na disku je málo místa (`details.freeMb`, `details.needMb`).
  • 409DOWNGRADE Starší verze, potvrďte `confirmDowngrade`.
  • 409UNKNOWN_VERSION Současná verze není známá, potvrďte `confirmDowngrade`.
  • 409NOT_IMPORTED `reinstall` bez známého softwaru, nejdřív `import` nebo `switch`.
  • 409INSTALLING Server se instaluje nebo obnovuje ze zálohy.
  • 422NEED_BUILD `import`: u Forge a NeoForge doplňte `build`.
  • 429 Nejvýš 3 změny za hodinu.
GET/services/{id}/minecraft/startupSpouštěcí příkaz a paměť

Vrátí současný spouštěcí příkaz, velikost haldy, dostupné presety JVM s náhledem haldy, uložený stav a riziko pádu na paměť. S `java=1` navíc verze Javy, které server nabízí.

Oprávnění: services:settings

Parametry v adrese

NázevTypPovinnéPopis
javastringne`1` přidá `javaOptions` (verze Javy, které egg nabízí).

Ukázka odpovědi

{
  "type": "paper",
  "imported": true,
  "javaMajor": 21,
  "arch": "x86_64",
  "envPrefix": true,
  "memoryMib": 8192,
  "launch": {
    "kind": "jar",
    "file": "server.jar"
  },
  "command": "java -Xms6656M -Xmx6656M -XX:+UseG1GC -jar server.jar nogui",
  "heapMb": 6656,
  "addons": 12,
  "modpack": false,
  "presets": [
    {
      "preset": "standard",
      "heapMb": 6656,
      "isDefault": true,
      "vectors": true
    },
    {
      "preset": "zgc",
      "heapMb": 5888,
      "isDefault": false,
      "vectors": true
    },
    {
      "preset": "none",
      "heapMb": 6656,
      "isDefault": false,
      "vectors": true
    }
  ],
  "defaultPreset": "standard",
  "vectors": true,
  "memory": null,
  "stored": {
    "preset": "standard",
    "heapMb": 6656,
    "memoryMib": 8192,
    "vectors": true,
    "extraFlags": [],
    "appliedAt": "2026-11-07T10:15:00.000Z",
    "custom": false,
    "hasPrevious": true,
    "check": null
  },
  "lastSync": null,
  "managed": true,
  "matchesStored": true,
  "drifted": false,
  "needsSync": false,
  "busy": null,
  "jobActive": false,
  "canPower": true,
  "canExtraFlags": true,
  "canJava": true
}

Možné chyby

  • 502 Herní panel teď neodpovídá.
  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
POST/services/{id}/minecraft/startupZměna spouštěcího příkazu nebo Javy

Bez `action` (nebo `apply`) použije preset JVM, `recalculate` přepočítá haldu podle současné paměti, `revert` vrátí předchozí příkaz, `java` přepne obraz na jinou Javu bez reinstalace. Změna platí od dalšího startu, `restart: true` server hned restartuje (oprávnění Napájení).

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringne`apply` (výchozí), `recalculate`, `revert` nebo `java`.
presetstringne`apply` (povinné): `standard`, `zgc` (Java 21+), `proxy` nebo `none`.
extraFlagsstring | string[]ne`apply`: vlastní JVM flagy (text do 4000 znaků nebo až 60 položek); nové flagy jen s oprávněním Napájení.
dryRunbooleanne`apply`: jen sestavit příkaz a nic neuložit.
majorintegerne`java` (povinné): hlavní verze Javy 8–99.
restartbooleannePo změně restartovat (vypnutý server zapnout).

Ukázka těla

{
  "preset": "standard",
  "extraFlags": [],
  "restart": true
}

Ukázka odpovědi

{
  "ok": true,
  "command": "java -Xms6656M -Xmx6656M -XX:+UseG1GC -jar server.jar nogui",
  "heapMb": 6656,
  "preset": "standard",
  "restarted": true,
  "restartError": null,
  "restartErrorMsg": null
}

Možné chyby

  • 400 Neplatné tělo požadavku (hláška v poli `msg`).
  • 403EXTRA_FLAGS_PERMISSION Nové vlastní flagy bez oprávnění Napájení (pole `token`).
  • 403 `restart` nebo `java` bez potřebných oprávnění.
  • 409NEED_IMPORT Software serveru není nastavený.
  • 409NO_MEMORY_LIMIT Server nemá limit paměti.
  • 409CHANGED Startup se mezitím změnil.
  • 409 Na serveru běží změna softwaru nebo instalace.
  • 422PRESET Preset není pro tuto Javu.
  • 422EXTRA_FLAGS Nepovolený flag (pole `token`).
  • 422TOO_OLD `java`: verze je pro verzi Minecraftu příliš stará.
  • 422NO_IMAGE `java`: pro tuto Javu není obraz.
  • 429 Limit: použití presetu 10 za hodinu, přepnutí Javy 3 za hodinu.
GET/services/{id}/minecraft/textBarevný nick a prefix: možnosti

Vrátí, jestli server běží, éru syntaxe textu podle verze a které pluginy (EssentialsX, LuckPerms, TAB) jsou nainstalované. U sdílené služby je potřeba oprávnění Konzole.

Oprávnění: services:settings

Ukázka odpovědi

{
  "running": true,
  "state": "running",
  "version": "1.21.4",
  "era": "components",
  "eraKnown": true,
  "plugins": {
    "essentials": true,
    "luckperms": true,
    "tab": false
  }
}

Možné chyby

  • 412 Server teď není dostupný v herním panelu (hláška `panel.unavailable` v poli `msg`).
  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
POST/services/{id}/minecraft/textNastavení barevného textu na serveru

Ze `spans` nebo `doc` sestaví na serveru příkaz (nick EssentialsX, prefix LuckPerms nebo TAB, jmenovka, tellraw) a pošle ho do konzole běžícího serveru. Limit 20 za 10 minut.

Oprávnění: services:settings

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringano`essentials-nick`, `lp-prefix`, `tab-prefix`, `give-nametag` nebo `tellraw`.
targetstringanoHráč nebo skupina (1–36 znaků); u `tellraw` i `@a`.
targetKindstringne`lp-prefix` a `tab-prefix`: `group` (výchozí) nebo `player`.
priorityinteger | nullne`lp-prefix`: priorita 0–1000.
prefixFormatstringne`lp-prefix`: `ampHex` (výchozí), `amp`, `minimessage` nebo `bungeeHex`.
tabFieldstringne`tab-prefix`: `tabprefix` (výchozí) nebo `tagprefix`.
tabFormatstringne`tab-prefix`: `tabGradient` (výchozí), `ampHex` nebo `minimessage`.
erastringneÉra syntaxe (`legacy`, `json`, `jsonHex`, `components`, `snbt`), použije se jen u neznámé verze serveru.
spansobject[]neÚseky `{ text, color: "#rrggbb" | null, bold?, italic?, underlined?, strikethrough?, obfuscated? }`, nejvýš 200. Pošlete buď `spans`, nebo `doc`.
docobjectne`{ segments: [{ text, fill, … }] }`, kde `fill` je `{ kind: "solid", color }`, `{ kind: "gradient", colors: [2–5 barev] }` nebo `{ kind: "rainbow" }`.

Ukázka těla

{
  "action": "lp-prefix",
  "target": "vip",
  "targetKind": "group",
  "priority": 50,
  "doc": {
    "segments": [
      {
        "text": "[VIP] ",
        "fill": {
          "kind": "solid",
          "color": "#ffaa00"
        },
        "bold": true
      }
    ]
  }
}

Ukázka odpovědi

{
  "ok": true,
  "command": "lp group vip meta setprefix 50 \"&#FFAA00&l[VIP] \"",
  "warnings": [],
  "delivered": null
}

Možné chyby

  • 400INVALID Neplatné tělo požadavku.
  • 400TARGET Neplatný hráč nebo skupina.
  • 400PRIORITY Priorita musí být celé číslo 0–1000.
  • 400EMPTY Text je prázdný.
  • 400TOO_LONG Text je moc dlouhý (nick nejvýš 64 znaků, ostatní 256).
  • 400TOO_MANY_PARTS Text má moc barevných úseků.
  • 409JOB Na serveru běží změna (job).
  • 409 Server neběží.
  • 429RATE_LIMITED Překročený limit změn, zkuste to později.
  • 412 Server teď není dostupný v herním panelu (hláška `panel.unavailable` v poli `msg`).
GET/services/{id}/minecraft/worldsSvěty serveru a připravená stažení

Vrátí aktivní a uložené světy (nejvýš 5), připravená stažení, běžící job světa, sloty záloh a stav serveru.

Oprávnění: services:files

Ukázka odpovědi

{
  "active": "world",
  "activeValid": true,
  "worlds": [
    {
      "name": "world",
      "active": true,
      "exists": true,
      "extraFolders": [],
      "version": "1.21.4",
      "mtime": 1730970000,
      "seed": null,
      "createdAt": null
    },
    {
      "name": "creative",
      "active": false,
      "exists": true,
      "extraFolders": [],
      "version": "1.21.4",
      "mtime": 1730800000,
      "seed": "12345",
      "createdAt": "2026-11-01T18:00:00.000Z"
    }
  ],
  "unchecked": 0,
  "maxWorlds": 5,
  "exports": [
    {
      "id": "a1b2c3d4e5",
      "world": "world",
      "status": "ready",
      "createdAt": "2026-11-07T10:15:00.000Z",
      "expiresAt": "2026-11-07T12:15:00.000Z",
      "bytes": 104857600,
      "error": null,
      "errorMsg": null
    }
  ],
  "job": null,
  "jobOther": false,
  "backups": {
    "used": 1,
    "limit": 3,
    "free": true
  },
  "power": "running",
  "busy": null,
  "version": "1.21.4",
  "uploadMaxMb": 95,
  "canPower": true
}

Možné chyby

  • 412NO_PANEL Server teď není dostupný v herním panelu.
  • 429 Příliš mnoho požadavků, zkuste to za chvíli.
POST/services/{id}/minecraft/worldsStažení, přepnutí, smazání a nový svět

`export` připraví archiv světa na pozadí (202), stáhnete ho přes worlds/download, nejvýš 3× za hodinu. `switch` a `reset` spustí job (202, průběh přes minecraft/job), server se během něj vypne a pak zase zapne; `delete` uložený svět trvale smaže. Kromě `export` je potřeba i oprávnění Napájení; změny nejvýš 10× za hodinu.

Oprávnění: services:files

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringano`export`, `switch`, `delete` nebo `reset`.
worldstringne`export`, `switch`, `delete`: název světa z výpisu (1–64 znaků).
oldstringne`reset` (povinné): `delete` starý svět smazat, `keep` ponechat jako uložený.
keepAsstringne`reset` s `keep`: nový název starého světa (1–32 znaků A–Z, a–z, 0–9, _ a -).
seedstringne`reset`: seed nového světa (nejvýš 128 znaků), prázdný = náhodný.
levelTypestringne`reset`: `normal` (výchozí), `flat`, `large_biomes` nebo `amplified`.
structuresbooleanne`reset`: generovat stavby, výchozí `true`.
confirmNoBackupbooleanne`reset` s `delete`: potvrdit smazání bez zálohy, když není volný slot záloh.

Ukázka těla

{
  "action": "reset",
  "old": "keep",
  "keepAs": "stary_svet",
  "seed": "",
  "levelType": "normal",
  "structures": true
}

Ukázka odpovědi

{
  "ok": true,
  "job": {
    "id": "k3j9x2m1q8",
    "kind": "world-reset",
    "status": "queued",
    "step": "queued",
    "log": [],
    "startedAt": "2026-11-07T10:15:00.000Z",
    "updatedAt": "2026-11-07T10:15:00.000Z",
    "error": null,
    "errorMsg": null,
    "progress": null
  }
}

Možné chyby

  • 400INVALID Neplatné tělo požadavku.
  • 400BAD_NAME Neplatný název světa.
  • 400RESERVED_NAME Název patří složce serveru.
  • 400BAD_SEED Neplatný seed.
  • 403FORBIDDEN Chybí oprávnění Napájení.
  • 404NO_SUCH_WORLD Svět na serveru není.
  • 409ACTIVE_WORLD Svět je právě aktivní.
  • 409NAME_TAKEN Složka s tímto názvem už existuje.
  • 409TOO_MANY_WORLDS Na serveru může být nejvýš 5 světů.
  • 409NEEDS_CONFIRM Starý svět se smaže bez zálohy, pošlete `confirmNoBackup: true`.
  • 409JOB_RUNNING Na serveru už běží jiná změna.
  • 409EXPORT_RUNNING Stažení světa se už připravuje.
  • 409DISK Na disku serveru je málo místa.
  • 409STATE Server se právě zapíná nebo vypíná.
  • 429RATE_LIMITED Překročený limit změn, zkuste to později.
  • 412NO_PANEL Server teď není dostupný v herním panelu.
GET/services/{id}/minecraft/worlds/downloadStažení připraveného světa

Stáhne archiv připravený akcí `export` (ZIP nebo tar.gz). Po úplném stažení se archiv na serveru smaže; najednou jde jedno stahování na službu, nejvýš 10 za hodinu.

Oprávnění: services:files

Parametry v adrese

NázevTypPovinnéPopis
idstringano`id` stažení z `exports` (10 hex znaků).
formatstringne`zip` (výchozí) nebo `tar.gz`.

Ukázka odpovědi

HTTP/1.1 200 OK
Content-Type: application/zip
Content-Disposition: attachment; filename="world-2026-11-07.zip"

(binary archive)

Možné chyby

  • 400INVALID Chybí nebo je neplatné `id`.
  • 404EXPORT_GONE Stažení už není připravené, připravte ho znovu.
  • 429DOWNLOAD_BUSY Stahování už probíhá.
  • 429RATE_LIMITED Příliš mnoho stažení.
  • 412NO_PANEL Server teď není dostupný v herním panelu.

Domény

POST/services/{id}/domain/auth-infoOdeslat AUTH-ID pro převod domény

Požádá registrátora, aby poslal AUTH-ID (kód pro převod domény k jinému registrátorovi) e-mailem držiteli domény. Kód se v odpovědi nevrací. Smí jen vlastník domény, nejvýš 3krát za hodinu. Oprávnění services:secrets lze dát jen klíči omezenému na IP adresy.

Oprávnění: services:secrets

Tělo požadavku (JSON)

NázevTypPovinnéPopis
localestringneJazyk chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka těla

{
  "locale": "cs"
}

Ukázka odpovědi

{
  "ok": true
}

Možné chyby

  • 400invalid Tělo požadavku obsahuje neznámé pole.
  • 403 Akci smí jen vlastník domény, ne člen sdílené služby.
  • 404 Služba neexistuje, nepatří vám nebo na ni klíč nemá přístup.
  • 409inactive Doména ještě není aktivní.
  • 429 Překročený limit 3 žádostí za hodinu.
  • 503unavailable Odeslání je dočasně nedostupné. Zkuste to později.
  • 422failed Registrátor žádost odmítl.
GET/services/{id}/domain/connectPlán napojení domény na službu

Spočítá DNS záznamy, které nasměrují doménu nebo subdoménu na vaši VPS nebo herní server (Minecraft, FiveM), a ukáže, co se v zóně přidá a co nahradí. Nic nemění. U domény mimo naše DNS vrátí mode manual se záznamy k ručnímu nastavení.

Oprávnění: domains:read

Parametry v adrese

NázevTypPovinnéPopis
servicestringanoID vaší aktivní VPS nebo herního serveru (Minecraft, FiveM). Sdílené služby nejdou.
hoststringanoJméno v doméně: @ pro doménu samotnou, nebo subdoména (písmena, číslice, pomlčky, bez * a _).
localestringneJazyk chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka odpovědi

{
  "mode": "zone",
  "domain": "example.com",
  "host": "@",
  "kind": "vps",
  "records": [
    {
      "type": "A",
      "host": "@",
      "fqdn": "example.com",
      "value": "203.0.113.25",
      "ttl": 300
    },
    {
      "type": "AAAA",
      "host": "@",
      "fqdn": "example.com",
      "value": "2001:db8::25",
      "ttl": 300
    }
  ],
  "notes": [],
  "add": [
    {
      "type": "AAAA",
      "host": "@",
      "fqdn": "example.com",
      "value": "2001:db8::25",
      "ttl": 300
    }
  ],
  "replace": [
    {
      "type": "A",
      "host": "@",
      "fqdn": "example.com",
      "value": "198.51.100.7",
      "ttl": 3600
    }
  ],
  "unchanged": false,
  "withinLimit": true,
  "planHash": "3f9a0c1b2d4e5f60718293ab"
}

Možné chyby

  • 403 Akci smí jen vlastník domény, ne člen sdílené služby.
  • 404 Služba neexistuje, nepatří vám nebo na ni klíč nemá přístup.
  • 409inactive Doména ještě není aktivní.
  • 400host Neplatné jméno: zadejte @ pro doménu samotnou, nebo subdoménu z písmen, číslic a pomlček.
  • 404service Služba neexistuje, nepatří vám, není aktivní nebo ji napojit nejde.
  • 409no_address Služba nemá veřejnou adresu, na kterou by šlo doménu napojit.
  • 503unavailable Adresu služby nebo stav DNS teď nejde zjistit.
  • 429 Překročený limit 60 požadavků za 10 minut.
POST/services/{id}/domain/connectNapojit doménu na službu

Založí v zóně záznamy z plánu (A, AAAA, u Minecraftu i SRV _minecraft._tcp, TTL 300). Pošlete planHash z GET; když plán nahrazuje stávající záznamy, je potřeba confirm: true. Jen pro doménu na našich DNS.

Oprávnění: domains:write

Tělo požadavku (JSON)

NázevTypPovinnéPopis
serviceIdstringanoID vaší aktivní VPS nebo herního serveru, stejné jako v GET.
hoststringanoJméno v doméně, stejné jako v GET (@ nebo subdoména).
planHashstringanoOtisk plánu z GET (24 hex znaků). Když se zóna mezitím změní, vrátí se 409 changed s novým plánem.
confirmbooleannePotvrzení, že se stávající záznamy z replace nahradí. Povinné, když replace není prázdné.
localestringneJazyk chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka těla

{
  "serviceId": "clx9k2m4p0000svc01abcdef",
  "host": "@",
  "planHash": "3f9a0c1b2d4e5f60718293ab",
  "confirm": true
}

Ukázka odpovědi

{
  "ok": true,
  "mode": "zone",
  "domain": "example.com",
  "host": "@",
  "kind": "vps",
  "records": [
    {
      "type": "A",
      "host": "@",
      "fqdn": "example.com",
      "value": "203.0.113.25",
      "ttl": 300
    },
    {
      "type": "AAAA",
      "host": "@",
      "fqdn": "example.com",
      "value": "2001:db8::25",
      "ttl": 300
    }
  ],
  "notes": [],
  "add": [],
  "replace": [],
  "unchanged": true,
  "withinLimit": true,
  "planHash": "3f9a0c1b2d4e5f60718293ab"
}

Možné chyby

  • 400invalid Chybí povinné pole nebo má špatný tvar.
  • 403 Akci smí jen vlastník domény, ne člen sdílené služby.
  • 404 Služba neexistuje, nepatří vám nebo na ni klíč nemá přístup.
  • 409inactive Doména ještě není aktivní.
  • 400host Neplatné jméno: zadejte @ pro doménu samotnou, nebo subdoménu z písmen, číslic a pomlček.
  • 404service Služba neexistuje, nepatří vám, není aktivní nebo ji napojit nejde.
  • 409no_address Služba nemá veřejnou adresu, na kterou by šlo doménu napojit.
  • 503unavailable Adresu služby nebo stav DNS teď nejde zjistit.
  • 409manual Doména nepoužívá naše DNS. Záznamy nastavte u svého DNS poskytovatele.
  • 409changed Zóna se od GET změnila. Odpověď obsahuje nový plán v poli plan.
  • 409confirm Plán nahrazuje stávající záznamy a chybí confirm: true. Odpověď obsahuje plán v poli plan.
  • 409limit Zóna by překročila limit 200 záznamů.
  • 429 Překročený limit 60 změn DNS za 10 minut (sdílený se zápisy DNS záznamů).
GET/services/{id}/domain/dnsVýpis DNS záznamů

Vrátí záznamy zóny domény na našich DNS (A, AAAA, CNAME, MX, TXT, SRV, CAA), názvové servery a počet záznamů vůči limitu 200. delegated: false znamená, že zóna je připravená, ale doména zatím na naše DNS neukazuje.

Oprávnění: domains:read

Parametry v adrese

NázevTypPovinnéPopis
localestringneJazyk chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka odpovědi

{
  "zone": "example.com",
  "unicode": "example.com",
  "records": [
    {
      "id": "a1b2c3d4e5f60718293a",
      "type": "A",
      "host": "@",
      "ttl": 3600,
      "value": "203.0.113.25",
      "fields": {
        "host": "@",
        "ttl": "3600",
        "address": "203.0.113.25"
      }
    },
    {
      "id": "b2c3d4e5f60718293a4b",
      "type": "MX",
      "host": "@",
      "ttl": 3600,
      "value": "10 mail.example.com",
      "fields": {
        "host": "@",
        "ttl": "3600",
        "preference": "10",
        "exchange": "mail.example.com"
      }
    },
    {
      "id": "c3d4e5f60718293a4b5c",
      "type": "TXT",
      "host": "@",
      "ttl": 3600,
      "value": "v=spf1 mx -all",
      "fields": {
        "host": "@",
        "ttl": "3600",
        "text": "v=spf1 mx -all"
      }
    }
  ],
  "nameservers": [
    "ns1.stormhost.eu",
    "ns2.stormhost.eu"
  ],
  "count": 3,
  "limit": 200,
  "delegated": true
}

Možné chyby

  • 403 Akci smí jen vlastník domény, ne člen sdílené služby.
  • 404 Služba neexistuje, nepatří vám nebo na ni klíč nemá přístup.
  • 400 Služba není doména.
  • 409inactive Doména ještě není aktivní.
  • 409no_zone Doména nemá zónu na našich DNS. Připravte ji přes domain/zone nebo přepněte názvové servery na naše.
  • 503unavailable DNS server teď neodpovídá. Zkuste to později.
  • 422failed Změnu se nepodařilo provést.
POST/services/{id}/domain/dnsPřidat DNS záznam

Přidá záznam do zóny domény na našich DNS. Všechny hodnoty v record se posílají jako text. Odpověď obsahuje ID nového záznamu a celý nový výpis zóny.

Oprávnění: domains:write

Tělo požadavku (JSON)

NázevTypPovinnéPopis
recordobjectanoNový záznam.
record.typestringanoTyp záznamu: A, AAAA, CNAME, MX, TXT, SRV nebo CAA.
record.hoststringneJméno: @ nebo prázdné pro doménu samotnou, relativní jméno (www, _dmarc, *.dev) nebo celé jméno končící doménou.
record.ttlstringneTTL v sekundách jako text, 60 až 86400. Prázdné = 3600.
record.addressstringneA: IPv4 adresa, AAAA: IPv6 adresa.
record.targetstringneCNAME a SRV: cílové jméno (u SRV i . = služba není dostupná). CNAME nesmí být na doméně samotné ani vedle jiného záznamu stejného jména.
record.preferencestringneMX: priorita 0 až 65535 jako text.
record.exchangestringneMX: jméno poštovního serveru (ne IP adresa).
record.textstringneTXT: text do 2000 znaků bez řídicích znaků.
record.prioritystringneSRV: priorita 0 až 65535 jako text. Jméno SRV musí mít tvar _služba._protokol (tcp, udp, tls, sctp).
record.weightstringneSRV: váha 0 až 65535 jako text.
record.portstringneSRV: port 0 až 65535 jako text.
record.flagsstringneCAA: příznak 0 nebo 128 jako text.
record.tagstringneCAA: issue, issuewild nebo iodef.
record.valuestringneCAA: u issue a issuewild doména certifikační autority, u iodef adresa mailto: nebo https:.
localestringneJazyk chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka těla

{
  "record": {
    "type": "MX",
    "host": "@",
    "ttl": "3600",
    "preference": "10",
    "exchange": "mail.example.com"
  }
}

Ukázka odpovědi

{
  "ok": true,
  "id": "b2c3d4e5f60718293a4b",
  "zone": "example.com",
  "unicode": "example.com",
  "records": [
    {
      "id": "a1b2c3d4e5f60718293a",
      "type": "A",
      "host": "@",
      "ttl": 3600,
      "value": "203.0.113.25",
      "fields": {
        "host": "@",
        "ttl": "3600",
        "address": "203.0.113.25"
      }
    },
    {
      "id": "b2c3d4e5f60718293a4b",
      "type": "MX",
      "host": "@",
      "ttl": 3600,
      "value": "10 mail.example.com",
      "fields": {
        "host": "@",
        "ttl": "3600",
        "preference": "10",
        "exchange": "mail.example.com"
      }
    },
    {
      "id": "c3d4e5f60718293a4b5c",
      "type": "TXT",
      "host": "@",
      "ttl": 3600,
      "value": "v=spf1 mx -all",
      "fields": {
        "host": "@",
        "ttl": "3600",
        "text": "v=spf1 mx -all"
      }
    }
  ],
  "nameservers": [
    "ns1.stormhost.eu",
    "ns2.stormhost.eu"
  ],
  "count": 3,
  "limit": 200,
  "delegated": true
}

Možné chyby

  • 400 Záznam neprošel kontrolou. Pole code říká proč (např. type, host, host_zone, cname_apex, srv_host, ipv4, ipv6, target, text, ttl, caa_flags, caa_tag, caa_value, cname_conflict, duplicate, limit) a pole field, kterého pole se to týká.
  • 403 Akci smí jen vlastník domény, ne člen sdílené služby.
  • 404 Služba neexistuje, nepatří vám nebo na ni klíč nemá přístup.
  • 400 Služba není doména.
  • 409inactive Doména ještě není aktivní.
  • 409no_zone Doména nemá zónu na našich DNS. Připravte ji přes domain/zone nebo přepněte názvové servery na naše.
  • 503unavailable DNS server teď neodpovídá. Zkuste to později.
  • 422failed Změnu se nepodařilo provést.
  • 429 Překročený limit 60 změn za 10 minut.
PATCH/services/{id}/domain/dnsUpravit DNS záznam

Upraví záznam podle ID z výpisu. Vynechaná nebo prázdná pole zůstanou beze změny, typ záznamu změnit nejde. ID se počítá z hodnoty záznamu, takže po změně jména nebo hodnoty vrátí odpověď nové ID.

Oprávnění: domains:write

Tělo požadavku (JSON)

NázevTypPovinnéPopis
idstringanoID záznamu z výpisu (20 hex znaků).
recordobjectanoPole, která se mají změnit (stejná jako u přidání, bez type).
record.hoststringneJméno: @ nebo prázdné pro doménu samotnou, relativní jméno (www, _dmarc, *.dev) nebo celé jméno končící doménou.
record.ttlstringneTTL v sekundách jako text, 60 až 86400. Prázdné = 3600.
record.addressstringneA: IPv4 adresa, AAAA: IPv6 adresa.
record.targetstringneCNAME a SRV: cílové jméno (u SRV i . = služba není dostupná). CNAME nesmí být na doméně samotné ani vedle jiného záznamu stejného jména.
record.preferencestringneMX: priorita 0 až 65535 jako text.
record.exchangestringneMX: jméno poštovního serveru (ne IP adresa).
record.textstringneTXT: text do 2000 znaků bez řídicích znaků.
record.prioritystringneSRV: priorita 0 až 65535 jako text. Jméno SRV musí mít tvar _služba._protokol (tcp, udp, tls, sctp).
record.weightstringneSRV: váha 0 až 65535 jako text.
record.portstringneSRV: port 0 až 65535 jako text.
record.flagsstringneCAA: příznak 0 nebo 128 jako text.
record.tagstringneCAA: issue, issuewild nebo iodef.
record.valuestringneCAA: u issue a issuewild doména certifikační autority, u iodef adresa mailto: nebo https:.
localestringneJazyk chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka těla

{
  "id": "a1b2c3d4e5f60718293a",
  "record": {
    "address": "203.0.113.26",
    "ttl": "600"
  }
}

Ukázka odpovědi

{
  "ok": true,
  "id": "d4e5f60718293a4b5c6d",
  "zone": "example.com",
  "unicode": "example.com",
  "records": [
    {
      "id": "a1b2c3d4e5f60718293a",
      "type": "A",
      "host": "@",
      "ttl": 3600,
      "value": "203.0.113.25",
      "fields": {
        "host": "@",
        "ttl": "3600",
        "address": "203.0.113.25"
      }
    },
    {
      "id": "b2c3d4e5f60718293a4b",
      "type": "MX",
      "host": "@",
      "ttl": 3600,
      "value": "10 mail.example.com",
      "fields": {
        "host": "@",
        "ttl": "3600",
        "preference": "10",
        "exchange": "mail.example.com"
      }
    },
    {
      "id": "c3d4e5f60718293a4b5c",
      "type": "TXT",
      "host": "@",
      "ttl": 3600,
      "value": "v=spf1 mx -all",
      "fields": {
        "host": "@",
        "ttl": "3600",
        "text": "v=spf1 mx -all"
      }
    }
  ],
  "nameservers": [
    "ns1.stormhost.eu",
    "ns2.stormhost.eu"
  ],
  "count": 3,
  "limit": 200,
  "delegated": true
}

Možné chyby

  • 400 Záznam neprošel kontrolou. Pole code říká proč (např. type, host, host_zone, cname_apex, srv_host, ipv4, ipv6, target, text, ttl, caa_flags, caa_tag, caa_value, cname_conflict, duplicate, limit) a pole field, kterého pole se to týká.
  • 404not_found Záznam s tímto ID v zóně není (mohl se mezitím změnit).
  • 403 Akci smí jen vlastník domény, ne člen sdílené služby.
  • 404 Služba neexistuje, nepatří vám nebo na ni klíč nemá přístup.
  • 400 Služba není doména.
  • 409inactive Doména ještě není aktivní.
  • 409no_zone Doména nemá zónu na našich DNS. Připravte ji přes domain/zone nebo přepněte názvové servery na naše.
  • 503unavailable DNS server teď neodpovídá. Zkuste to později.
  • 422failed Změnu se nepodařilo provést.
  • 429 Překročený limit 60 změn za 10 minut.
DELETE/services/{id}/domain/dnsSmazat DNS záznam

Smaže záznam podle ID z výpisu. ID se posílá v JSON těle požadavku. Odpověď obsahuje nový výpis zóny.

Oprávnění: domains:write

Tělo požadavku (JSON)

NázevTypPovinnéPopis
idstringanoID záznamu z výpisu (20 hex znaků).
localestringneJazyk chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka těla

{
  "id": "c3d4e5f60718293a4b5c"
}

Ukázka odpovědi

{
  "ok": true,
  "zone": "example.com",
  "unicode": "example.com",
  "records": [
    {
      "id": "a1b2c3d4e5f60718293a",
      "type": "A",
      "host": "@",
      "ttl": 3600,
      "value": "203.0.113.25",
      "fields": {
        "host": "@",
        "ttl": "3600",
        "address": "203.0.113.25"
      }
    },
    {
      "id": "b2c3d4e5f60718293a4b",
      "type": "MX",
      "host": "@",
      "ttl": 3600,
      "value": "10 mail.example.com",
      "fields": {
        "host": "@",
        "ttl": "3600",
        "preference": "10",
        "exchange": "mail.example.com"
      }
    },
    {
      "id": "c3d4e5f60718293a4b5c",
      "type": "TXT",
      "host": "@",
      "ttl": 3600,
      "value": "v=spf1 mx -all",
      "fields": {
        "host": "@",
        "ttl": "3600",
        "text": "v=spf1 mx -all"
      }
    }
  ],
  "nameservers": [
    "ns1.stormhost.eu",
    "ns2.stormhost.eu"
  ],
  "count": 3,
  "limit": 200,
  "delegated": true
}

Možné chyby

  • 400invalid Chybí id nebo má špatný tvar.
  • 404not_found Záznam s tímto ID v zóně není.
  • 403 Akci smí jen vlastník domény, ne člen sdílené služby.
  • 404 Služba neexistuje, nepatří vám nebo na ni klíč nemá přístup.
  • 400 Služba není doména.
  • 409inactive Doména ještě není aktivní.
  • 409no_zone Doména nemá zónu na našich DNS. Připravte ji přes domain/zone nebo přepněte názvové servery na naše.
  • 503unavailable DNS server teď neodpovídá. Zkuste to později.
  • 422failed Změnu se nepodařilo provést.
  • 429 Překročený limit 60 změn za 10 minut.
POST/services/{id}/domain/nameserversZměnit názvové servery domény

Změní názvové servery u registru: ours = naše DNS (zóna se založí, pokud chybí), custom = vlastní servery (2 až 6), wedos = výchozí DNS registrátora. Zóna na našich DNS se při přepnutí jinam nemaže, takže jde přepnout zpět. Změna se ve světě projeví až po vypršení TTL u registru.

Oprávnění: domains:write

Tělo požadavku (JSON)

NázevTypPovinnéPopis
modestringanoours, custom nebo wedos.
nameserversarrayneJen u custom: 2 až 6 serverů ve tvaru { name, ipv4?, ipv6? }.
nameservers[].namestringanoJméno serveru, např. ns1.example.net.
nameservers[].ipv4stringneIPv4 adresa. Jen u serveru uvnitř vlastní domény (např. ns1.example.com pro example.com), tam je potřeba aspoň jedna adresa. Jinak se ignoruje.
nameservers[].ipv6stringneIPv6 adresa, platí totéž co u ipv4.
localestringneJazyk chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka těla

{
  "mode": "custom",
  "nameservers": [
    {
      "name": "ns1.example.com",
      "ipv4": "203.0.113.53"
    },
    {
      "name": "ns2.example.net"
    }
  ]
}

Ukázka odpovědi

{
  "ok": true,
  "mode": "custom",
  "nsset": null,
  "nameservers": [
    "ns1.example.com",
    "ns2.example.net"
  ]
}

Možné chyby

  • 400invalid Neplatné tělo požadavku (např. neznámý mode).
  • 400ns_count U custom je potřeba 2 až 6 různých serverů.
  • 400ns_name Neplatné jméno serveru. Pole index říká kterého.
  • 400ns_glue Server uvnitř domény potřebuje IPv4 nebo IPv6 adresu.
  • 400ns_ip Neplatná IP adresa serveru.
  • 400ns_ours Vlastní servery jsou jen naše. Použijte mode ours.
  • 403 Akci smí jen vlastník domény, ne člen sdílené služby.
  • 404 Služba neexistuje, nepatří vám nebo na ni klíč nemá přístup.
  • 409inactive Doména ještě není aktivní.
  • 429 Překročený limit 10 změn za 10 minut.
  • 503unavailable Registr nebo DNS server je teď nedostupný. Zkuste to později.
  • 422failed Registr změnu odmítl.
POST/services/{id}/domain/zonePřipravit zónu na našich DNS

Založí prázdnou zónu domény na našich DNS bez změny názvových serverů. Hodí se po převodu domény: nejdřív naplníte záznamy přes domain/dns a teprve pak přepnete NS. Záznamy z dosavadních DNS se nepřenášejí. Když zóna už existuje, vrátí ok: true a existed: true.

Oprávnění: domains:write

Tělo požadavku (JSON)

NázevTypPovinnéPopis
localestringneJazyk chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka těla

{
  "locale": "cs"
}

Ukázka odpovědi

{
  "ok": true
}

Možné chyby

  • 400invalid Tělo požadavku obsahuje neznámé pole.
  • 403 Akci smí jen vlastník domény, ne člen sdílené služby.
  • 404 Služba neexistuje, nepatří vám nebo na ni klíč nemá přístup.
  • 409inactive Doména ještě není aktivní.
  • 429 Překročený limit 10 požadavků za 10 minut.
  • 503not_ready DNS pro domény teď není připravené. Zkuste to později.
  • 422failed Zónu se nepodařilo založit.

Platby a doklady

GET/creditZůstatek a historie kreditu

Vrátí zůstatek kreditu v Kč, z toho bonus, nevratnou a vratnou část, čekající dobití a historii pohybů (50 na stránku, od nejnovějšího). Když kredit na účtu ještě není dostupný, vrátí jen available: false.

Oprávnění: billing:read

Parametry v adrese

NázevTypPovinnéPopis
pageintegerneStránka historie od 1. Výchozí je 1.
localestringneJazyk chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka odpovědi

{
  "available": true,
  "balanceCzk": 450,
  "bonusCzk": 50,
  "nonRefundableCzk": 0,
  "refundableCzk": 400,
  "pending": [
    {
      "orderId": "clx9k2m4p0001ord02abcdef",
      "invoiceId": "clx9k2m4p0001inv02abcdef",
      "number": "DK-2026-0007",
      "amountCzk": 200,
      "dueAt": "2026-11-14T23:59:59.000Z",
      "createdAt": "2026-11-06T12:00:00.000Z",
      "paymentStarted": false
    }
  ],
  "history": {
    "items": [
      {
        "id": "clx9k2m4p0000ctx01abcdef",
        "seq": 2,
        "type": "SPEND",
        "kind": null,
        "amountCzk": -249,
        "balanceAfterCzk": 450,
        "createdAt": "2026-11-02T10:15:00.000Z",
        "invoiceId": "clx9k2m4p0000inv01abcdef",
        "invoiceNumber": "2026-0042",
        "orderId": "clx9k2m4p0000ord01abcdef",
        "note": null,
        "refundRequestId": null
      },
      {
        "id": "clx9k2m4p0000ctx00abcdef",
        "seq": 1,
        "type": "TOPUP",
        "kind": null,
        "amountCzk": 699,
        "balanceAfterCzk": 699,
        "createdAt": "2026-10-20T08:00:00.000Z",
        "invoiceId": "clx9k2m4p0000inv00abcdef",
        "invoiceNumber": "DK-2026-0005",
        "orderId": "clx9k2m4p0000ord00abcdef",
        "note": null,
        "refundRequestId": null
      }
    ],
    "page": 1,
    "pages": 1,
    "total": 2
  }
}

Možné chyby

  • 429rate_limited Překročený limit 60 dotazů za minutu.
POST/credit/payZaplatit fakturu z kreditu

Zaplatí nezaplacenou fakturu objednávky (např. nové služby nebo upgradu) z kreditu účtu. Kredit se odečte hned, založení služby nebo provedení upgradu doběhne až po odpovědi. Faktury za dobití kreditu takhle zaplatit nejde.

Oprávnění: billing:write

Tělo požadavku (JSON)

NázevTypPovinnéPopis
invoiceIdstringanoID nezaplacené faktury.
expectedAmountCzknumberanoČástka faktury v Kč, kterou očekáváte. Musí přesně sedět s cenou objednávky, jinak vrátí 409 amount_changed s aktuální částkou.
ackOpenGatewaybooleannePotvrzení, že chcete platit kreditem, i když je k faktuře otevřená platba na platební bráně. Výchozí je false.
localestringneJazyk chybových hlášek: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka těla

{
  "invoiceId": "clx9k2m4p0000inv01abcdef",
  "expectedAmountCzk": 249
}

Ukázka odpovědi

{
  "ok": true,
  "orderId": "clx9k2m4p0000ord01abcdef",
  "amountCzk": 249,
  "balanceCzk": 201,
  "next": "/cs/order/clx9k2m4p0000ord01abcdef?credit=paid"
}

Možné chyby

  • 400invalid Chybí povinné pole nebo má špatný tvar.
  • 403locked Účet je dočasně zamčený.
  • 404invoice_not_found Faktura neexistuje nebo nepatří vám.
  • 409insufficient Kredit nestačí. Odpověď obsahuje balanceCzk a neededCzk.
  • 409amount_changed Částka se změnila. Aktuální je v amountCzk.
  • 409closed Faktura už je zaplacená nebo zrušená.
  • 409expired Zálohová faktura propadla po splatnosti.
  • 409upgrade_expired Nabídka upgradu platila jen do konce období služby a byla zrušena.
  • 409gateway_open K faktuře je otevřená platba na platební bráně. Pošlete ackOpenGateway: true.
  • 409payment_in_progress Platba na bráně právě probíhá.
  • 409paid_unreconciled Platba už dorazila, ale ještě není spárovaná.
  • 409topup_not_payable Fakturu za dobití kreditu nejde zaplatit kreditem.
  • 409not_payable Faktura nepatří k objednávce, kterou jde zaplatit.
  • 409capacity Pro objednanou službu teď není volná kapacita.
  • 409billing_profile_incomplete Chybí fakturační údaje účtu. Odpověď obsahuje settingsUrl.
  • 409foreign_eu_vat Objednávky firem z jiných států EU se zatím vyřizují individuálně.
  • 429rate_limited Překročený limit 10 pokusů za minutu.
  • 503unavailable Kredit teď není dostupný.
  • 503gateway_check_failed Stav platby na bráně teď nejde ověřit. Zkuste to později.
  • 503capacity_busy Kapacitu teď nejde ověřit. Zkuste to za chvíli.
GET/invoicesSeznam dokladů

Vrátí doklady účtu od nejnovějšího i s položkami. Částky jsou v Kč.

Oprávnění: billing:read

Parametry v adrese

NázevTypPovinnéPopis
statusstringneFiltr podle stavu: PENDING, PAID, CANCELLED nebo REFUNDED. Jiná hodnota se ignoruje.
limitintegernePočet dokladů, 1 až 200. Výchozí je 50.

Ukázka odpovědi

{
  "data": [
    {
      "id": "clx9k2m4p0000inv01abcdef",
      "number": "2026-0042",
      "status": "PAID",
      "totalCzk": 249,
      "currency": "CZK",
      "items": [
        {
          "description": "VPS Start (1 měsíc)",
          "priceCzk": 249,
          "quantity": 1
        }
      ],
      "dueAt": "2026-11-14T23:59:59.000Z",
      "paidAt": "2026-11-02T10:15:00.000Z",
      "createdAt": "2026-11-01T08:00:00.000Z"
    }
  ]
}
GET/invoices/{id}/pdfPDF faktury

Stáhne PDF zaplacené nebo vrácené faktury. Nezaplacené doklady PDF nemají.

Oprávnění: billing:read

Parametry v adrese

NázevTypPovinnéPopis
langstringneen = anglický název souboru, jinak český.

Ukázka odpovědi

application/pdf (Content-Disposition: attachment; filename="faktura-2026-0042.pdf")

Možné chyby

  • 404not_found Faktura neexistuje, nepatří vám nebo není zaplacená.
  • 409preparing Faktura se teprve vystavuje. Zkuste to později.
  • 429rate_limited Překročený limit 20 stažení za minutu.
  • 503not_ready PDF se právě připravuje. Zkuste to za pár sekund (hlavička Retry-After).
  • 503unavailable PDF teď nejde načíst. Zkuste to později.
GET/services/{id}/external-invoices/{key}/pdfPDF faktury z pravidelné fakturace

Stáhne PDF faktury služby, kterou platíte pravidelnou fakturou mimo portál. {key} je 22znakový klíč faktury z přehledu plateb služby v portálu. Smí jen vlastník služby (VPS, herní server, webhosting).

Oprávnění: billing:read

Parametry v adrese

NázevTypPovinnéPopis
langstringneJazyk názvu souboru: cs, en, sk, pl nebo de. Výchozí je cs.

Ukázka odpovědi

application/pdf (Content-Disposition: attachment; filename="faktura-2026-0042.pdf")

Možné chyby

  • 404not_found Faktura nebo služba neexistuje, nepatří vám nebo nejste vlastník. Odpověď je vždy stejná.
  • 429rate_limited Překročený limit 20 stažení za minutu.
  • 503not_ready PDF se právě připravuje. Zkuste to za pár sekund (hlavička Retry-After).
  • 503unavailable PDF teď nejde načíst. Zkuste to později.
GET/services/{id}/game-upgradeMožnosti změny balíčku hry nebo bota

Vrátí současný balíček herního serveru nebo Discord bota, větší a menší balíčky s cenami a doplatkem, doplněk záloh a rozpracované či naplánované změny. Jen pro vlastníka služby.

Oprávnění: services:read

Parametry v adrese

NázevTypPovinnéPopis
viewstringnerestart = vrátí jen { restartPending } (čeká server na restart po změně balíčku); funguje i pro členy.
localestringneJazyk textů v odpovědi: en, jinak cs.

Ukázka odpovědi

{
  "product": "minecraft",
  "productName": "Minecraft",
  "current": {
    "planLabel": "Minecraft 4 GB",
    "packageId": "mc-4gb",
    "legacy": false,
    "memoryMib": 4096,
    "diskMib": 30720,
    "cpu": 200,
    "databases": 1,
    "allocations": 2,
    "backups": 0
  },
  "backups": {
    "included": 0,
    "addon": 0,
    "grandfathered": 0,
    "addonAvailable": true,
    "addonPriceCzk": 120,
    "addonUnitCzk": 0,
    "maxAddon": 1
  },
  "monthlyCzk": 249,
  "period": {
    "start": "2026-11-01T00:00:00.000Z",
    "end": "2026-12-01T00:00:00.000Z",
    "remainingDays": 24,
    "periodDays": 30
  },
  "packages": [
    {
      "id": "mc-6gb",
      "name": "Minecraft 6 GB",
      "cores": 3,
      "cpuUnlimited": false,
      "ramGb": 6,
      "diskGb": 45,
      "ports": 3,
      "databases": 2,
      "includedBackups": 0,
      "priceCzk": 349,
      "recommended": true,
      "fits": true,
      "message": null
    }
  ],
  "options": [
    {
      "packageId": "mc-6gb",
      "addon": 0,
      "monthlyCzk": 349,
      "chargeCzk": 80,
      "after": {
        "memoryMib": 6144,
        "diskMib": 46080,
        "cpu": 300,
        "databases": 2,
        "allocations": 3,
        "backups": 0
      }
    }
  ],
  "effectiveAt": "2026-12-01T00:00:00.000Z",
  "lowerPackages": [],
  "downgradeOptions": [],
  "removeBackup": {
    "available": false
  },
  "downgradeBlocker": null,
  "customStartup": false,
  "scheduled": null,
  "lastChange": null,
  "nextPeriodPriceCzk": 249,
  "pendingOrder": null,
  "upgradeInProgress": false,
  "blocker": null,
  "restartPending": false,
  "recurringMaxCzk": null,
  "billingIncomplete": false,
  "customerType": "consumer"
}

Možné chyby

  • 403 Jen pro vlastníka služby.
  • 409unavailable Změna balíčku teď u služby nejde (neznámý balíček nebo stav služby).
  • 503 Herní panel teď neodpovídá.
POST/services/{id}/game-upgradeObjednat větší nebo naplánovat menší balíček

Bez action (nebo action order) založí objednávku většího balíčku nebo doplňku zálohy se zálohovou fakturou; změna se provede až po zaplacení. Menší balíček se naplánuje od dalšího období a nic se neplatí ani nevrací. Jen pro vlastníka služby.

Oprávnění: billing:write

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringneorder (výchozí), cancelPending (zrušit nezaplacenou objednávku), scheduleDowngrade (menší balíček od dalšího období) nebo cancelScheduled (zrušit naplánovanou změnu).
packageIdstring | nullneorder, scheduleDowngrade: id cílového balíčku z GET (packages, lowerPackages). Bez něj zůstává současný balíček.
backupsintegerneorder, scheduleDowngrade: počet doplňků Záloha, 0 nebo 1.
immediateStartRequestedbooleanneorder: spotřebitel žádá o provedení změny hned (VOP čl. 9.8). Bez IČO musí být true.
businessPurposebooleanneorder: prohlášení, že objednávka slouží podnikání.
expectedChargeCzknumber | nullneorder: doplatek, který jste viděli. Když se liší, vrátí se 409 price_changed a nic se nezaloží.
expectedMonthlyCzknumber | nullneorder, scheduleDowngrade: nová měsíční cena, kterou jste viděli. Když se liší, vrátí se 409 price_changed.
changeIdstringnecancelScheduled: id naplánované změny (scheduled.id z GET); když nesedí, vrátí se 409 changed.
localestringneJazyk hlášek: cs, en, sk, pl nebo de. Výchozí cs.

Ukázka těla

{
  "packageId": "mc-6gb",
  "backups": 0,
  "immediateStartRequested": true,
  "expectedChargeCzk": 80,
  "expectedMonthlyCzk": 349,
  "locale": "cs"
}

Ukázka odpovědi

{
  "orderId": "ord_7Hq2mX9pLk",
  "chargeCzk": 80,
  "monthlyToCzk": 349,
  "scheduledCancelled": false
}

Možné chyby

  • 400 Neplatný požadavek nebo balíček, který nejde zvolit.
  • 400immediate_start_required Spotřebitel musí poslat immediateStartRequested: true.
  • 403 Jen pro vlastníka služby.
  • 404none cancelScheduled: žádná naplánovaná změna není.
  • 409billing_profile_incomplete Chybí fakturační údaje účtu.
  • 409pending_order Už existuje nezaplacená objednávka upgradu (orderId v odpovědi).
  • 409upgrade_in_progress Zaplacený upgrade se ještě provádí.
  • 409price_changed Cena se mezitím změnila; v odpovědi jsou newChargeCzk a newMonthlyCzk.
  • 409capacity Větší balíček se na server nevejde.
  • 409does_not_fit scheduleDowngrade: data se do menšího balíčku nevejdou (důvody v reasons).
  • 409transfer_pending Služba čeká na převod.
  • 409refund_open U služby probíhá odstoupení nebo vrácení peněz.
  • 409renewal_paid Další období je zaplacené za cenu naplánovaného menšího balíčku.
  • 409change_applying Menší balíček se právě nastavuje.
  • 409too_late cancelScheduled: změna už začala platit.
  • 503price_list_unavailable Ceník teď nejde načíst, nic se neúčtuje.
GET/services/{id}/order-upgradeNabídka upgradu VPS

Vrátí současnou sestavu VPS, měsíční cenu, sazby, nejvyšší možné hodnoty podle volné kapacity, období a případnou nezaplacenou objednávku upgradu. Jen vlastník.

Oprávnění: services:read

Parametry v adrese

NázevTypPovinnéPopis
localestringneen pro anglické texty, jinak česky.

Ukázka odpovědi

{
  "tier": "vps-performance",
  "tierName": "VPS Performance",
  "current": {
    "cores": 2,
    "ramGb": 4,
    "diskGb": 60,
    "ipv4": 1
  },
  "monthlyCzk": 390,
  "rates": {
    "perCore": 0,
    "perGbRam": 95,
    "perGbDisk": 0,
    "perIpv4": 60
  },
  "priceList": {
    "fp": "a1b2c3d4",
    "rates": {
      "perCore": 0,
      "perGbRam": 95,
      "perGbDisk": 0,
      "perIpv4": 60
    },
    "packages": [],
    "diskAddon": {
      "perGb": 2,
      "stepGb": 10
    }
  },
  "limits": {
    "max": {
      "cores": 16,
      "ramGb": 24,
      "diskGb": 500,
      "ipv4": 5
    },
    "staticMax": {
      "cores": 16,
      "ramGb": 32,
      "diskGb": 500,
      "ipv4": 5
    }
  },
  "capacity": "limited",
  "unavailable": null,
  "upgradeInProgress": false,
  "period": {
    "start": "2026-11-01T00:00:00.000Z",
    "end": "2026-12-01T00:00:00.000Z",
    "remainingDays": 24,
    "periodDays": 30
  },
  "pendingOrder": null,
  "pendingRestart": false,
  "ipv4Pending": 0,
  "recurringMaxCzk": null,
  "billingIncomplete": false,
  "customerType": "consumer"
}

Možné chyby

  • 400 Služba není VPS.
  • 403 Nejste vlastník služby.
  • 409 Služba není aktivní.
POST/services/{id}/order-upgradeObjednat upgrade VPS

Vytvoří objednávku upgradu VPS se zálohovou fakturou na poměrný doplatek do konce období; upgrade se provede až po zaplacení. Cenu počítá server podle RAM, disk jde jen nahoru; action cancelPending zruší nezaplacenou objednávku.

Oprávnění: billing:write

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringneorder (výchozí) nebo cancelPending.
ramGbnumberneNová RAM v GB (1–32); vCPU se dopočítá z RAM. Chybí = beze změny.
diskGbnumberneDisk v GB (20–500), jen nahoru.
ipv4numbernePočet IPv4 adres (1–5).
coresnumbernevCPU (1–16); u ceny podle RAM se dopočítá.
localestringneJazyk hlášek a popisu objednávky: cs, en, sk, pl nebo de.
immediateStartRequestedbooleanneSpotřebitel: true = žádost o okamžité provedení změny, bez ní objednávka nevznikne.
businessPurposebooleanneÚčet s IČO: true = prohlášení, že jde o podnikání (pak se okamžité provedení nevyžaduje).
expectedChargeCzknumberneDoplatek, který jste zobrazili; jiný než spočítaný = 409 price_changed.
expectedMonthlyCzknumberneNová měsíční cena, kterou jste zobrazili; jiná = 409 price_changed.

Ukázka těla

{
  "ramGb": 8,
  "diskGb": 100,
  "locale": "cs",
  "immediateStartRequested": true,
  "expectedChargeCzk": 312,
  "expectedMonthlyCzk": 780
}

Ukázka odpovědi

{
  "orderId": "clx9o4ord0001",
  "chargeCzk": 312,
  "monthlyToCzk": 780
}

Možné chyby

  • 400immediate_start_required Chybí žádost o okamžité provedení. Bez kódu: neplatné hodnoty (pole field) nebo žádná změna nahoru.
  • 409pending_order Už existuje rozpracovaná objednávka (orderId). Další kódy: billing_profile_incomplete, foreign_eu_vat, unavailable, transfer_pending, upgrade_in_progress, refund_open, renewal_payment, renewal_overdue, capacity.
  • 409price_changed Cena se změnila; nové hodnoty v newChargeCzk a newMonthlyCzk, nic se nezaložilo.
  • 503capacity_unknown Volnou kapacitu teď nejde ověřit. Kód price_list_unavailable: ceník teď nejde načíst.
GET/services/{id}/renewalStav obnovy a platby služby

Vrátí stav obnovy služby, konec zaplaceného období, další platbu, automatické platby a historii výzev. Pro VPS, hry, web a domény; člen sdílené služby dostane jen managed, status a paidUntil.

Oprávnění: services:read

Parametry v adrese

NázevTypPovinnéPopis
localestringneen pro anglické texty, jinak česky.

Ukázka odpovědi

{
  "serviceId": "clx9svc000001",
  "managed": true,
  "status": "awaiting_payment",
  "paidUntil": "2026-12-01T00:00:00.000Z",
  "owner": {
    "nextPayment": {
      "amountCzk": 390,
      "periodStart": "2026-12-01T00:00:00.000Z",
      "periodEnd": "2027-01-01T00:00:00.000Z",
      "issueAt": "2026-11-17T00:00:00.000Z",
      "dueAt": "2026-12-01T00:00:00.000Z",
      "method": "manual",
      "invoice": {
        "orderId": "clx9o4ord0002",
        "invoiceId": "clx9i5inv0002",
        "number": "ZF2026110042",
        "status": "PENDING",
        "payUrl": "/cs/order/clx9o4ord0002"
      }
    },
    "suspendAt": null,
    "terminateAt": null,
    "autoPay": {
      "credit": {
        "enabled": true,
        "globallyAllowed": true,
        "held": false,
        "balanceCzk": 120,
        "sufficient": false
      },
      "card": {
        "enabled": false,
        "available": false,
        "last4": null,
        "maxAmountCzk": null,
        "unavailableReason": null
      }
    },
    "endAtTermEnd": null,
    "canPay": true,
    "canExtendEarly": false,
    "canEndAtTermEnd": true,
    "history": []
  }
}

Možné chyby

  • 400 Tenhle typ služby obnovu v portálu nemá (např. rackhousing).
  • 404not_found Služba nenalezena.
POST/services/{id}/renewalZaplatit nebo prodloužit dřív

Vrátí otevřenou výzvu k platbě, nebo vystaví výzvu na další období dřív (nejvýš jedno období dopředu), a odkaz na zaplacení. Nová výzva vrací 201; jen vlastník, limit 20 za hodinu, tělo jako application/json.

Oprávnění: billing:write

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringanoVždy pay.
localestringneJazyk hlášek a výzvy: cs, en, sk, pl nebo de.

Ukázka těla

{
  "action": "pay",
  "locale": "cs"
}

Ukázka odpovědi

{
  "orderId": "clx9o4ord0003",
  "payUrl": "/cs/order/clx9o4ord0003",
  "created": true
}

Možné chyby

  • 400invalid Neplatné tělo.
  • 409not_allowed Prodloužit teď nejde. Další kódy: not_managed, terminated, term_end, payment_started, failed.
  • 429rate_limited Víc než 20 požadavků za hodinu.
  • 503failed Výzvu se teď nepodařilo vystavit.
PATCH/services/{id}/renewalAutomatické platby a výpověď ke konci období

Zapne nebo vypne platbu z kreditu a kartou a podá nebo zruší výpověď ke konci zaplaceného období. Výpověď zruší otevřené výzvy bez platby, služba skončí s koncem období a přijde potvrzení e-mailem. Jen vlastník, tělo jako application/json.

Oprávnění: billing:write

Tělo požadavku (JSON)

NázevTypPovinnéPopis
autoCreditbooleannePlatit obnovu automaticky z kreditu.
autoCardbooleannePlatit obnovu automaticky uloženou kartou.
endAtTermEndbooleannetrue = výpověď ke konci zaplaceného období, false = zrušit výpověď.
localestringneJazyk hlášek: cs, en, sk, pl nebo de.

Ukázka těla

{
  "endAtTermEnd": true,
  "locale": "cs"
}

Ukázka odpovědi

{
  "serviceId": "clx9svc000001",
  "managed": true,
  "status": "ending",
  "paidUntil": "2026-12-01T00:00:00.000Z",
  "owner": {
    "nextPayment": null,
    "suspendAt": null,
    "terminateAt": null,
    "autoPay": {
      "credit": {
        "enabled": true,
        "globallyAllowed": true,
        "held": false,
        "balanceCzk": 120,
        "sufficient": null
      },
      "card": {
        "enabled": false,
        "available": false,
        "last4": null,
        "maxAmountCzk": null,
        "unavailableReason": null
      }
    },
    "endAtTermEnd": {
      "requestedAt": "2026-11-07T10:00:00.000Z",
      "by": "customer",
      "termEnd": "2026-12-01T00:00:00.000Z"
    },
    "canPay": false,
    "canExtendEarly": false,
    "canEndAtTermEnd": false,
    "history": []
  }
}

Možné chyby

  • 400invalid Neplatné tělo (jiná pole než povolená).
  • 404not_allowed Služba nepatří vašemu účtu.
  • 409not_managed Služba nemá nastavené období. Další kódy: terminated, not_active, period_over, too_late, payment_started.
  • 415 Tělo není application/json.
GET/services/{id}/web-upgradeNabídka vyššího tarifu webhostingu

Vrátí současný tarif webhostingu a vyšší tarify s doplatkem do konce období. Zatím vrací 409 coming_soon, webhosting ještě nejde měnit online; jen vlastník.

Oprávnění: services:read

Parametry v adrese

NázevTypPovinnéPopis
localestringneen pro anglické texty, jinak česky.

Ukázka odpovědi

{
  "current": {
    "tier": "starter",
    "name": "Starter",
    "storageGb": 10,
    "sites": 1
  },
  "monthlyCzk": 59,
  "period": {
    "start": "2026-11-01T00:00:00.000Z",
    "end": "2026-12-01T00:00:00.000Z",
    "remainingDays": 24,
    "periodDays": 30
  },
  "options": [
    {
      "tier": "business",
      "name": "Business",
      "storageGb": 30,
      "sites": 5,
      "priceCzk": 119,
      "monthlyCzk": 119,
      "chargeCzk": 48
    }
  ],
  "pendingOrder": null,
  "upgradeInProgress": false,
  "blocker": null,
  "recurringMaxCzk": null,
  "billingIncomplete": false,
  "customerType": "consumer"
}

Možné chyby

  • 409coming_soon Změnu tarifu webhostingu zatím nejde objednat online. Kód unavailable: tarif nejde určit nebo služba upgrade nedovoluje.
  • 400 Služba není webhosting.
  • 403 Nejste vlastník služby.
POST/services/{id}/web-upgradeObjednat vyšší tarif webhostingu

Vytvoří objednávku vyššího tarifu se zálohovou fakturou na poměrný doplatek; změna se provede po zaplacení, nižší tarif nastavit nejde. Zatím vrací 409 coming_soon; action cancelPending zruší nezaplacenou objednávku.

Oprávnění: billing:write

Tělo požadavku (JSON)

NázevTypPovinnéPopis
actionstringneorder (výchozí) nebo cancelPending.
tierstringanoPro order: business nebo pro (jen vyšší než současný).
localestringneJazyk hlášek a popisu objednávky: cs, en, sk, pl nebo de.
immediateStartRequestedbooleanneSpotřebitel: true = žádost o okamžité provedení změny, bez ní objednávka nevznikne.
businessPurposebooleanneÚčet s IČO: true = prohlášení, že jde o podnikání.
expectedChargeCzknumberneDoplatek, který jste zobrazili; jiný = 409 price_changed.
expectedMonthlyCzknumberneNová měsíční cena, kterou jste zobrazili; jiná = 409 price_changed.

Ukázka těla

{
  "tier": "business",
  "locale": "cs",
  "immediateStartRequested": true
}

Ukázka odpovědi

{
  "orderId": "clx9o4ord0004",
  "chargeCzk": 48,
  "monthlyToCzk": 119
}

Možné chyby

  • 409coming_soon Změnu tarifu zatím nejde objednat online. Další kódy: price_changed, pending_order, billing_profile_incomplete, unavailable, unknown_current.
  • 400downgrade Nižší nebo stejný tarif nastavit nejde. Další kódy: unknown_tier, immediate_start_required.
  • 503price_list_unavailable Ceník teď nejde načíst, nic se neúčtuje.

Bezpečnost

  • Každá aplikace a každé prostředí ať má vlastní klíč s co nejmenšími oprávněními. Když jeden unikne, odvoláte jen ten.
  • Klíče, které nepotřebujete, odvolejte. V seznamu klíčů vidíte, kdy a odkud byl klíč naposledy použit.
  • Pro citlivé akce (přeinstalace, hesla, převod domény) používejte klíč omezený na IP adresu vašeho serveru.
  • Uniklý klíč hned odvolejte v zákaznickém účtu a vytvořte nový. Když máte podezření na zneužití, napište nám.

Co přes API nejde

  • přihlášení, heslo, dvoufázové ověření, passkey a přihlášená zařízení
  • sdílení služby s dalšími účty a převod služby
  • odstoupení od smlouvy a vrácení peněz
  • vytváření dalších API klíčů
  • nahrávání souborů (použijte SFTP, přístup zjistíte přes API)