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.
| Methode | Was sie tut | Erforderliche Berechtigung |
|---|---|---|
GET /server | Serverkarte | console |
GET /status | Status und Onlinestatus | console |
POST /start | Start | start |
POST /stop | Stopp | start |
POST /restart | Neustart | start |
POST /command | Befehl an die Konsole | console |
GET /console | Live-Log (SSE) | console |
GET /files?path= | Dateien auflisten | files |
GET /files/configs | Welche Konfigurationen vom Formular gelesen werden | files |
GET /files/config?path= | Dateieinstellungen mit Typen | files |
POST /files/config | Dateieinstellungen ändern | files |
GET /backups | Backups auflisten | backups |
POST /backups | Backup erstellen | backups |
GET /antibot | Anti-Bot-Einstellungen, Backends und Firewall-Regeln | protection |
PUT /antibot | Schutzeinstellungen ändern | protection |
GET /antibot/overview?range= | Verbindungen und Ablehnungen für hour, day oder week | protection |
POST /antibot/backends | Backend hinzufügen {"address":"host:port","label":"..."} | protection |
DELETE /antibot/backends/{id} | Backend entfernen | protection |
POST /antibot/rules | Firewall-Regel {"kind":"allow"|"deny","cidr":"1.2.3.0/24"} | protection |
DELETE /antibot/rules/{id} | Regel entfernen | protection |
POST /antibot/verify-domain/check | DNS für die Domain Ihrer Verifizierungsseite prüfen | protection |
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.
