Zum Inhalt springen

API-Dokumentation

Alles, was Sie im Kundenportal tun, geht auch per API: Websites und Spielserver anlegen, den Cache nach einem Deployment leeren, den Wartungsmodus schalten, DNS-Einträge pflegen, Statistik abholen. JSON über HTTPS, Anmeldung mit API-Key.

Schnellstart

  1. Im Kundenportal unter API-Keys einen Key erstellen und kopieren – er wird nur einmal angezeigt.
  2. Key testen – die Antwort nennt Ihr Konto, Ihre Limits und die Rechte des Keys:
export KH_API_KEY=khcdn_…
curl https://portal.kernhosting.com/v1/account -H "Authorization: Bearer $KH_API_KEY"

Basis-Adresse: https://portal.kernhosting.com. Kennungen (id) sind UUIDs – Sie finden sie in den Listen (z. B. GET /v1/domains) und in der Adresszeile des Portals.

Anmeldung und Rechte

Jede Anfrage braucht den Kopf Authorization: Bearer khcdn_…. Wir speichern nur einen Hash des Keys; verlieren Sie ihn, widerrufen Sie ihn und erstellen einen neuen.

Lesen und ändern
Alles, was Sie im Portal können – außer neue API-Keys erstellen (nur im Portal).
Nur lesen
Nur GET: Listen, Zustände, Statistik. Alles andere antwortet mit 403 read_only_key. Ideal für Monitoring und Dashboards.
Gültigkeit
30 Tage, 90 Tage, 1 Jahr oder unbegrenzt. Abgelaufene Keys antworten mit 401 – im Portal sehen Sie, wann jeder Key abläuft.
Keys sind wie Passwörter
Nicht in Repositories, Website-Code oder Chats. In CI-Systemen als geheime Variable hinterlegen; für jeden Zweck einen eigenen Key, damit Sie gezielt widerrufen können.

Anfragen und Fehler

Bodies sind JSON und brauchen Content-Type: application/json (sonst 415). Zeiten sind ISO 8601 in UTC. PATCH ändert nur übergebene Felder, PUT ersetzt. Objekte anderer Kunden verhalten sich wie nicht vorhandene (404). Fehler haben immer dieselbe Form:

{
  "error": {
    "code": "validation_error",
    "message": "Ungültige Eingabe",
    "details": [{ "path": "origin.port", "message": "Zu groß: höchstens 65535" }]
  }
}
StatusBedeutung
400Ungültige Eingabe (mit details) oder fachlicher Fehler, z. B. hostname_taken
401Kein, falscher oder abgelaufener API-Key
403Nicht erlaubt: read_only_key, limit_reached, customer_pending …
404Nicht gefunden
409Konflikt mit dem aktuellen Zustand (z. B. Rückgängig nicht mehr möglich)
429Zu viele Anfragen – kurz warten und erneut versuchen
5xxStörung bei uns – mit Wartezeit wiederholen

Limits

WasGrenze
Anfragen je API-Key600 pro Minute
DNS-Prüfung einer Website6 pro Minute
Server testen (Website, Spielserver)20 je 10 Minuten
Origin-Schutz prüfen10 je 10 Minuten
Testnachricht eines Kanals5 je 10 Minuten
Cache leerenlaut Ihrem Paket (GET /v1/account → limits.purgesPerHour)

Wie viele Websites, Spielserver, Zonen, Load Balancer und Geräte Ihr Paket umfasst und wie viele belegt sind, steht in GET /v1/account.

OpenAPI und Werkzeuge

Die vollständige Beschreibung im Format OpenAPI 3.1 steht unter /v1/openapi.json – öffentlich, ohne Key. Sie entsteht aus denselben Schemas, mit denen die API Eingaben prüft, und ist deshalb immer aktuell. Importieren Sie sie in Postman, Insomnia oder Bruno, oder erzeugen Sie einen Client:

npx @openapitools/openapi-generator-cli generate \
  -i https://portal.kernhosting.com/v1/openapi.json -g python -o kh-cdn-client

Rezepte

Nach einem Deployment den Cache leeren – am Ende Ihres Deploy-Skripts:

curl -fsS -X POST https://portal.kernhosting.com/v1/domains/$DOMAIN_ID/purges \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"all"}'

Wartungsmodus während eines Updates – Besucher sehen Ihre Wartungsseite, Sie selbst kommen mit einer erlaubten Adresse weiter auf die Website:

api() { curl -fsS -X PATCH https://portal.kernhosting.com/v1/domains/$DOMAIN_ID/security \
  -H "Authorization: Bearer $KH_API_KEY" -H "Content-Type: application/json" -d "$1"; }
api '{"maintenance":{"enabled":true}}'
./update.sh
api '{"maintenance":{"enabled":false}}'

Spielserver in Wartung (Text in der Serverliste):

curl -fsS -X PATCH https://portal.kernhosting.com/v1/game-servers/$GAME_ID/settings \
  -H "Authorization: Bearer $KH_API_KEY" -H "Content-Type: application/json" \
  -d '{"maintenance":{"enabled":true,"motd":"Update – gleich zurück"}}'

Monitoring mit einem Key „nur lesen“ – offene Störungen abfragen:

curl -fsS "https://portal.kernhosting.com/v1/alerts?open=1" -H "Authorization: Bearer $KH_READ_KEY"

Zertifikat mit Platzhalter per DNS-01 (lego, Zone beim CDN):

HTTPREQ_ENDPOINT=https://portal.kernhosting.com/v1/dns/acme HTTPREQ_USERNAME=api \
HTTPREQ_PASSWORD=$KH_API_KEY lego --dns httpreq -d 'kunde.de' -d '*.kunde.de' run

Konto

Ihr Konto, Limits und Verbrauch, Verbindungen zwischen den Produkten.

Konto, Limits und Verbrauch

GET/v1/account

Kunde, gültige Limits, wie viel davon belegt ist, Traffic im laufenden Monat und – mit API-Key – dessen Rechte und Ablauf. Gut als erster Test eines neuen Keys.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/account" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { customer, limits, used, apiKey }

Neuigkeiten

GET/v1/news

Erschienene Beiträge („Was ist neu“), neueste zuerst. body ist einfaches Markdown. Öffentliche Beiträge auch ohne Anmeldung als RSS unter /news/feed.xml.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/news" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { news }

Wählbare Tarife

GET/v1/plans

Ohne Anmeldung (z. B. für eine Preisseite). free = dauerhaft kostenloser Tarif, der sofort gilt; limits ohne Wert = Standard, null = unbegrenzt.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/plans" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { plans }

Eigener Tarif

GET/v1/account/plan

Tarif, seit wann, Befristung und ein offener Antrag.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/account/plan" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { plan, since, until, requested, features, legacy, overage, graceUntil, history }

Tarif wechseln oder beantragen

POST/v1/account/plan

Der Free-Tarif gilt sofort; andere Tarife werden beantragt und von uns freigeschaltet (Antwort mit requested). Nur Inhaber bzw. API-Key. Gleicher Tarif: 409 same_plan.

Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/account/plan
FeldTypBedeutung
planIdPflichtText–
confirmOveragetrue/false–

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/account/plan" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"planId":"7b1f3c2e-4a5d-4e6f-8a9b-0c1d2e3f4a5b"}'
200JSON· { plan, since, until, requested, features, legacy, overage, graceUntil, history }

Tarifantrag zurückziehen

DELETE/v1/account/plan/request
Key mit Rechten „lesen und ändern“

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/account/plan/request" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { plan, since, until, requested, features, legacy, overage, graceUntil, history }

Boni, Testphase, Partnerprogramm

GET/v1/account/bonus

Aktive und abgelaufene Boni (Gutscheine, Testphase, Partnerprogramm, Support), ihre Summe, ob die Testphase noch frei ist und der eigene Einladungslink. Boni stecken schon in den Limits von /v1/account.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/account/bonus" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { bonuses, total, trial, referral }

Gutschein einlösen

POST/v1/account/bonus/coupon

Jeder Code einmal je Konto; höchstens 10 Versuche je Stunde. Fehler: invalid_code, expired, used_up, already_redeemed (409), new_customers_only.

Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/account/bonus/coupon
FeldTypBedeutung
codePflichtText–

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/account/bonus/coupon" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"code":"SOMMER26"}'
201angelegt – das neue Objekt· { id, source, label, bonus, startsAt, expiresAt, active }

Testphase starten

POST/v1/account/bonus/trial

Einmal je Konto, solange der Betreiber eine Testphase anbietet (trial_off, trial_used 409).

Key mit Rechten „lesen und ändern“

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/account/bonus/trial" \
  -H "Authorization: Bearer $KH_API_KEY"
201angelegt – das neue Objekt· { id, source, label, bonus, startsAt, expiresAt, active }

Team: Mitglieder und Einladungen

GET/v1/team

Mitglieder mit Rolle (owner, admin, viewer), Zwei-Faktor, zuletzt aktiv, angemeldeten Geräten und eigenen API-Keys; offene Einladungen. Einladen und Rollen ändern nur im Portal (Inhaber).

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/team" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { twoFactorRequired, members, invites }

Aktivität des Teams

GET/v1/team/activity

Wer hat wann was geändert (Portal, API-Key, Support, CDN), neueste zuerst. Filter: member (ID), area (websites, dns, spielserver, geraete, load-balancer, team, konto), q (Suche), logins=1 (mit Anmeldungen); Blättern mit before = next, limit bis 200.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/team/activity" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { rows, next }

Traffic im laufenden Monat

GET/v1/usage

Ausgelieferte Daten im Kalendermonat (deutsche Zeit) und Anteil am Limit.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/usage" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Adressen des CDN

GET/v1/network

Feste IP-Adressen der Edges und Ziele für CNAME-Einträge – z. B. für Firewalls (nur das CDN zum Server lassen).

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/network" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Websites

Websites und HTTP(S)-Load-Balancer: anlegen, Server, Hostnamen, DNS-Prüfung, Verlauf.

Alle Websites

GET/v1/domains

Websites und HTTP(S)-Load-Balancer mit Hostnamen und DNS-Status.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/domains" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { domains: [Website] }

Website anlegen

POST/v1/domains

