Skip to content
Hosting · Server-Setup

Server-API für Bots

Die Client-API von Millida Hosting: Schlüssel ausstellen, Berechtigungen, Serververwaltung und Konsolen-Streaming aus Ihrem eigenen Bot oder Skript.

Aktualisiert am 13. Oktober 2026

Alles, was das Panel kann, lässt sich aus Ihrem eigenen Code heraus erledigen: einen Server nach Zeitplan starten, den Status in Discord anzeigen, Befehle von einem Bot senden.

Schlüssel

Die API ist in jedem kostenpflichtigen Tarif verfügbar – an derselben Stelle, an der sich Dateien, SFTP und Teamzugriff befinden. Im kostenlosen Tarif wird kein Schlüssel ausgegeben: Ein Schlüssel ist derselbe geteilte Zugriff, nur für einen Bot.

Bereich „Spieler und Zugriff“ → „API-Schlüssel“ → „Ausstellen“. Prüfen Sie, was der Schlüssel darf – die Berechtigungen sind dieselben wie beim geteilten Zugriff.

Der Schlüssel wird einmal angezeigt: Wir speichern nur seinen Fingerabdruck. Wenn Sie ihn verlieren, stellen Sie einen neuen aus und widerrufen den alten.

Der Schlüssel wird im Header Authorization: Bearer mhk_live_... übergeben.

Methoden

Basis-URL – https://millida.net/v2/hosting/api.

MethodeWas sie tutErforderliche Berechtigung
GET /serverServerkarteconsole
GET /statusStatus und Onlinestatusconsole
POST /startStartstart
POST /stopStoppstart
POST /restartNeustartstart
POST /commandBefehl an die Konsoleconsole
GET /consoleLive-Log (SSE)console
GET /files?path=Dateien auflistenfiles
GET /files/configsWelche Konfigurationen vom Formular gelesen werdenfiles
GET /files/config?path=Dateieinstellungen mit Typenfiles
POST /files/configDateieinstellungen ändernfiles
GET /backupsBackups auflistenbackups
POST /backupsBackup erstellenbackups
GET /antibotAnti-Bot-Einstellungen, Backends und Firewall-Regelnprotection
PUT /antibotSchutzeinstellungen ändernprotection
GET /antibot/overview?range=Verbindungen und Ablehnungen für hour, day oder weekprotection
POST /antibot/backendsBackend hinzufügen {"address":"host:port","label":"..."}protection
DELETE /antibot/backends/{id}Backend entfernenprotection
POST /antibot/rulesFirewall-Regel {"kind":"allow"|"deny","cidr":"1.2.3.0/24"}protection
DELETE /antibot/rules/{id}Regel entfernenprotection
POST /antibot/verify-domain/checkDNS für die Domain Ihrer Verifizierungsseite prüfenprotection

Beispiel: Server starten und warten, bis er online ist

KEY="mhk_live_xxx"
API="https://millida.net/v2/hosting/api"

curl -sX POST "$API/start" -H "Authorization: Bearer $KEY"

until curl -s "$API/status" -H "Authorization: Bearer $KEY" | grep -q RUNNING; do
  sleep 5
done
echo "server online"

Backups werden im Hintergrund erstellt

POST /backups gibt sofort {"id":"..."} zurück, während das Archiv selbst auf dem Node zusammengestellt wird: Eine Welt mit mehreren Gigabyte dauert Minuten. Prüfen Sie die Bereitschaft in GET /backups über das Feld status: pending – wird noch zusammengestellt, ready – im Storage gespeichert (dann erscheint die echte sizeMb), failed – Zusammenstellung fehlgeschlagen.

ID=$(curl -sX POST "$API/backups" -H "Authorization: Bearer $KEY" | jq -r .id)

until curl -s "$API/backups" -H "Authorization: Bearer $KEY" \
  | jq -e --arg id "$ID" '.[] | select(.id==$id) | select(.status=="ready")' >/dev/null; do
  sleep 15
done
echo "backup ready"

Während ein Backup läuft, können Sie kein zweites auf demselben Server erstellen – der Node erledigt sie nacheinander.

Live-Konsole

GET /console liefert einen Server-Sent-Events-Stream: Jede Zeile kommt mit dem Präfix data:. Ein WebSocket ist nicht nötig – SSE kommt durch jeden Proxy.