Das Gegenstück (www.kunde.de ↔ kunde.de) kommt automatisch dazu und leitet auf den Haupt-Hostnamen weiter. Mit "kind": "loadbalancer" ein HTTP(S)-Load-Balancer.

Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/domains
FeldTypBedeutung
hostnamePflichtText–
originPflichtObjekt–
origin.schemeAuswahl
httpshttp
Standard: "https"
origin.hostPflichtText–
origin.portGanzzahl1–65535
origin.hostHeaderText–
origin.verifyTlstrue/false
Standard: true
origin.connectTimeoutMsGanzzahl500–30000
Standard: 5000
origin.firstByteTimeoutMsGanzzahl1000–300000
Standard: 60000
origin.weightGanzzahl1–100
origin.stateAuswahl
activebackuppaused
origin.servers[]Liste (Objekt)bis 9 Einträge
origin.servers[].hostPflichtText–
origin.servers[].portGanzzahl1–65535
origin.servers[].weightGanzzahl1–100
Standard: 1
origin.servers[].stateAuswahl
activebackuppaused
Standard: "active"
origin.balanceAuswahl
round_robinleast_connsticky
origin.healthChecktrue/false–
origin.healthPathTextbis 200 Zeichen
presetAuswahl
nonewordpressstatic
Standard: "none"
includeCounterparttrue/false
Standard: true
kindAuswahl
websiteloadbalancer
Standard: "website"

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/domains" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"hostname":"www.kunde.de","origin":{"host":"server.kunde.de","port":443}}'
201angelegt – das neue Objekt· Website

Eine Website

GET/v1/domains/{id}

Mit Server, Cache-Einstellungen, Regeln, Zertifikat (certificate).

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/domains/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/domains/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· Website

Website ändern

PATCH/v1/domains/{id}

Server (origin, auch mehrere mit origin.servers) oder an/aus (enabled). Nur übergebene Felder ändern sich.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von PATCH /v1/domains/{id}
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von PATCH /v1/domains/{id}
FeldTypBedeutung
originObjekt–
origin.schemeAuswahl
httpshttp
Standard: "https"
origin.hostPflichtText–
origin.portGanzzahl1–65535
origin.hostHeaderText–
origin.verifyTlstrue/false
Standard: true
origin.connectTimeoutMsGanzzahl500–30000
Standard: 5000
origin.firstByteTimeoutMsGanzzahl1000–300000
Standard: 60000
origin.weightGanzzahl1–100
origin.stateAuswahl
activebackuppaused
origin.servers[]Liste (Objekt)bis 9 Einträge
origin.servers[].hostPflichtText–
origin.servers[].portGanzzahl1–65535
origin.servers[].weightGanzzahl1–100
Standard: 1
origin.servers[].stateAuswahl
activebackuppaused
Standard: "active"
origin.balanceAuswahl
round_robinleast_connsticky
origin.healthChecktrue/false–
origin.healthPathTextbis 200 Zeichen
enabledtrue/false–

Beispiel

curl -X PATCH "https://portal.kernhosting.com/v1/domains/<id>" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'
200JSON· Website

Website löschen

DELETE/v1/domains/{id}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/domains/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/domains/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Hostnamen hinzufügen

POST/v1/domains/{id}/hostnames
Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/domains/{id}/hostnames
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von POST /v1/domains/{id}/hostnames
FeldTypBedeutung
hostnamePflichtText–
connectMethodAuswahl
cnamealiasstatic
redirectToPrimarytrue/false
Standard: false

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/domains/<id>/hostnames" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"hostname":"shop.kunde.de"}'
201angelegt – das neue Objekt

Hostnamen ändern

PATCH/v1/domains/{id}/hostnames/{hostname}

Anbindung (cname, alias, static) und Weiterleitung auf den Haupt-Hostnamen.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von PATCH /v1/domains/{id}/hostnames/{hostname}
FeldTypBedeutung
idPflichtPfadKennung
hostnamePflichtPfadHostname, z. B. www.kunde.de

Body

Body von PATCH /v1/domains/{id}/hostnames/{hostname}
FeldTypBedeutung
connectMethodAuswahl
cnamealiasstatic
redirectToPrimarytrue/false–

Beispiel

curl -X PATCH "https://portal.kernhosting.com/v1/domains/<id>/hostnames/www.kunde.de" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"redirectToPrimary":true}'
200JSON

Hostnamen entfernen

DELETE/v1/domains/{id}/hostnames/{hostname}

Nicht den Haupt-Hostnamen.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/domains/{id}/hostnames/{hostname}
FeldTypBedeutung
idPflichtPfadKennung
hostnamePflichtPfadHostname, z. B. www.kunde.de

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/domains/<id>/hostnames/www.kunde.de" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

DNS jetzt prüfen

POST/v1/domains/{id}/dns-check

Zeigen die Hostnamen auf das CDN? dnsStatus: unchecked, ok, wrong_target, not_found, error, unverified. Höchstens 6 je Minute.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/domains/{id}/dns-check
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/domains/<id>/dns-check" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Server testen

POST/v1/domains/{id}/origin-test

Verbindung zum Server der Website jetzt testen (wie „Server prüfen“ im Portal): erreichbar, TLS, Antwort. 20 Tests je 10 Minuten.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/domains/{id}/origin-test
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/domains/<id>/origin-test" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Verlauf

GET/v1/domains/{id}/activity

Ausfälle, Zertifikate, Wartung, Schutz, Cache-Leerungen und Änderungen – neueste zuerst.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/domains/{id}/activity
FeldTypBedeutung
idPflichtPfadKennung
kindAbfrage · AuswahlNur eine Art von Ereignis: outage, certificate, maintenance, security, cache, change
daysAbfrage · GanzzahlZeitraum in Tagen (1–30, Standard 14)
limitAbfrage · GanzzahlHöchstens so viele (1–200, Standard 50)

Beispiel

curl "https://portal.kernhosting.com/v1/domains/<id>/activity" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Cache

Cache-Einstellungen, Regeln, Weiterleitungen und Cache leeren.

Cache-Einstellungen

PUT/v1/domains/{id}/cache

Ersetzt alle Einstellungen; fehlende Felder bekommen den Standardwert.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von PUT /v1/domains/{id}/cache
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von PUT /v1/domains/{id}/cache
FeldTypBedeutung
respectOriginHeaderstrue/false
Standard: true
defaultTtlSecondsGanzzahl0–31536000
Standard: 3600
maxTtlSecondsGanzzahl0–31536000
Standard: 2592000
staleIfErrorSecondsGanzzahl0–31536000
Standard: 86400
queryModeAuswahl
includeignorewhitelist
Standard: "include"
queryWhitelist[]Liste (Text)bis 50 Einträge
Standard: []
bypassCookies[]Liste (Text)bis 50 Einträge
Standard: []
presetAuswahl
nonewordpressstatic
Standard: "none"
compressiontrue/false
Standard: true

Beispiel

curl -X PUT "https://portal.kernhosting.com/v1/domains/<id>/cache" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"preset":"wordpress"}'
200JSON

Cache-Regeln ersetzen

PUT/v1/domains/{id}/rules

Ersetzt alle Regeln (höchstens 100).

Key mit Rechten „lesen und ändern“

Parameter

Parameter von PUT /v1/domains/{id}/rules
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von PUT /v1/domains/{id}/rules
FeldTypBedeutung
rules[]PflichtListe (Objekt)bis 100 Einträge
rules[].idText–
rules[].priorityGanzzahl0–10000
Standard: 100
rules[].matchTypePflichtAuswahl
prefixexactextensionregex
rules[].patternPflichtTextbis 200 Zeichen
rules[].actionPflichtAuswahl
bypasscacheoverride_ttl
rules[].ttlSecondsGanzzahl0–31536000
rules[].descriptionTextbis 200 Zeichen

Beispiel

curl -X PUT "https://portal.kernhosting.com/v1/domains/<id>/rules" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
200JSON

Weiterleitungen und Header-Regeln

GET/v1/domains/{id}/routing
auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/domains/{id}/routing
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/domains/<id>/routing" \
  -H "Authorization: Bearer $KH_API_KEY"

Weiterleitungen und Header-Regeln ersetzen

PUT/v1/domains/{id}/routing

Ersetzt die übergebenen Teile (redirects, headers).

Key mit Rechten „lesen und ändern“

Parameter

Parameter von PUT /v1/domains/{id}/routing
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von PUT /v1/domains/{id}/routing
FeldTypBedeutung
redirects[]Liste (Objekt)bis 200 Einträge
redirects[].matchAuswahl
exactprefix
Standard: "exact"
redirects[].pathPflichtTextbis 300 Zeichen
redirects[].targetPflichtTextbis 1000 Zeichen
redirects[].statusGanzzahl-9007199254740991–9007199254740991
Standard: 301
redirects[].keepPathtrue/false
Standard: true
redirects[].keepQuerytrue/false
Standard: true
redirects[].noteTextbis 100 Zeichen
Standard: ""
headers[]Liste (Objekt)bis 50 Einträge
headers[].pathTextbis 300 Zeichen
Standard: "/"
headers[].namePflichtTextbis 64 Zeichen
headers[].actionAuswahl
setremove
Standard: "set"
headers[].valueTextbis 1000 Zeichen
Standard: ""

Beispiel

curl -X PUT "https://portal.kernhosting.com/v1/domains/<id>/routing" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"redirects":[{"path":"/alt","target":"/neu"}]}'

Letzte Cache-Leerungen

GET/v1/domains/{id}/purges

Die letzten 50.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/domains/{id}/purges
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/domains/<id>/purges" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { purges: [Cache-Leerung] }

Cache leeren

POST/v1/domains/{id}/purges

Eine Adresse (url), alles unter einem Pfad (prefix), nach Cache-Tags (tag) oder alles (all). Gilt in Sekunden auf allen Knoten; Fortschritt über GET /v1/purges/{id}.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/domains/{id}/purges
FeldTypBedeutung
idPflichtPfadKennung

Body – type: "url"

Body von POST /v1/domains/{id}/purges
FeldTypBedeutung
typePflicht"url"–
urlPflichtTextbis 2048 Zeichen

Body – type: "prefix"

Body von POST /v1/domains/{id}/purges
FeldTypBedeutung
typePflicht"prefix"–
prefixPflichtTextbis 200 Zeichen

Body – type: "all"

Body von POST /v1/domains/{id}/purges
FeldTypBedeutung
typePflicht"all"–

Body – type: "tag"

Body von POST /v1/domains/{id}/purges
FeldTypBedeutung
typePflicht"tag"–
tags[]PflichtListe (Text)bis 30 Einträge

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/domains/<id>/purges" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"type":"all"}'
202angenommen – läuft im Hintergrund· Cache-Leerung

Fortschritt einer Cache-Leerung

GET/v1/purges/{id}

nodesDone, nodesFailed, completed über alle Knoten.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/purges/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/purges/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· Cache-Leerung

Sicherheit

Sperren, Länder, Rate-Limits, Wartung, WAF, Bots, Origin-Schutz.

Schutzfunktionen

GET/v1/domains/{id}/security

IP-Regeln, Länder, Rate-Limits je Pfad, „Unter Angriff“, Wartung, Sicherheits-Header, WAF und Bots.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/domains/{id}/security
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/domains/<id>/security" \
  -H "Authorization: Bearer $KH_API_KEY"

Schutzfunktionen ändern

PATCH/v1/domains/{id}/security

Nur die übergebenen Teile – z. B. den Wartungsmodus vor einem Update einschalten. action: "allow" nimmt eine Adresse von Länder-Sperre, Wartung und „Unter Angriff“ aus.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von PATCH /v1/domains/{id}/security
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von PATCH /v1/domains/{id}/security
FeldTypBedeutung
ipRules[]Liste (Objekt)bis 500 Einträge
ipRules[].cidrPflichtText–
ipRules[].actionPflichtAuswahl
blockallow
ipRules[].noteTextbis 100 Zeichen
Standard: ""
countriesObjekt–
countries.modePflichtAuswahl
offblockallow
countries.list[]PflichtListe (Text)bis 250 Einträge
pathLimits[]Liste (Objekt)bis 20 Einträge
pathLimits[].pathPflichtTextbis 200 Zeichen
pathLimits[].requestsPflichtGanzzahl1–10000
pathLimits[].perPflichtAuswahl
secondminute
underAttacktrue/false–
maintenanceObjekt–
maintenance.enabledtrue/false–
maintenance.titleTextbis 100 Zeichen
maintenance.messageTextbis 1000 Zeichen
maintenance.untilText–
maintenance.startsAtText–
maintenance.autoEndtrue/false–
contactTextbis 200 Zeichen
unavailableObjekt–
unavailable.titleTextbis 100 Zeichen
unavailable.messageTextbis 1000 Zeichen
headersObjekt–
headers.hstsMaxAgeGanzzahl-9007199254740991–9007199254740991
Standard: 0
headers.hstsSubdomainstrue/false
Standard: false
headers.hstsPreloadtrue/false
Standard: false
headers.nosnifftrue/false
Standard: false
headers.frameOptionsAuswahl
offsameorigindeny
Standard: "off"
headers.referrerPolicyAuswahl
offstrict-origin-when-cross-originsame-originno-referrer
Standard: "off"
headers.hidePoweredBytrue/false
Standard: false
wafObjekt–
waf.modeAuswahl
offlogblock
Standard: "off"
waf.groups[]Liste (Auswahl)bis 6 Einträge
sqlixsstraversalfilesrcescanner
Standard: ["sqli","xss","traversal","files","rce","scanner"]
waf.skipPaths[]Liste (Text)bis 20 Einträge
Standard: []
botsObjekt–
bots.verifyGoodtrue/false
Standard: false
bots.blockAitrue/false
Standard: false
accessObjekt–
access.teamtrue/false
Standard: false
access.ips[]Liste (Text)bis 100 Einträge
Standard: []
access.hoursGanzzahl1–168
Standard: 12

Beispiel

curl -X PATCH "https://portal.kernhosting.com/v1/domains/<id>/security" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"maintenance":{"enabled":true}}'

Origin-Schutz prüfen

POST/v1/domains/{id}/origin-check

Ist der Server direkt erreichbar, verraten DNS-Einträge seine Adresse, erkennt er das CDN? 10 Prüfungen je 10 Minuten.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/domains/{id}/origin-check
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/domains/<id>/origin-check" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· Origin-Prüfung

Statistik

Anfragen, Traffic und Abgefangenes.

Anfragen und Traffic

GET/v1/domains/{id}/stats

Anfragen, ausgelieferte Daten, Cache-Treffer und Statuscodes aus Sicht der Edges. Standard: letzte 24 Stunden je Stunde.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/domains/{id}/stats
FeldTypBedeutung
idPflichtPfadKennung
fromAbfrageBeginn (ISO 8601)
toAbfrageEnde (ISO 8601)
intervalAbfrage · Auswahl5m, 1h oder 1d

Beispiel

curl "https://portal.kernhosting.com/v1/domains/<id>/stats" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Abgefangene Anfragen

GET/v1/domains/{id}/stats/security

Was die Schutzfunktionen abgefangen haben, nach Grund.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/domains/{id}/stats/security
FeldTypBedeutung
idPflichtPfadKennung
rangeAbfrage · Auswahl24h (Standard) oder 7d

Beispiel

curl "https://portal.kernhosting.com/v1/domains/<id>/stats/security" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Berichte

Monatsbericht (auch per E-Mail am 1.) und Angriffsberichte als öffentliche Seite zum Teilen.

Monatsbericht

GET/v1/reports/monthly

Verkehr und Cache der Websites, Spielserver (Spieler, Sitzungen, Spielzeit, Spitze), Abgewehrtes nach Grund, Erreichbarkeit und Störungen eines Monats (deutsche Zeit). Ohne month: Vormonat; der laufende Monat geht bis jetzt.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/reports/monthly
FeldTypBedeutung
monthAbfrageMonat als JJJJ-MM

Beispiel

curl "https://portal.kernhosting.com/v1/reports/monthly" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { month, previous, websites, games, defended, incidents }

Angriffsberichte

GET/v1/attack-reports

Ihre geteilten Angriffsberichte, neueste zuerst.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/attack-reports
FeldTypBedeutung
targetAbfrageNur für diese Domain- bzw. Spielserver-ID

Beispiel

curl "https://portal.kernhosting.com/v1/attack-reports" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Angriffsbericht teilen

POST/v1/attack-reports

Legt eine öffentliche Seite (url) mit den Zahlen eines Angriffs an – abgewehrt, Spitze je Minute, Gründe, Herkunftsländer, ohne IP-Adressen. Ohne from/to sucht das CDN den stärksten Angriff (Websites 7, Spielserver 30 Tage; sonst 400 no_attack). Höchstens 7 Tage, 20 Berichte je Stunde.

Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/attack-reports
FeldTypBedeutung
kindPflichtAuswahl
websitegame
targetIdPflichtText–
fromZeit (ISO 8601)–
toZeit (ISO 8601)–
anonymoustrue/false
Standard: false

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/attack-reports" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"game","targetId":"7b1f3c2e-4a5d-4e6f-8a9b-0c1d2e3f4a5b","anonymous":false}'
201angelegt – das neue Objekt· { id, kind, targetId, targetLabel, anonymous, from, to, url, createdAt, createdByName, data }

Angriffsbericht zurückziehen

DELETE/v1/attack-reports/{id}

Die öffentliche Seite ist danach weg.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/attack-reports/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/attack-reports/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

DNS

DNS-Zonen, Einträge, Verlauf, DNSSEC, DynDNS und ACME (DNS-01).

Alle DNS-Zonen

GET/v1/dns/zones
auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/dns/zones" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Zone anlegen

POST/v1/dns/zones

Zustand pending, bis die Nameserver beim Registrar umgestellt sind.

Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/dns/zones
FeldTypBedeutung
namePflichtTextDomain ohne www, z. B. kunde.de

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/dns/zones" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"kunde.de"}'
201angelegt – das neue Objekt

Eine Zone

GET/v1/dns/zones/{id}

Mit Einträgen und cdnNameservers (beim Registrar einzutragen).

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/dns/zones/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/dns/zones/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Zone entfernen

DELETE/v1/dns/zones/{id}

Vorher beim Registrar andere Nameserver einstellen.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/dns/zones/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/dns/zones/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Nameserver jetzt prüfen

POST/v1/dns/zones/{id}/check
Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/dns/zones/{id}/check
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/dns/zones/<id>/check" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Einträge

GET/v1/dns/zones/{id}/records
auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/dns/zones/{id}/records
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/dns/zones/<id>/records" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Eintrag anlegen

POST/v1/dns/zones/{id}/records

Namen relativ zur Zone (@, www) oder voll. MX/SRV mit priority, SRV mit weight/port, CAA mit tag; proxied schaltet einen Namen über das CDN.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/dns/zones/{id}/records
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von POST /v1/dns/zones/{id}/records
FeldTypBedeutung
nameTextbis 253 Zeichen
Standard: "@"
typePflichtAuswahl
AAAAACNAMEMXTXTSRVCAANS
ttlGanzzahl-9007199254740991–9007199254740991
contentPflichtTextbis 4000 Zeichen
priorityGanzzahl | null–
weightGanzzahl | null–
portGanzzahl | null–
tagAuswahl | null
issueissuewildiodef
proxiedtrue/false–
commentTextbis 200 Zeichen

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/dns/zones/<id>/records" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"www","type":"A","content":"203.0.113.10","ttl":3600}'
201angelegt – das neue Objekt

Eintrag ersetzen

PUT/v1/dns/zones/{id}/records/{recordId}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von PUT /v1/dns/zones/{id}/records/{recordId}
FeldTypBedeutung
idPflichtPfadKennung
recordIdPflichtPfadKennung des Eintrags

Body

Body von PUT /v1/dns/zones/{id}/records/{recordId}
FeldTypBedeutung
nameTextbis 253 Zeichen
Standard: "@"
typePflichtAuswahl
AAAAACNAMEMXTXTSRVCAANS
ttlGanzzahl-9007199254740991–9007199254740991
contentPflichtTextbis 4000 Zeichen
priorityGanzzahl | null–
weightGanzzahl | null–
portGanzzahl | null–
tagAuswahl | null
issueissuewildiodef
proxiedtrue/false–
commentTextbis 200 Zeichen

Beispiel

curl -X PUT "https://portal.kernhosting.com/v1/dns/zones/<id>/records/<recordId>" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"www","type":"A","content":"203.0.113.11","ttl":3600}'
200JSON

Eintrag löschen

DELETE/v1/dns/zones/{id}/records/{recordId}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/dns/zones/{id}/records/{recordId}
FeldTypBedeutung
idPflichtPfadKennung
recordIdPflichtPfadKennung des Eintrags

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/dns/zones/<id>/records/<recordId>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Mehrere Einträge auf einmal

POST/v1/dns/zones/{id}/records/bulk

Löschen bzw. über das CDN an/aus – eine Änderung im Verlauf (auf einmal rückgängig).

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/dns/zones/{id}/records/bulk
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von POST /v1/dns/zones/{id}/records/bulk
FeldTypBedeutung
actionPflichtAuswahl
deleteproxied_onproxied_off
ids[]PflichtListe (Text)bis 200 Einträge

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/dns/zones/<id>/records/bulk" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"action":"delete","ids":["01a1b2c3-d4e5-7f60-8a9b-0c1d2e3f4a5b"]}'
200JSON

Zonendatei (BIND)

GET/v1/dns/zones/{id}/export
auch mit Key „nur lesen“Antwort: text/plain

Parameter

Parameter von GET /v1/dns/zones/{id}/export
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/dns/zones/<id>/export" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -o datei
200Datei

Zonendatei übernehmen

POST/v1/dns/zones/{id}/import

Antwort: übernommen, übersprungen, Fehler, nicht unterstützt.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/dns/zones/{id}/import
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von POST /v1/dns/zones/{id}/import
FeldTypBedeutung
zonefilePflichtTextInhalt im BIND-Format

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/dns/zones/<id>/import" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"zonefile":"$ORIGIN kunde.de.\nwww 3600 IN A 203.0.113.10"}'
200JSON

Verlauf der Zone

GET/v1/dns/zones/{id}/changes

Je Änderung Urheber, Zusammenfassung, Einträge vorher/nachher und undoable.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/dns/zones/{id}/changes
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/dns/zones/<id>/changes" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Verlauf als CSV