Was Sie wissen sollten

  • Jede Schlüsselaktion wird protokolliert im Server-Log mit dem Autor „API-Schlüssel N“. Genau das brauchen Sie, wenn sowohl Menschen als auch Bots Server betreiben.
  • Rate Limiting wird pro Schlüssel berechnet, nicht pro Adresse: Eine IP-Änderung umgeht das Limit nicht, und ein Nachbar im Büronetz verbraucht es nicht. Für normale Automatisierung ist es großzügig, aber wenn Sie den Status einmal pro Sekunde abfragen, erreichen Sie es – einmal alle 10–15 Sekunden reicht. Der Konsolen-Stream kann bis zu zehnmal pro Minute geöffnet werden: Behalten Sie eine Verbindung, statt für jede Nachricht eine neue zu öffnen.
  • Der Schlüssel funktioniert sofort nicht mehr, wenn der Server gesperrt wird oder der Tarif nicht mehr bezahlt ist. Sie müssen ihn dafür nicht manuell widerrufen.
  • Bis zu fünf Schlüssel pro Server. Widerrufen Sie die, die Sie nicht brauchen.

Anti-Bot-Schutz

GET /antibot liefert Einstellungen in zwei Feldern. config – die eigenen Einstellungen des Servers; solange sie nicht existieren, ist es null, und der Server ist standardmäßig geschützt (das Feld default). effective ist immer vorhanden: Das sind die Einstellungen, die aktuell gelten oder mit denen der Server nach der ersten Bearbeitung arbeiten wird – lesen Sie die Werte daraus.

PUT /antibot akzeptiert nur die Felder, die Sie ändern möchten:

curl -sX PUT "$API/antibot" -H "Authorization: Bearer $KEY"   -H 'Content-Type: application/json'   -d '{"preset":"balanced"}'

Stufen (preset): off, under_attack, balanced, aggressive, custom. Die Stufe erweitert sich selbst zu Prüfwerten, wählen Sie daher für die manuelle Konfiguration custom und senden Sie die Prüfungen: checkCaptcha, checkPhysics, checkKeepAlive, checkTeleport, checkBrand, checkPing, checkTransfer, checkClientSettings – jede einzelne off, under_attack oder always. Adresslisten (vpnMode, datacenterMode, torMode) – off, log oder block. Geo-Filter – geoMode (off, allow, deny) und geoCountries (Ländercodes, z. B. ["RU","BY"]).

Das Weiterleitungsgeheimnis wird nicht über die API ausgegeben oder geändert: Es wird nur dem Eigentümer im Panel angezeigt.

Konfigurationseinstellungen

GET /files/config?path=server.properties liefert die geparste Datei – jeder Eintrag mit seinem Typ, aktuellem Wert und einer Kennzeichnung „Neustart erforderlich“:

{
  "path": "server.properties",
  "format": "properties",
  "options": [
    { "key": "pvp", "type": "boolean", "value": "true", "owner": "sync", "requiresRestart": false },
    { "key": "difficulty", "type": "select", "value": "normal", "values": ["peaceful", "easy", "normal", "hard"], "owner": "sync", "requiresRestart": false },
    { "key": "server-port", "type": "integer", "value": "25565", "owner": "platform", "requiresRestart": true }
  ]
}

owner sagt Ihnen, was mit dem Eintrag möglich ist: platform – der Wert wird vom Hosting festgelegt, Änderungen werden abgelehnt; sync – der Eintrag existiert sowohl im Panel als auch in der Datei; file – nur die Datei weiß davon.

Ein Schreibvorgang ändert nur die Schlüssel, die Sie senden; alles andere in der Datei bleibt unangetastet:

curl -sX POST "$API/files/config" -H "Authorization: Bearer $KEY"   -H 'Content-Type: application/json'   -d '{"path":"server.properties","values":{"pvp":"false","difficulty":"hard"}}'

Das Formular liest .properties, .yml/.yaml und .toml – einschließlich Plugin-Konfigurationen, von denen das Panel nichts weiß: Der Feldtyp wird aus dem Wert abgeleitet. Verschachtelte Schlüssel werden mit einem Punkt angesprochen: settings.bungeecord, advanced.compression-threshold.

Die gesamte Datei ist weiterhin über GET/PUT /files/content?path= verfügbar – beide Wege schreiben an dieselbe Stelle.

Minecraft-HostingIhr Server läuft, wenn Sie offline sindServer erstellen