GET/v1/dns/zones/{id}/changes/export
auch mit Key „nur lesen“Antwort: text/csv

Parameter

Parameter von GET /v1/dns/zones/{id}/changes/export
FeldTypBedeutung
idPflichtPfadKennung
qAbfrageSuchtext
werAbfrageUrheber (Name, E-Mail oder API-Key)

Beispiel

curl "https://portal.kernhosting.com/v1/dns/zones/<id>/changes/export" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -o datei
200Datei

Änderung rückgängig machen

POST/v1/dns/zones/{id}/changes/{changeId}/undo

409, wenn die Einträge seitdem geändert wurden oder das Ergebnis ungültig wäre.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/dns/zones/{id}/changes/{changeId}/undo
FeldTypBedeutung
idPflichtPfadKennung
changeIdPflichtPfadKennung der Änderung

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/dns/zones/<id>/changes/<changeId>/undo" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

DNSSEC-Zustand

GET/v1/dns/zones/{id}/dnssec

dsStatus: none, ok, foreign, error; key mit DS und DNSKEY.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/dns/zones/{id}/dnssec
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/dns/zones/<id>/dnssec" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

DNSSEC einschalten

POST/v1/dns/zones/{id}/dnssec

Nur aktive Zonen. Antwort mit DS und DNSKEY für den Registrar.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/dns/zones/{id}/dnssec
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/dns/zones/<id>/dnssec" \
  -H "Authorization: Bearer $KH_API_KEY"
201angelegt – das neue Objekt

DNSSEC ausschalten

DELETE/v1/dns/zones/{id}/dnssec

409, solange der DS-Eintrag beim Registrar steht.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/dns/zones/{id}/dnssec
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/dns/zones/<id>/dnssec" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

DynDNS-Zugänge

GET/v1/dns/zones/{id}/dyndns

Ohne Tokens.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/dns/zones/{id}/dyndns
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/dns/zones/<id>/dyndns" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

DynDNS-Zugang anlegen

POST/v1/dns/zones/{id}/dyndns

Antwort mit token – nur dieses eine Mal.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/dns/zones/{id}/dyndns
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von POST /v1/dns/zones/{id}/dyndns
FeldTypBedeutung
labelPflichtTextbis 60 Zeichen
names[]PflichtListe (Text)bis 10 Einträge
ipv6InterfaceIdText–

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/dns/zones/<id>/dyndns" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"label":"Fritzbox","names":["home"]}'
201angelegt – das neue Objekt

DynDNS-Zugang löschen

DELETE/v1/dns/zones/{id}/dyndns/{dyndnsId}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/dns/zones/{id}/dyndns/{dyndnsId}
FeldTypBedeutung
idPflichtPfadKennung
dyndnsIdPflichtPfadKennung des DynDNS-Zugangs

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/dns/zones/<id>/dyndns/<dyndnsId>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Neues DynDNS-Token

POST/v1/dns/zones/{id}/dyndns/{dyndnsId}/token

Das alte gilt sofort nicht mehr; das neue steht nur in dieser Antwort.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/dns/zones/{id}/dyndns/{dyndnsId}/token
FeldTypBedeutung
idPflichtPfadKennung
dyndnsIdPflichtPfadKennung des DynDNS-Zugangs

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/dns/zones/<id>/dyndns/<dyndnsId>/token" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

ACME-Eintrag setzen (DNS-01)

POST/v1/dns/acme/present

Für eigene Zertifikate (z. B. Platzhalter) mit lego httpreq. Antwortet, sobald alle Nameserver des CDN den Eintrag ausliefern (höchstens nach einer Minute). Auch per Basic-Auth (Kennwort = API-Key).

Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/dns/acme/present
FeldTypBedeutung
fqdnPflichtTextbis 255 Zeichen
valueTextbis 255 Zeichen

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/dns/acme/present" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fqdn":"_acme-challenge.kunde.de.","value":"abc…"}'
200JSON

ACME-Eintrag entfernen

POST/v1/dns/acme/cleanup
Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/dns/acme/cleanup
FeldTypBedeutung
fqdnPflichtTextbis 255 Zeichen
valueTextbis 255 Zeichen

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/dns/acme/cleanup" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"fqdn":"_acme-challenge.kunde.de.","value":"abc…"}'
200JSON

Spielserver

Minecraft-Server über das CDN: Einstellungen, Plugin, Tests und Statistik.

Alle Spielserver

GET/v1/game-servers
auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/game-servers" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { gameServers: [Spielserver] }

Spielserver anlegen

POST/v1/game-servers
Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/game-servers
FeldTypBedeutung
hostnamePflichtText–
originPflichtObjekt–
origin.hostPflichtText–
origin.portGanzzahl1–65535
Standard: 25565
origin.weightGanzzahl1–100
origin.stateAuswahl
activebackuppaused
origin.servers[]Liste (Objekt)bis 9 Einträge
origin.servers[].hostPflichtText–
origin.servers[].portGanzzahl1–65535
Standard: 25565
origin.servers[].weightGanzzahl1–100
Standard: 1
origin.servers[].stateAuswahl
activebackuppaused
Standard: "active"
origin.balanceAuswahl
round_robinleast_conn
forwardingAuswahl
pluginproxy

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/game-servers" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"hostname":"play.kunde.de","origin":{"host":"mc.kunde.de","port":25565}}'
201angelegt – das neue Objekt· Spielserver

Ein Spielserver

GET/v1/game-servers/{id}

Mit Einstellungen, DNS-Status und der letzten Meldung des Plugins (plugin).

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/game-servers/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/game-servers/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· Spielserver

Spielserver ändern

PATCH/v1/game-servers/{id}

Server (origin, auch mehrere) oder an/aus (enabled).

Key mit Rechten „lesen und ändern“

Parameter

Parameter von PATCH /v1/game-servers/{id}
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von PATCH /v1/game-servers/{id}
FeldTypBedeutung
originObjekt–
origin.hostPflichtText–
origin.portGanzzahl1–65535
Standard: 25565
origin.weightGanzzahl1–100
origin.stateAuswahl
activebackuppaused
origin.servers[]Liste (Objekt)bis 9 Einträge
origin.servers[].hostPflichtText–
origin.servers[].portGanzzahl1–65535
Standard: 25565
origin.servers[].weightGanzzahl1–100
Standard: 1
origin.servers[].stateAuswahl
activebackuppaused
Standard: "active"
origin.balanceAuswahl
round_robinleast_conn
enabledtrue/false–

Beispiel

curl -X PATCH "https://portal.kernhosting.com/v1/game-servers/<id>" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":true}'
200JSON· Spielserver

Spielserver löschen

DELETE/v1/game-servers/{id}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/game-servers/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/game-servers/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Einstellungen ändern

PATCH/v1/game-servers/{id}/settings

Wartung (auch geplant), Bot-Schutz, VPN-Filter mit Ausnahmen (vpnRegulars, vpnAllow), Länder, IP-Regeln, Serverliste (serverList: Text, Icon, Spielerzahl), Warteschlange (queue), Echte Spieler-IP (forwarding) … Nur übergebene Teile.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von PATCH /v1/game-servers/{id}/settings
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von PATCH /v1/game-servers/{id}/settings
FeldTypBedeutung
connectionsPerMinuteGanzzahl2–600
ipRules[]Liste (Objekt)bis 500 Einträge
ipRules[].cidrPflichtText–
ipRules[].actionPflichtAuswahl
blockallow
ipRules[].noteTextbis 100 Zeichen
Standard: ""
countriesObjekt–
countries.modePflichtAuswahl
offblockallow
countries.list[]PflichtListe (Text)bis 250 Einträge
maintenanceObjekt–
maintenance.enabledtrue/false–
maintenance.motdTextbis 200 Zeichen
maintenance.messageTextbis 300 Zeichen
maintenance.startsAtZeit (ISO 8601) | null–
maintenance.endsAtZeit (ISO 8601) | null–
unavailableMessageTextbis 300 Zeichen
botProtectionAuswahl
offautoalways
vpnFilterAuswahl
offverifyblock
loginCheckstrue/false–
publicStatustrue/false–
syncBanstrue/false–
edgeWhitelisttrue/false–
forwardingAuswahl
pluginproxy
vpnRegularsObjekt–
vpnRegulars.enabledtrue/false–
vpnRegulars.minSessionsGanzzahl1–50
vpnAllow[]Liste (Text)bis 1000 Einträge
serverListObjekt–
serverList.modeAuswahl
offofflinealways
Standard: "off"
serverList.motdTextbis 256 Zeichen
Standard: ""
serverList.iconText | null
Standard: null
serverList.hidePlayerstrue/false
Standard: false
queueObjekt–
queue.enabledtrue/false
Standard: true
queue.maxWaitSecondsGanzzahl30–600
Standard: 180
queue.whenFulltrue/false
Standard: true

Beispiel

curl -X PATCH "https://portal.kernhosting.com/v1/game-servers/<id>/settings" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"maintenance":{"enabled":true,"motd":"Gleich zurück"}}'
200JSON· Spielserver

Gesperrte Spieler

GET/v1/game-servers/{id}/player-bans

Namen, die schon der Edge abweist (Kleinbuchstaben).

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/game-servers/{id}/player-bans
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/game-servers/<id>/player-bans" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Spieler sperren

POST/v1/game-servers/{id}/player-bans

Gilt in wenigen Sekunden auf allen Edges – auch auf Velocity/BungeeCord und ohne Plugin. Schon gesperrt: 409.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/game-servers/{id}/player-bans
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von POST /v1/game-servers/{id}/player-bans
FeldTypBedeutung
namePflichtText–
reasonTextbis 200 Zeichen

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/game-servers/<id>/player-bans" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Griefer123","reason":"Grief am Spawn"}'
201angelegt – das neue Objekt

Sperre aufheben

DELETE/v1/game-servers/{id}/player-bans/{name}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/game-servers/{id}/player-bans/{name}
FeldTypBedeutung
idPflichtPfadKennung
namePflichtPfadname

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/game-servers/<id>/player-bans/<name>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Spieler suchen

GET/v1/players

Spieler aller eigenen Spielserver der letzten 30 Tage (aus dem Verbindungslog der Edges), neueste zuerst, höchstens 100.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/players
FeldTypBedeutung
qAbfrageTeil des Spielernamens; leer = zuletzt aktive

Beispiel

curl "https://portal.kernhosting.com/v1/players" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Spielerprofil

GET/v1/players/{name}

Zuletzt online, Server mit Spielzeit und Sperren, Edges, Länder (aus gekürzten Adressen), Verbindungsqualität, was der Edge abgewiesen hat, letzte 30 Verbindungen.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/players/{name}
FeldTypBedeutung
namePflichtPfadname

Beispiel

curl "https://portal.kernhosting.com/v1/players/<name>" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { name, firstSeen, lastSeen, servers, edges, countries, quality, recent }

Plugin bzw. Mod herunterladen

GET/v1/game-servers/{id}/plugin

Fertig eingerichtet für diesen Server (mit Geheimnis – nicht weitergeben).

auch mit Key „nur lesen“Antwort: application/java-archive

Parameter

Parameter von GET /v1/game-servers/{id}/plugin
FeldTypBedeutung
idPflichtPfadKennung
platformAbfrage · Auswahlpaper (Standard, 1.18.2+), velocity, bungeecord, paper-legacy (Spigot/Paper 1.8.8–1.18.1), fabric (26.x), fabric-1.21, fabric-legacy (1.14–1.20.x), neoforge (26.x), neoforge-1.21, forge (Forge 1.13–1.20.x, NeoForge 1.20.x), forge-legacy (Forge 1.8.9–1.12.2)
minecraftAbfrage · TextStatt platform: Minecraft-Version (z. B. 1.12.2) – das Portal wählt das passende Jar, zusammen mit loader. Nicht unterstützt → 400 unsupported_version.
loaderAbfrage · Auswahlpaper (Standard, auch Spigot), fabric, forge, neoforge – nur mit minecraft

Beispiel

curl "https://portal.kernhosting.com/v1/game-servers/<id>/plugin" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -o datei
200Datei

DNS jetzt prüfen

POST/v1/game-servers/{id}/dns-check
Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/game-servers/{id}/dns-check
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/game-servers/<id>/dns-check" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· Spielserver

Server testen

POST/v1/game-servers/{id}/test

Antwortet er, wie viele Spieler, ist er vor direkten Verbindungen geschützt? 20 Tests je 10 Minuten.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/game-servers/{id}/test
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/game-servers/<id>/test" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Statistik

GET/v1/game-servers/{id}/stats

Verbindungen und Abgewiesene (24 h, traffic), Erreichbarkeit (30 Tage, uptime), Antwortzeit je Edge (edges) und Spieler/TPS aus dem Plugin (history).

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/game-servers/{id}/stats
FeldTypBedeutung
idPflichtPfadKennung
rangeAbfrage · AuswahlVerlauf: 24h (Standard) oder 7d

Beispiel

curl "https://portal.kernhosting.com/v1/game-servers/<id>/stats" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Verlauf

GET/v1/game-servers/{id}/activity

Ausfälle, Neustarts, Sperren aus dem Spiel, Wartung, Updates des Plugins, Änderungen – neueste zuerst.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/game-servers/{id}/activity
FeldTypBedeutung
idPflichtPfadKennung
kindAbfrage · AuswahlNur eine Art von Ereignis: outage, restart, block, maintenance, update, change
daysAbfrage · GanzzahlZeitraum in Tagen (1–30, Standard 14)
limitAbfrage · GanzzahlHöchstens so viele (1–200, Standard 50)

Beispiel

curl "https://portal.kernhosting.com/v1/game-servers/<id>/activity" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Neues Geheimnis

POST/v1/game-servers/{id}/secret

Das bisherige Plugin ist sofort ungültig – danach das Plugin neu laden und austauschen.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/game-servers/{id}/secret
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/game-servers/<id>/secret" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· Spielserver

Gameserver-Schnittstelle

Für Gameserver-Hoster: Schutz je Server mit Stufe und wenigen Schaltern anlegen, adressiert über die Kennung im eigenen Panel. Schlüssel dafür legen Inhaber im Admin-Bereich an (Einstellungen → Gameserver-Schnittstelle).

Alle Server der Schnittstelle

GET/v1/integration/game-servers

Zum Abgleich mit dem Panel: alle Server, die über die Schnittstelle angelegt wurden.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/integration/game-servers" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { servers }

Plugins und Mods zur Auswahl

GET/v1/integration/plugins

Alle Jars mit Plattform, Minecraft-Versionen, Ordner und Java – für die Auswahl im Panel, statt einer festen Liste. Mit minecraft (und loader) steht in recommended das passende (null = keins, dann PROXY-Protokoll). Herunterladen über …/game-servers/{externalId}/plugin?platform=….

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/integration/plugins
FeldTypBedeutung
minecraftAbfrageMinecraft-Version des Servers
loaderAbfragepaper (Standard, auch Spigot), fabric, forge, neoforge

Beispiel

curl "https://portal.kernhosting.com/v1/integration/plugins" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { plugins, recommended }

Adress-Domains zur Auswahl

GET/v1/integration/domains

Domains, unter denen Kunden im Panel einen Namen wählen (ohne eigene Domain). Beim PUT dann "address": { "domain", "name" } – den DNS-Eintrag legt das CDN an.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/integration/domains" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { domains }

Ist der Name frei?

GET/v1/integration/domains/check

Für die Prüfung beim Tippen im Panel.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/integration/domains/check
FeldTypBedeutung
domainPflichtAbfrageAdress-Domain
namePflichtAbfrageWunschname

Beispiel

curl "https://portal.kernhosting.com/v1/integration/domains/check?domain=play.ihr-hosting.de&name=meinserver" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { available, address, reason }

Ein Server

GET/v1/integration/game-servers/{externalId}

Zustand: DNS, Plugin (Version, Spieler), Schutz geprüft, Wartung.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/integration/game-servers/{externalId}
FeldTypBedeutung
externalIdPflichtPfadKennung des Servers in Ihrem Panel, z. B. srv-1234

Beispiel

curl "https://portal.kernhosting.com/v1/integration/game-servers/<externalId>" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { externalId, id, label, address, addressDomain, cnameTarget, dns, server, protection, options, forwarding, enabled, maintenance, plugin, protectedAt, createdAt, updatedAt }

Schutz anlegen oder ändern

PUT/v1/integration/game-servers/{externalId}

Gleiche Anfrage für neu (201) und geändert (200). protection: basis, standard oder streng; options optional. address: Wunschname unter einer Adress-Domain ({ "domain", "name" }, ohne name aus der Kennung; DNS automatisch) oder eine eigene Adresse des Kunden (Text; CNAME auf cnameTarget, außer sie liegt in einer DNS-Zone des Kontos im CDN). Die Adresse lässt sich danach nicht ändern (409) – dafür löschen und neu anlegen.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von PUT /v1/integration/game-servers/{externalId}
FeldTypBedeutung
externalIdPflichtPfadKennung des Servers in Ihrem Panel, z. B. srv-1234

Body

Body von PUT /v1/integration/game-servers/{externalId}
FeldTypBedeutung
addressPflichtText | Objekt–
serverPflichtObjekt–
server.hostPflichtText–
server.portGanzzahl1–65535
Standard: 25565
protectionAuswahl
basisstandardstreng
Standard: "standard"
optionsObjekt
Standard: {"countries":[],"blockVpn":false,"edgeWhitelist":true,"publicStatus":false}
options.countries[]Liste (Text)bis 50 Einträge
Standard: []
options.blockVpntrue/false
Standard: false
options.edgeWhitelisttrue/false
Standard: true
options.publicStatustrue/false
Standard: false
forwardingAuswahl
pluginproxy
Standard: "plugin"
labelTextbis 100 Zeichen
Standard: ""

Beispiel

curl -X PUT "https://portal.kernhosting.com/v1/integration/game-servers/<externalId>" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"address":{"domain":"play.ihr-hosting.de","name":"meinserver"},"server":{"host":"node7.ihr-hosting.de","port":25601},"protection":"standard","options":{"countries":["DE","AT","CH"],"blockVpn":false},"label":"Kunde 4711"}'
200JSON· { externalId, id, label, address, addressDomain, cnameTarget, dns, server, protection, options, forwarding, enabled, maintenance, plugin, protectedAt, createdAt, updatedAt }

Schutz entfernen

DELETE/v1/integration/game-servers/{externalId}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/integration/game-servers/{externalId}
FeldTypBedeutung
externalIdPflichtPfadKennung des Servers in Ihrem Panel, z. B. srv-1234

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/integration/game-servers/<externalId>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Wartung an oder aus

POST/v1/integration/game-servers/{externalId}/maintenance

Spieler sehen den Text (motd) in der Serverliste; der Server bekommt nichts.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/integration/game-servers/{externalId}/maintenance
FeldTypBedeutung
externalIdPflichtPfadKennung des Servers in Ihrem Panel, z. B. srv-1234

Body

Body von POST /v1/integration/game-servers/{externalId}/maintenance
FeldTypBedeutung
enabledPflichttrue/false–
motdTextbis 200 Zeichen

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/integration/game-servers/<externalId>/maintenance" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":true,"motd":"§eWartung – gleich zurück"}'
200JSON· { externalId, id, label, address, addressDomain, cnameTarget, dns, server, protection, options, forwarding, enabled, maintenance, plugin, protectedAt, createdAt, updatedAt }

Plugin bzw. Mod für den Server

GET/v1/integration/game-servers/{externalId}/plugin

Mit Geheimnis und Adresse dieses Servers; in plugins bzw. mods legen. Aktualisiert sich danach selbst.

auch mit Key „nur lesen“Antwort: application/java-archive

Parameter

Parameter von GET /v1/integration/game-servers/{externalId}/plugin
FeldTypBedeutung
externalIdPflichtPfadKennung des Servers in Ihrem Panel, z. B. srv-1234
platformAbfrage · Auswahlpaper (Standard, 1.18.2+), velocity, bungeecord, paper-legacy (Spigot/Paper 1.8.8–1.18.1), fabric (26.x), fabric-1.21, fabric-legacy (1.14–1.20.x), neoforge (26.x), neoforge-1.21, forge (Forge 1.13–1.20.x, NeoForge 1.20.x), forge-legacy (Forge 1.8.9–1.12.2)
minecraftAbfrage · TextStatt platform: Minecraft-Version (z. B. 1.12.2) – das Portal wählt das passende Jar, zusammen mit loader. Nicht unterstützt → 400 unsupported_version.
loaderAbfrage · Auswahlpaper (Standard, auch Spigot), fabric, forge, neoforge – nur mit minecraft

Beispiel

curl "https://portal.kernhosting.com/v1/integration/game-servers/<externalId>/plugin" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -o datei
200Datei

Load Balancer

TCP/UDP-Load-Balancer.

Alle TCP/UDP-Load-Balancer

GET/v1/net-balancers
auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/net-balancers" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

TCP/UDP-Load-Balancer anlegen

POST/v1/net-balancers

Antwort mit address (persönlich, aus dem Namen) und port.

Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/net-balancers
FeldTypBedeutung
namePflichtTextbis 60 Zeichen
protocolPflichtAuswahl
tcpudp
hostnameText–
originPflichtObjekt–
origin.hostPflichtText–
origin.portPflichtGanzzahl1–65535
origin.weightGanzzahl1–100
origin.stateAuswahl
activebackuppaused
origin.servers[]Liste (Objekt)bis 9 Einträge
origin.servers[].hostPflichtText–
origin.servers[].portPflichtGanzzahl1–65535
origin.servers[].weightGanzzahl1–100
Standard: 1
origin.servers[].stateAuswahl
activebackuppaused
Standard: "active"
origin.balanceAuswahl
round_robinleast_connhash
proxyProtocoltrue/false
Standard: false

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/net-balancers" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Teamspeak","protocol":"udp","origin":{"host":"ts.kunde.de","port":9987}}'
201angelegt – das neue Objekt

Ein Load Balancer

GET/v1/net-balancers/{id}
auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/net-balancers/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/net-balancers/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Load Balancer ändern

PATCH/v1/net-balancers/{id}

name, hostname (null entfernt), origin, proxyProtocol, enabled.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von PATCH /v1/net-balancers/{id}
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von PATCH /v1/net-balancers/{id}
FeldTypBedeutung
nameTextbis 60 Zeichen
hostnameText–
originObjekt–
origin.hostPflichtText–
origin.portPflichtGanzzahl1–65535
origin.weightGanzzahl1–100
origin.stateAuswahl
activebackuppaused
origin.servers[]Liste (Objekt)bis 9 Einträge
origin.servers[].hostPflichtText–
origin.servers[].portPflichtGanzzahl1–65535
origin.servers[].weightGanzzahl1–100
Standard: 1
origin.servers[].stateAuswahl
activebackuppaused
Standard: "active"
origin.balanceAuswahl
round_robinleast_connhash
proxyProtocoltrue/false–
enabledtrue/false–

Beispiel

curl -X PATCH "https://portal.kernhosting.com/v1/net-balancers/<id>" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'
200JSON

Load Balancer löschen

DELETE/v1/net-balancers/{id}

Der Port wird frei.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/net-balancers/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/net-balancers/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Geräte

Geräte mit dem KernHosting-Client und ihre Freigaben.

Alle Geräte

GET/v1/devices

Mit Zustand (online, Verbindung je Edge) und Freigaben.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/devices" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Gerät anlegen

POST/v1/devices

Antwort mit Code für die Anmeldung des Clients.

Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/devices
FeldTypBedeutung
namePflichtTextbis 60 Zeichen

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/devices" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"NAS"}'
201angelegt – das neue Objekt

Ein Gerät

GET/v1/devices/{id}
auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/devices/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/devices/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Gerät ändern

PATCH/v1/devices/{id}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von PATCH /v1/devices/{id}
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von PATCH /v1/devices/{id}
FeldTypBedeutung
nameTextbis 60 Zeichen
enabledtrue/false–
selfManagetrue/false–

Beispiel

curl -X PATCH "https://portal.kernhosting.com/v1/devices/<id>" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'
200JSON

Gerät entfernen

DELETE/v1/devices/{id}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/devices/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/devices/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Neuer Code zum Anmelden

POST/v1/devices/{id}/code
Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/devices/{id}/code
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/devices/<id>/code" \
  -H "Authorization: Bearer $KH_API_KEY"
201angelegt – das neue Objekt

Freigabe anlegen

POST/v1/devices/{id}/ports

Server im CDN (internal, für Websites und Spielserver) oder offener Port auf den Edges.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/devices/{id}/ports
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von POST /v1/devices/{id}/ports
FeldTypBedeutung
namePflichtTextbis 60 Zeichen
protocolAuswahl
tcpudp
Standard: "tcp"
targetPflichtObjekt–
target.hostPflichtText–
target.portPflichtGanzzahl1–65535
hostnameText–
proxyProtocoltrue/false
Standard: false
internaltrue/false
Standard: false
remoteAuswahl | null
sshrdpvncother

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/devices/<id>/ports" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Home Assistant","target":{"host":"localhost","port":8123},"internal":true}'
201angelegt – das neue Objekt

Freigabe ändern

PATCH/v1/devices/{id}/ports/{portId}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von PATCH /v1/devices/{id}/ports/{portId}
FeldTypBedeutung
idPflichtPfadKennung
portIdPflichtPfadKennung der Freigabe

Body

Body von PATCH /v1/devices/{id}/ports/{portId}
FeldTypBedeutung
nameTextbis 60 Zeichen
protocolAuswahl
tcpudp
targetObjekt–
target.hostPflichtText–
target.portPflichtGanzzahl1–65535
hostnameText–
proxyProtocoltrue/false–
enabledtrue/false–

Beispiel

curl -X PATCH "https://portal.kernhosting.com/v1/devices/<id>/ports/<portId>" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'
200JSON

Freigabe entfernen

DELETE/v1/devices/{id}/ports/{portId}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/devices/{id}/ports/{portId}
FeldTypBedeutung
idPflichtPfadKennung
portIdPflichtPfadKennung der Freigabe

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/devices/<id>/ports/<portId>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Fernzugriff auf Zeit öffnen

POST/v1/devices/{id}/ports/{portId}/zugang

Nur für Dienste mit remote (SSH, RDP, VNC, anderes): Der Port gilt auf allen Edges, aber nur für ip (fehlt sie: die des Aufrufers) und höchstens 8 Stunden. Danach schließt er von selbst.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/devices/{id}/ports/{portId}/zugang
FeldTypBedeutung
idPflichtPfadKennung
portIdPflichtPfadKennung der Freigabe

Body

Body von POST /v1/devices/{id}/ports/{portId}/zugang
FeldTypBedeutung
ipText–
hoursGanzzahl1–8
Standard: 1

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/devices/<id>/ports/<portId>/zugang" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ip":"203.0.113.7","hours":2}'
200JSON· { until, port, ip }

Fernzugriff sofort schließen

DELETE/v1/devices/{id}/ports/{portId}/zugang
Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/devices/{id}/ports/{portId}/zugang
FeldTypBedeutung
idPflichtPfadKennung
portIdPflichtPfadKennung der Freigabe

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/devices/<id>/ports/<portId>/zugang" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Benachrichtigungen

Störungen und Kanäle (E-Mail, Webhook, Discord, Slack, Telegram …).

Störungen und Hinweise

GET/v1/alerts

Neueste zuerst.

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/alerts
FeldTypBedeutung
openAbfrage1 = nur offene
areaAbfrageBereich: websites, dns, spielserver, geraete, load-balancer, konto
kindAbfrageproblems (Warnung, kritisch) oder notices (Hinweise)
daysAbfrageZeitraum in Tagen (offene immer dabei)
limitAbfrageHöchstens so viele, bis 500 (Standard 100)

Beispiel

curl "https://portal.kernhosting.com/v1/alerts" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { alerts: [Störung] }

Erinnerungen stummschalten

POST/v1/alerts/{id}/mute

Für eine offene Störung: keine Erinnerungen mehr für hours Stunden bzw. bis sie behoben ist (null). Die Entwarnung kommt trotzdem.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/alerts/{id}/mute
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von POST /v1/alerts/{id}/mute
FeldTypBedeutung
hoursPflichtGanzzahl | null–

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/alerts/<id>/mute" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"hours":24}'
200JSON· { id, event, severity, title, message, url, customerId, openedAt, resolvedAt, mutedUntil }

Erinnerungen wieder an

DELETE/v1/alerts/{id}/mute
Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/alerts/{id}/mute
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/alerts/<id>/mute" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { id, event, severity, title, message, url, customerId, openedAt, resolvedAt, mutedUntil }

Eigene Einstellungen für E-Mails

GET/v1/notification-settings

Nur mit Anmeldung (Sitzung) – die Einstellungen gehören zu einem Konto. Je Schwere instant, digest (täglich um 8 Uhr) oder off; mutedAreas: Bereiche ohne E-Mails; monthlyReport: Monatsbericht am 1. (Standard an).

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/notification-settings" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { modes, mutedAreas, monthlyReport, productNews }

Eigene Einstellungen speichern

PUT/v1/notification-settings
Key mit Rechten „lesen und ändern“

Body

Body von PUT /v1/notification-settings
FeldTypBedeutung
modesPflichtObjekt–
modes.infoPflichtAuswahl
instantdigestoff
modes.warningPflichtAuswahl
instantdigestoff
modes.criticalPflichtAuswahl
instantoff
mutedAreas[]PflichtListe (Auswahl)bis 7 Einträge
websitesdnsspielservergeraeteload-balancerkontosystem
monthlyReporttrue/false
Standard: true
productNewstrue/false
Standard: false

Beispiel

curl -X PUT "https://portal.kernhosting.com/v1/notification-settings" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"modes":{"critical":"instant","warning":"digest","info":"off"},"mutedAreas":["dns"]}'
200JSON· { modes, mutedAreas, monthlyReport, productNews }

Kanäle

GET/v1/notification-channels

Webhook-Adressen nur als Host, nie mit Geheimnissen.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/notification-channels" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { channels: [Kanal] }

Kanal anlegen

POST/v1/notification-channels

Arten: email (to), webhook (url, secret), discord (url), matrix (homeserver, room, token), ntfy (url, token), chat (Slack-kompatibler Webhook: Mattermost, Rocket.Chat, Slack – url).

Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/notification-channels
FeldTypBedeutung
namePflichtTextbis 100 Zeichen
channelPflichtObjekt–
events[]PflichtListe (Auswahl)
registration.pendingsupport.ticketsupport.replyplan.requestedplan.changedplan.expiringplan.over_limitdomain.activedomain.errorcertificate.renewal_failedcertificate.expiringpurge.failedlimit.traffic_80limit.traffic_100node.offlinenode.degradednode.apply_failednode.setup_failededge.acme_failednode.stats_faileddomain.origin_downgame.downgame.lagapi.unreachablecontrol.degradedbackup.failedcontrol.standby_downnode.firewall_openstatic_ips.changedcdn_ips.changed…

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/notification-channels" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Bereitschaft","channel":{"type":"matrix","homeserver":"https://matrix.kunde.de","room":"!abc123:kunde.de","token":"syt_Ym90_AbCdEfGhIj"},"events":["domain.origin_down","certificate.renewal_failed"]}'
201angelegt – das neue Objekt

Kanal ändern

PATCH/v1/notification-channels/{id}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von PATCH /v1/notification-channels/{id}
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von PATCH /v1/notification-channels/{id}
FeldTypBedeutung
nameTextbis 100 Zeichen
events[]Liste (Auswahl)
registration.pendingsupport.ticketsupport.replyplan.requestedplan.changedplan.expiringplan.over_limitdomain.activedomain.errorcertificate.renewal_failedcertificate.expiringpurge.failedlimit.traffic_80limit.traffic_100node.offlinenode.degradednode.apply_failednode.setup_failededge.acme_failednode.stats_faileddomain.origin_downgame.downgame.lagapi.unreachablecontrol.degradedbackup.failedcontrol.standby_downnode.firewall_openstatic_ips.changedcdn_ips.changed…
enabledtrue/false–

Beispiel

curl -X PATCH "https://portal.kernhosting.com/v1/notification-channels/<id>" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled":false}'
200JSON

Kanal löschen

DELETE/v1/notification-channels/{id}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/notification-channels/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/notification-channels/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Testnachricht

POST/v1/notification-channels/{id}/test

Sofort; bei Fehler 400 mit Grund. Höchstens 5 je 10 Minuten.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/notification-channels/{id}/test
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/notification-channels/<id>/test" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Statusseite

Ihre öffentliche Statusseite (`/status/<adresse>`): Dienste und Meldungen.

Einstellungen der Statusseite

GET/v1/status-page

Adresse, Titel, Beschreibung, öffentlich ja/nein und die Dienste. Ohne gespeicherte Seite ein Vorschlag (id ist null). Öffentlich als JSON unter /api/status/<adresse>.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/status-page" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Statusseite speichern

PUT/v1/status-page

Nur eigene Websites und Spielserver; fremde oder doppelte werden ignoriert.

Key mit Rechten „lesen und ändern“

Body

Body von PUT /v1/status-page
FeldTypBedeutung
slugPflichtText–
titlePflichtTextbis 80 Zeichen
descriptionTextbis 300 Zeichen
Standard: ""
enabledPflichttrue/false–
items[]PflichtListe (Objekt)bis 50 Einträge
items[].kindPflichtAuswahl
websitegame
items[].idPflichtText–
items[].nameTextbis 80 Zeichen

Beispiel

curl -X PUT "https://portal.kernhosting.com/v1/status-page" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"slug":"kunde","title":"Status von Kunde GmbH","enabled":true,"items":[{"kind":"website","id":"01a1b2c3-d4e5-7f60-8a9b-0c1d2e3f4a5b","name":"Shop"}]}'
200JSON

Meldungen

GET/v1/status-page/notices

Laufende, geplante und die der letzten 30 Tage.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/status-page/notices" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON

Meldung veröffentlichen

POST/v1/status-page/notices

Hinweis (info), geplante Wartung (maintenance) oder Störung (incident). Ohne startsAt ab sofort, ohne endsAt bis zum Löschen.

Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/status-page/notices
FeldTypBedeutung
kindPflichtAuswahl
infomaintenanceincident
titlePflichtTextbis 120 Zeichen
bodyTextbis 2000 Zeichen
Standard: ""
startsAtZeit (ISO 8601)–
endsAtZeit (ISO 8601) | null–

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/status-page/notices" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"kind":"maintenance","title":"Update auf 1.21","startsAt":"2026-11-10T20:00:00+01:00","endsAt":"2026-11-10T21:00:00+01:00"}'
201angelegt – das neue Objekt

Meldung löschen

DELETE/v1/status-page/notices/{id}
Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/status-page/notices/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/status-page/notices/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

API-Keys

Schlüssel für diese API.

Aktive API-Keys

GET/v1/api-keys

Ohne Klartext.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/api-keys" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { apiKeys: [API-Key] }

API-Key erstellen

POST/v1/api-keys

Nur im Portal (ein Key kann keine weiteren Keys erzeugen). Der Klartext steht einmalig in der Antwort.

nur im Portal (Sitzung)

Body

Body von POST /v1/api-keys
FeldTypBedeutung
namePflichtTextbis 100 Zeichen
scopeAuswahl
fullread
Standard: "full"
expiresInDays30 | 90 | 365 | null
3090365

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/api-keys" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"Monitoring","scope":"read","expiresInDays":90}'
201angelegt – das neue Objekt

API-Key widerrufen

DELETE/v1/api-keys/{id}

Gilt sofort.

Key mit Rechten „lesen und ändern“

Parameter

Parameter von DELETE /v1/api-keys/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl -X DELETE "https://portal.kernhosting.com/v1/api-keys/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
204ohne Inhalt

Support

Anfragen an den Support – mit dem Dienst, um den es geht (Name und Störungen der letzten 7 Tage stehen gleich dabei).

Anfragen

GET/v1/support/tickets

Neueste zuerst. open = wartet auf den Support, answered = wartet auf Sie, closed = erledigt.

auch mit Key „nur lesen“

Beispiel

curl "https://portal.kernhosting.com/v1/support/tickets" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { tickets }

Neue Anfrage

POST/v1/support/tickets

Optional zu einem Dienst (context: website, game, device, zone, netlb mit dessen ID) – Name und Störungen der letzten 7 Tage kommen dann automatisch dazu. Höchstens 10 neue Anfragen je Stunde.

Key mit Rechten „lesen und ändern“

Body

Body von POST /v1/support/tickets
FeldTypBedeutung
subjectPflichtTextbis 150 Zeichen
bodyPflichtTextbis 10000 Zeichen
contextObjekt | null–
context.kindPflichtAuswahl
websitegamedevicezonenetlb
context.idPflichtText–

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/support/tickets" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"subject":"Spieler kommen nicht drauf","body":"Seit heute Morgen kommt niemand mehr auf den Server.","context":{"kind":"game","id":"01a1b2c3-d4e5-7f60-8a9b-0c1d2e3f4a5b"}}'
201angelegt – das neue Objekt· { id, number, subject, status, context, createdBy, createdAt, updatedAt, messages, thread }

Anfrage mit Verlauf

GET/v1/support/tickets/{id}

Alle Nachrichten (ohne interne Notizen des Supports).

auch mit Key „nur lesen“

Parameter

Parameter von GET /v1/support/tickets/{id}
FeldTypBedeutung
idPflichtPfadKennung

Beispiel

curl "https://portal.kernhosting.com/v1/support/tickets/<id>" \
  -H "Authorization: Bearer $KH_API_KEY"
200JSON· { id, number, subject, status, context, createdBy, createdAt, updatedAt, messages, thread }

Erledigt / wieder öffnen

PATCH/v1/support/tickets/{id}

{ "status": "closed" } bzw. "open".

Key mit Rechten „lesen und ändern“

Parameter

Parameter von PATCH /v1/support/tickets/{id}
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von PATCH /v1/support/tickets/{id}
FeldTypBedeutung
statusPflichtAuswahl
openclosed

Beispiel

curl -X PATCH "https://portal.kernhosting.com/v1/support/tickets/<id>" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
200JSON· { id, number, subject, status, context, createdBy, createdAt, updatedAt, messages, thread }

Antworten

POST/v1/support/tickets/{id}/messages

Die Anfrage wartet danach wieder auf den Support (auch wenn sie erledigt war).

Key mit Rechten „lesen und ändern“

Parameter

Parameter von POST /v1/support/tickets/{id}/messages
FeldTypBedeutung
idPflichtPfadKennung

Body

Body von POST /v1/support/tickets/{id}/messages
FeldTypBedeutung
bodyPflichtTextbis 10000 Zeichen

Beispiel

curl -X POST "https://portal.kernhosting.com/v1/support/tickets/<id>/messages" \
  -H "Authorization: Bearer $KH_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"body":"Danke, jetzt geht es wieder."}'
201angelegt – das neue Objekt· { id, number, subject, status, context, createdBy, createdAt, updatedAt, messages, thread }

Objekte

Was in den Antworten steht – die Felder der wichtigsten Objekte.

Website

Website oder HTTP(S)-Load-Balancer mit Hostnamen, Server, Cache und Zertifikat.

Website
FeldTypBedeutung
idPflichtText–
customerIdPflichtText–
namePflichtText–
statusPflichtAuswahl
pending_dnsissuing_certactiveerrordisabled
lastErrorPflichtText–
hostnames[]PflichtListe (Objekt)–
hostnames[].fqdnPflichtText–
hostnames[].connectMethodPflichtAuswahl
cnamealiasstatic
hostnames[].cnameTargetPflichtText–
hostnames[].ownershipTxtPflichtText–
hostnames[].dnsStatusPflichtAuswahl
uncheckedokwrong_targetnot_founderrorunverified
hostnames[].dnsCheckedAtPflichtZeit (ISO 8601) | null–
hostnames[].redirectToPrimaryPflichttrue/false–
kindPflichtAuswahl
websiteloadbalancer
createdAtPflichtZeit (ISO 8601)–
updatedAtPflichtZeit (ISO 8601)–

Spielserver

Spielserver mit Einstellungen, DNS-Status und letzter Meldung des Plugins.

Spielserver
FeldTypBedeutung
idPflichtText–
customerIdPflichtText–
editionPflicht"java"–
hostnamePflichtText–
cnameTargetPflichtText–
originPflichtObjekt–
origin.hostPflichtbeliebig–
origin.portPflichtGanzzahl1–65535
Standard: 25565
origin.weightGanzzahl1–100
origin.stateAuswahl
activebackuppaused
origin.servers[]Liste (Objekt)bis 9 Einträge
origin.servers[].hostPflichtbeliebig–
origin.servers[].portPflichtGanzzahl1–65535
Standard: 25565
origin.servers[].weightPflichtGanzzahl1–100
Standard: 1
origin.servers[].statePflichtAuswahl
activebackuppaused
Standard: "active"
origin.balanceAuswahl
round_robinleast_conn
enabledPflichttrue/false–
dnsStatusPflichtAuswahl
uncheckedokmissingwrong
dnsCheckedAtPflichtZeit (ISO 8601) | null–
protectedAtPflichtZeit (ISO 8601) | null–
pluginDownloadedAtPflichtZeit (ISO 8601) | null–
pluginSeenAtPflichtZeit (ISO 8601) | null–
pluginPflichtObjekt | null–
plugin.platformPflichtAuswahl
papervelocitybungeecordfabricfabric-1.21neoforgeneoforge-1.21paper-legacyforgeforge-legacyfabric-legacy
plugin.pluginVersionPflichtTextbis 32 Zeichen
plugin.serverVersionPflichtTextbis 100 Zeichen
plugin.onlyCdnPflichttrue/false–
plugin.playersPflichtObjekt–
plugin.players.onlinePflichtGanzzahl0–1000000
plugin.players.maxPflichtGanzzahl-1–1000000
plugin.tpsPflichtZahl | null–
plugin.rejectedPflichtGanzzahl0–9007199254740991
plugin.uptimeSecondsPflichtGanzzahl0–9007199254740991
plugin.autoUpdatetrue/false–
plugin.updateReadyText | null–
plugin.diagObjekt–
plugin.diag.memUsedMbPflichtGanzzahl0–10000000
plugin.diag.memMaxMbPflichtGanzzahl0–10000000
plugin.diag.msptPflichtZahl | null–
plugin.diag.worlds[]PflichtListe (Objekt)bis 30 Einträge
restartingUntilPflichtZeit (ISO 8601) | null–
syncPflichtObjekt | null–
sync.bansPflichtGanzzahl-9007199254740991–9007199254740991
sync.whitelistPflichtGanzzahl | null–
sync.atPflichtZeit (ISO 8601)–
settingsPflichtObjekt–
settings.connectionsPerMinutePflichtGanzzahl2–600
Standard: 20
settings.ipRules[]PflichtListe (Objekt)bis 500 Einträge
Standard: []
settings.ipRules[].cidrPflichtText–
settings.ipRules[].actionPflichtAuswahl
blockallow
settings.ipRules[].notePflichtTextbis 100 Zeichen
Standard: ""
settings.countriesPflichtObjekt
Standard: {"mode":"off","list":[]}
settings.countries.modePflichtAuswahl
offblockallow
Standard: "off"
settings.countries.list[]PflichtListe (Text)bis 250 Einträge
Standard: []
settings.maintenancePflichtObjekt
Standard: {"enabled":false,"motd":"","message":"","startsAt":null,"endsAt":null}
settings.maintenance.enabledPflichttrue/false
Standard: false
settings.maintenance.motdPflichtTextbis 200 Zeichen
Standard: ""
settings.maintenance.messagePflichtTextbis 300 Zeichen
Standard: ""
settings.maintenance.startsAtPflichtZeit (ISO 8601) | null
Standard: null
settings.maintenance.endsAtPflichtZeit (ISO 8601) | null
Standard: null
settings.unavailableMessagePflichtTextbis 300 Zeichen
Standard: ""
settings.botProtectionPflichtAuswahl
offautoalways
Standard: "auto"
settings.vpnFilterPflichtAuswahl
offverifyblock
Standard: "verify"
settings.loginChecksPflichttrue/false
Standard: true
settings.publicStatusPflichttrue/false
Standard: false
settings.forwardingPflichtAuswahl
pluginproxy
Standard: "plugin"
settings.syncBansPflichttrue/false
Standard: true
settings.edgeWhitelistPflichttrue/false
Standard: true
settings.vpnRegularsPflichtObjekt
Standard: {"enabled":true,"minSessions":3}
settings.vpnRegulars.enabledPflichttrue/false
Standard: true
settings.vpnRegulars.minSessionsPflichtGanzzahl1–50
Standard: 3
settings.vpnAllow[]PflichtListe (Text)bis 1000 Einträge
Standard: []
settings.serverListPflichtObjekt
Standard: {"mode":"off","motd":"","icon":null,"hidePlayers":false}
settings.serverList.modePflichtAuswahl
offofflinealways
Standard: "off"
settings.serverList.motdPflichtTextbis 256 Zeichen
Standard: ""
settings.serverList.iconPflichtText | null
Standard: null
settings.serverList.hidePlayersPflichttrue/false
Standard: false
settings.queuePflichtObjekt
Standard: {"enabled":true,"maxWaitSeconds":180,"whenFull":true}
settings.queue.enabledPflichttrue/false
Standard: true
settings.queue.maxWaitSecondsPflichtGanzzahl30–600
Standard: 180
settings.queue.whenFullPflichttrue/false
Standard: true
externalIdPflichtText–
createdAtPflichtZeit (ISO 8601)–
updatedAtPflichtZeit (ISO 8601)–

Schutzfunktionen

Alle Schutzfunktionen einer Website.

Schutzfunktionen
FeldTypBedeutung
ipRules[]PflichtListe (Objekt)bis 500 Einträge
Standard: []
ipRules[].cidrPflichtText–
ipRules[].actionPflichtAuswahl
blockallow
ipRules[].notePflichtTextbis 100 Zeichen
Standard: ""
countriesPflichtObjekt
Standard: {"mode":"off","list":[]}
countries.modePflichtAuswahl
offblockallow
Standard: "off"
countries.list[]PflichtListe (Text)bis 250 Einträge
Standard: []
pathLimits[]PflichtListe (Objekt)bis 20 Einträge
Standard: []
pathLimits[].pathPflichtTextbis 200 Zeichen
pathLimits[].requestsPflichtGanzzahl1–10000
pathLimits[].perPflichtAuswahl
secondminute
underAttackPflichttrue/false
Standard: false
maintenancePflichtObjekt
Standard: {"enabled":false,"title":"","message":"","until":"","startsAt":"","autoEnd":false}
maintenance.enabledPflichttrue/false
Standard: false
maintenance.titlePflichtTextbis 100 Zeichen
Standard: ""
maintenance.messagePflichtTextbis 1000 Zeichen
Standard: ""
maintenance.untilPflichtText
Standard: ""
maintenance.startsAtPflichtText
Standard: ""
maintenance.autoEndPflichttrue/false
Standard: false
unavailablePflichtObjekt
Standard: {"title":"","message":""}
unavailable.titlePflichtTextbis 100 Zeichen
Standard: ""
unavailable.messagePflichtTextbis 1000 Zeichen
Standard: ""
contactPflichtTextbis 200 Zeichen
Standard: ""
headersPflichtObjekt
Standard: {"hstsMaxAge":0,"hstsSubdomains":false,"hstsPreload":false,"nosniff":false,"frameOptions":"off","referrerPolicy":"off","hidePoweredBy":false}
headers.hstsMaxAgePflichtGanzzahl-9007199254740991–9007199254740991
Standard: 0
headers.hstsSubdomainsPflichttrue/false
Standard: false
headers.hstsPreloadPflichttrue/false
Standard: false
headers.nosniffPflichttrue/false
Standard: false
headers.frameOptionsPflichtAuswahl
offsameorigindeny
Standard: "off"
headers.referrerPolicyPflichtAuswahl
offstrict-origin-when-cross-originsame-originno-referrer
Standard: "off"
headers.hidePoweredByPflichttrue/false
Standard: false
wafPflichtObjekt
Standard: {"mode":"off","groups":["sqli","xss","traversal","files","rce","scanner"],"skipPaths":[]}
waf.modePflichtAuswahl
offlogblock
Standard: "off"
waf.groups[]PflichtListe (Auswahl)bis 6 Einträge
sqlixsstraversalfilesrcescanner
Standard: ["sqli","xss","traversal","files","rce","scanner"]
waf.skipPaths[]PflichtListe (Text)bis 20 Einträge
Standard: []
botsPflichtObjekt
Standard: {"verifyGood":false,"blockAi":false}
bots.verifyGoodPflichttrue/false
Standard: false
bots.blockAiPflichttrue/false
Standard: false
accessPflichtObjekt
Standard: {"team":false,"ips":[],"hours":12}
access.teamPflichttrue/false
Standard: false
access.ips[]PflichtListe (Text)bis 100 Einträge
Standard: []
access.hoursPflichtGanzzahl1–168
Standard: 12

Weiterleitungen und Header

Weiterleitungen und Header-Regeln einer Website.

Weiterleitungen und Header
FeldTypBedeutung
redirects[]PflichtListe (Objekt)bis 200 Einträge
Standard: []
redirects[].matchPflichtAuswahl
exactprefix
Standard: "exact"
redirects[].pathPflichtTextbis 300 Zeichen
redirects[].targetPflichtTextbis 1000 Zeichen
redirects[].statusPflichtGanzzahl-9007199254740991–9007199254740991
Standard: 301
redirects[].keepPathPflichttrue/false
Standard: true
redirects[].keepQueryPflichttrue/false
Standard: true
redirects[].notePflichtTextbis 100 Zeichen
Standard: ""
headers[]PflichtListe (Objekt)bis 50 Einträge
Standard: []
headers[].pathPflichtTextbis 300 Zeichen
Standard: "/"
headers[].namePflichtTextbis 64 Zeichen
headers[].actionPflichtAuswahl
setremove
Standard: "set"
headers[].valuePflichtTextbis 1000 Zeichen
Standard: ""

Cache-Leerung

Eine Cache-Leerung mit Fortschritt über alle Knoten.

Cache-Leerung
FeldTypBedeutung
idPflichtText–
domainIdPflichtText–
typePflichtAuswahl
urlprefixalltag
valuePflichtText–
createdAtPflichtZeit (ISO 8601)–
nodesTotalPflichtGanzzahl-9007199254740991–9007199254740991
nodesDonePflichtGanzzahl-9007199254740991–9007199254740991
nodesFailedPflichtGanzzahl-9007199254740991–9007199254740991
completedPflichttrue/false–

Origin-Prüfung

Ergebnis der Prüfung des Origin-Schutzes.

Origin-Prüfung
FeldTypBedeutung
checkedAtPflichtZeit (ISO 8601)–
originIps[]PflichtListe (Text)–
visitors[]PflichtListe (Objekt)–
visitors[].fqdnPflichtText–
visitors[].ips[]PflichtListe (Text)–
visitors[].onlyCdnPflichttrue/false–
leaks[]PflichtListe (Objekt)–
leaks[].namePflichtText–
leaks[].typePflichtText–
leaks[].detailPflichtText–
directPflichtObjekt–
direct.resultPflichtAuswahl
blockedrejectedopenunknown
direct.detailPflichtText–

Störung

Störung oder Hinweis.

Störung
FeldTypBedeutung
idPflichtText–
eventPflichtAuswahl
registration.pendingsupport.ticketsupport.replyplan.requestedplan.changedplan.expiringplan.over_limitdomain.activedomain.errorcertificate.renewal_failedcertificate.expiringpurge.failedlimit.traffic_80limit.traffic_100node.offlinenode.degradednode.apply_failednode.setup_failededge.acme_failednode.stats_faileddomain.origin_downgame.downgame.lagapi.unreachablecontrol.degradedbackup.failedcontrol.standby_downnode.firewall_openstatic_ips.changedcdn_ips.changed…
severityPflichtAuswahl
infowarningcritical
titlePflichtText–
messagePflichtText–
urlPflichtText–
customerIdPflichtText | null–
openedAtPflichtZeit (ISO 8601)–
resolvedAtPflichtZeit (ISO 8601) | null–
mutedUntilZeit (ISO 8601) | null–

Kanal

Benachrichtigungskanal (ohne Geheimnisse).

Kanal
FeldTypBedeutung
idPflichtText–
namePflichtText–
typePflichtAuswahl
emailwebhookdiscordmatrixntfychat
targetPflichtText–
events[]PflichtListe (Auswahl)
registration.pendingsupport.ticketsupport.replyplan.requestedplan.changedplan.expiringplan.over_limitdomain.activedomain.errorcertificate.renewal_failedcertificate.expiringpurge.failedlimit.traffic_80limit.traffic_100node.offlinenode.degradednode.apply_failednode.setup_failededge.acme_failednode.stats_faileddomain.origin_downgame.downgame.lagapi.unreachablecontrol.degradedbackup.failedcontrol.standby_downnode.firewall_openstatic_ips.changedcdn_ips.changed…
enabledPflichttrue/false–
createdAtPflichtZeit (ISO 8601)–
lastSentAtPflichtZeit (ISO 8601) | null–
lastErrorPflichtText–

API-Key

API-Key ohne Klartext.

API-Key
FeldTypBedeutung
idPflichtText–
namePflichtText–
prefixPflichtText–
scopePflichtAuswahl
fullreadgames
createdAtPflichtZeit (ISO 8601)–
lastUsedAtPflichtZeit (ISO 8601) | null–
expiresAtPflichtZeit (ISO 8601) | null–