Im Kundenportal unter API-Keys einen Key erstellen und kopieren – er wird nur einmal angezeigt. 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.
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.
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" }]
}
}Status Bedeutung 400 Ungültige Eingabe (mit details) oder fachlicher Fehler, z. B. hostname_taken 401 Kein, falscher oder abgelaufener API-Key 403 Nicht erlaubt: read_only_key, limit_reached, customer_pending … 404 Nicht gefunden 409 Konflikt mit dem aktuellen Zustand (z. B. Rückgängig nicht mehr möglich) 429 Zu viele Anfragen – kurz warten und erneut versuchen 5xx Störung bei uns – mit Wartezeit wiederholen
Was Grenze Anfragen je API-Key 600 pro Minute DNS-Prüfung einer Website 6 pro Minute Server testen (Website, Spielserver) 20 je 10 Minuten Origin-Schutz prüfen 10 je 10 Minuten Testnachricht eines Kanals 5 je 10 Minuten Cache leeren laut 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.
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-clientNach 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' runKonto Ihr Konto, Limits und Verbrauch, Verbindungen zwischen den Produkten.
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"200 JSON · { customer , limits , used , apiKey }
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"200 JSON · { news }
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"200 JSON · { plans }
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"200 JSON · { plan , since , until , requested , features , legacy , overage , graceUntil , history }
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 Feld Typ Bedeutung planIdPflicht Text – confirmOverage true/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"}'200 JSON · { plan , since , until , requested , features , legacy , overage , graceUntil , history }
Key mit Rechten „lesen und ändern“
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/account/plan/request" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON · { plan , since , until , requested , features , legacy , overage , graceUntil , history }
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"200 JSON · { bonuses , total , trial , referral }
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 Feld Typ Bedeutung codePflicht Text –
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"}'201 angelegt – das neue Objekt · { id , source , label , bonus , startsAt , expiresAt , active }
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"201 angelegt – das neue Objekt · { id , source , label , bonus , startsAt , expiresAt , active }
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"200 JSON · { twoFactorRequired , members , invites }
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"200 JSON · { rows , next }
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"200 JSON
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"200 JSON
Was mit einem Dienst, Gerät oder einer DNS-Zone zusammenhängt (wie „Verbunden mit“ im Portal): die DNS-Zone eines Namens, das Gerät hinter einem Server (mit online), Dienste, die ein Gerät nutzen.
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/related Feld Typ Bedeutung kindPflicht Abfrage · Auswahl website, loadbalancer, game, netlb, device oder zoneidPflicht Abfrage Kennung des Objekts
Beispiel
curl "https://portal.kernhosting.com/v1/related?kind=website&id=01a1b2c3-d4e5-7f60-8a9b-0c1d2e3f4a5b" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
Websites Websites und HTTP(S)-Load-Balancer: anlegen, Server, Hostnamen, DNS-Prüfung, Verlauf.
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"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 Feld Typ Bedeutung hostnamePflicht Text – originPflicht Objekt – origin.scheme Auswahl httpshttp
Standard: "https"
origin.hostPflicht Text – origin.port Ganzzahl 1–65535 origin.hostHeader Text – origin.verifyTls true/false Standard: true
origin.connectTimeoutMs Ganzzahl 500–30000Standard: 5000
origin.firstByteTimeoutMs Ganzzahl 1000–300000Standard: 60000
origin.weight Ganzzahl 1–100 origin.state Auswahl activebackuppaused
origin.servers[] Liste (Objekt) bis 9 Einträge origin.servers[].hostPflicht Text – origin.servers[].port Ganzzahl 1–65535 origin.servers[].weight Ganzzahl 1–100Standard: 1
origin.servers[].state Auswahl activebackuppaused
Standard: "active"
origin.balance Auswahl round_robinleast_connsticky
origin.healthCheck true/false – origin.healthPath Text bis 200 Zeichen preset Auswahl nonewordpressstatic
Standard: "none"
includeCounterpart true/false Standard: true
kind Auswahl 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}}'201 angelegt – das neue Objekt · Website Mit Server, Cache-Einstellungen, Regeln, Zertifikat (certificate).
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/domains/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/domains/<id>" \
-H "Authorization: Bearer $KH_API_KEY"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} Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von PATCH /v1/domains/{id} Feld Typ Bedeutung origin Objekt – origin.scheme Auswahl httpshttp
Standard: "https"
origin.hostPflicht Text – origin.port Ganzzahl 1–65535 origin.hostHeader Text – origin.verifyTls true/false Standard: true
origin.connectTimeoutMs Ganzzahl 500–30000Standard: 5000
origin.firstByteTimeoutMs Ganzzahl 1000–300000Standard: 60000
origin.weight Ganzzahl 1–100 origin.state Auswahl activebackuppaused
origin.servers[] Liste (Objekt) bis 9 Einträge origin.servers[].hostPflicht Text – origin.servers[].port Ganzzahl 1–65535 origin.servers[].weight Ganzzahl 1–100Standard: 1
origin.servers[].state Auswahl activebackuppaused
Standard: "active"
origin.balance Auswahl round_robinleast_connsticky
origin.healthCheck true/false – origin.healthPath Text bis 200 Zeichen enabled true/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}'Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/domains/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/domains/<id>" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
Key mit Rechten „lesen und ändern“
Parameter
Parameter von POST /v1/domains/{id}/hostnames Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von POST /v1/domains/{id}/hostnames Feld Typ Bedeutung hostnamePflicht Text – connectMethod Auswahl cnamealiasstatic
redirectToPrimary true/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"}'201 angelegt – das neue Objekt
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} Feld Typ Bedeutung idPflicht Pfad Kennung hostnamePflicht Pfad Hostname, z. B. www.kunde.de
Body
Body von PATCH /v1/domains/{id}/hostnames/{hostname} Feld Typ Bedeutung connectMethod Auswahl cnamealiasstatic
redirectToPrimary true/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}'200 JSON
Nicht den Haupt-Hostnamen.
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/domains/{id}/hostnames/{hostname} Feld Typ Bedeutung idPflicht Pfad Kennung hostnamePflicht Pfad Hostname, 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"200 JSON
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 Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X POST "https://portal.kernhosting.com/v1/domains/<id>/dns-check" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
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 Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X POST "https://portal.kernhosting.com/v1/domains/<id>/origin-test" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
Ausfälle, Zertifikate, Wartung, Schutz, Cache-Leerungen und Änderungen – neueste zuerst.
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/domains/{id}/activity Feld Typ Bedeutung idPflicht Pfad Kennung kind Abfrage · Auswahl Nur eine Art von Ereignis: outage, certificate, maintenance, security, cache, change days Abfrage · Ganzzahl Zeitraum in Tagen (1–30, Standard 14) limit Abfrage · Ganzzahl Höchstens so viele (1–200, Standard 50)
Beispiel
curl "https://portal.kernhosting.com/v1/domains/<id>/activity" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
Cache Cache-Einstellungen, Regeln, Weiterleitungen und Cache leeren.
Ersetzt alle Einstellungen; fehlende Felder bekommen den Standardwert.
Key mit Rechten „lesen und ändern“
Parameter
Parameter von PUT /v1/domains/{id}/cache Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von PUT /v1/domains/{id}/cache Feld Typ Bedeutung respectOriginHeaders true/false Standard: true
defaultTtlSeconds Ganzzahl 0–31536000Standard: 3600
maxTtlSeconds Ganzzahl 0–31536000Standard: 2592000
staleIfErrorSeconds Ganzzahl 0–31536000Standard: 86400
queryMode Auswahl includeignorewhitelist
Standard: "include"
queryWhitelist[] Liste (Text) bis 50 EinträgeStandard: []
bypassCookies[] Liste (Text) bis 50 EinträgeStandard: []
preset Auswahl nonewordpressstatic
Standard: "none"
compression true/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"}'200 JSON
Ersetzt alle Regeln (höchstens 100).
Key mit Rechten „lesen und ändern“
Parameter
Parameter von PUT /v1/domains/{id}/rules Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von PUT /v1/domains/{id}/rules Feld Typ Bedeutung rules[]Pflicht Liste (Objekt) bis 100 Einträge rules[].id Text – rules[].priority Ganzzahl 0–10000Standard: 100
rules[].matchTypePflicht Auswahl prefixexactextensionregex
rules[].patternPflicht Text bis 200 Zeichen rules[].actionPflicht Auswahl bypasscacheoverride_ttl
rules[].ttlSeconds Ganzzahl 0–31536000 rules[].description Text bis 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 '{}'200 JSON
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/domains/{id}/routing Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/domains/<id>/routing" \
-H "Authorization: Bearer $KH_API_KEY"Ersetzt die übergebenen Teile (redirects, headers).
Key mit Rechten „lesen und ändern“
Parameter
Parameter von PUT /v1/domains/{id}/routing Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von PUT /v1/domains/{id}/routing Feld Typ Bedeutung redirects[] Liste (Objekt) bis 200 Einträge redirects[].match Auswahl exactprefix
Standard: "exact"
redirects[].pathPflicht Text bis 300 Zeichen redirects[].targetPflicht Text bis 1000 Zeichen redirects[].status Ganzzahl -9007199254740991–9007199254740991Standard: 301
redirects[].keepPath true/false Standard: true
redirects[].keepQuery true/false Standard: true
redirects[].note Text bis 100 ZeichenStandard: ""
headers[] Liste (Objekt) bis 50 Einträge headers[].path Text bis 300 ZeichenStandard: "/"
headers[].namePflicht Text bis 64 Zeichen headers[].action Auswahl setremove
Standard: "set"
headers[].value Text bis 1000 ZeichenStandard: ""
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"}]}'Die letzten 50.
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/domains/{id}/purges Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/domains/<id>/purges" \
-H "Authorization: Bearer $KH_API_KEY"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 Feld Typ Bedeutung idPflicht Pfad Kennung
Body – type: "url"
Body von POST /v1/domains/{id}/purges Feld Typ Bedeutung typePflicht "url" – urlPflicht Text bis 2048 Zeichen
Body – type: "prefix"
Body von POST /v1/domains/{id}/purges Feld Typ Bedeutung typePflicht "prefix" – prefixPflicht Text bis 200 Zeichen
Body – type: "all"
Body von POST /v1/domains/{id}/purges Feld Typ Bedeutung typePflicht "all" –
Body – type: "tag"
Body von POST /v1/domains/{id}/purges Feld Typ Bedeutung typePflicht "tag" – tags[]Pflicht Liste (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"}'nodesDone, nodesFailed, completed über alle Knoten.
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/purges/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/purges/<id>" \
-H "Authorization: Bearer $KH_API_KEY"Sicherheit Sperren, Länder, Rate-Limits, Wartung, WAF, Bots, Origin-Schutz.
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 Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/domains/<id>/security" \
-H "Authorization: Bearer $KH_API_KEY"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 Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von PATCH /v1/domains/{id}/security Feld Typ Bedeutung ipRules[] Liste (Objekt) bis 500 Einträge ipRules[].cidrPflicht Text – ipRules[].actionPflicht Auswahl blockallow
ipRules[].note Text bis 100 ZeichenStandard: ""
countries Objekt – countries.modePflicht Auswahl offblockallow
countries.list[]Pflicht Liste (Text) bis 250 Einträge pathLimits[] Liste (Objekt) bis 20 Einträge pathLimits[].pathPflicht Text bis 200 Zeichen pathLimits[].requestsPflicht Ganzzahl 1–10000 pathLimits[].perPflicht Auswahl secondminute
underAttack true/false – maintenance Objekt – maintenance.enabled true/false – maintenance.title Text bis 100 Zeichen maintenance.message Text bis 1000 Zeichen maintenance.until Text – maintenance.startsAt Text – maintenance.autoEnd true/false – contact Text bis 200 Zeichen unavailable Objekt – unavailable.title Text bis 100 Zeichen unavailable.message Text bis 1000 Zeichen headers Objekt – headers.hstsMaxAge Ganzzahl -9007199254740991–9007199254740991Standard: 0
headers.hstsSubdomains true/false Standard: false
headers.hstsPreload true/false Standard: false
headers.nosniff true/false Standard: false
headers.frameOptions Auswahl offsameorigindeny
Standard: "off"
headers.referrerPolicy Auswahl offstrict-origin-when-cross-originsame-originno-referrer
Standard: "off"
headers.hidePoweredBy true/false Standard: false
waf Objekt – waf.mode Auswahl offlogblock
Standard: "off"
waf.groups[] Liste (Auswahl) bis 6 Einträgesqlixsstraversalfilesrcescanner
Standard: ["sqli","xss","traversal","files","rce","scanner"]
waf.skipPaths[] Liste (Text) bis 20 EinträgeStandard: []
bots Objekt – bots.verifyGood true/false Standard: false
bots.blockAi true/false Standard: false
access Objekt – access.team true/false Standard: false
access.ips[] Liste (Text) bis 100 EinträgeStandard: []
access.hours Ganzzahl 1–168Standard: 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}}'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 Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X POST "https://portal.kernhosting.com/v1/domains/<id>/origin-check" \
-H "Authorization: Bearer $KH_API_KEY"Berichte Monatsbericht (auch per E-Mail am 1.) und Angriffsberichte als öffentliche Seite zum Teilen.
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 Feld Typ Bedeutung month Abfrage Monat als JJJJ-MM
Beispiel
curl "https://portal.kernhosting.com/v1/reports/monthly" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON · { month , previous , websites , games , defended , incidents }
Ihre geteilten Angriffsberichte, neueste zuerst.
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/attack-reports Feld Typ Bedeutung target Abfrage Nur für diese Domain- bzw. Spielserver-ID
Beispiel
curl "https://portal.kernhosting.com/v1/attack-reports" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
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 Feld Typ Bedeutung kindPflicht Auswahl websitegame
targetIdPflicht Text – from Zeit (ISO 8601) – to Zeit (ISO 8601) – anonymous true/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}'201 angelegt – das neue Objekt · { id , kind , targetId , targetLabel , anonymous , from , to , url , createdAt , createdByName , data }
Die öffentliche Seite ist danach weg.
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/attack-reports/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/attack-reports/<id>" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
DNS DNS-Zonen, Einträge, Verlauf, DNSSEC, DynDNS und ACME (DNS-01).
auch mit Key „nur lesen“
Beispiel
curl "https://portal.kernhosting.com/v1/dns/zones" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
Zustand pending, bis die Nameserver beim Registrar umgestellt sind.
Key mit Rechten „lesen und ändern“
Body
Body von POST /v1/dns/zones Feld Typ Bedeutung namePflicht Text Domain 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"}'201 angelegt – das neue Objekt
Mit Einträgen und cdnNameservers (beim Registrar einzutragen).
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/dns/zones/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/dns/zones/<id>" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
Vorher beim Registrar andere Nameserver einstellen.
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/dns/zones/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/dns/zones/<id>" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
Key mit Rechten „lesen und ändern“
Parameter
Parameter von POST /v1/dns/zones/{id}/check Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X POST "https://portal.kernhosting.com/v1/dns/zones/<id>/check" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/dns/zones/{id}/records Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/dns/zones/<id>/records" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
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 Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von POST /v1/dns/zones/{id}/records Feld Typ Bedeutung name Text bis 253 ZeichenStandard: "@"
typePflicht Auswahl AAAAACNAMEMXTXTSRVCAANS
ttl Ganzzahl -9007199254740991–9007199254740991 contentPflicht Text bis 4000 Zeichen priority Ganzzahl | null – weight Ganzzahl | null – port Ganzzahl | null – tag Auswahl | null issueissuewildiodef
proxied true/false – comment Text bis 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}'201 angelegt – das neue Objekt
Key mit Rechten „lesen und ändern“
Parameter
Parameter von PUT /v1/dns/zones/{id}/records/{recordId} Feld Typ Bedeutung idPflicht Pfad Kennung recordIdPflicht Pfad Kennung des Eintrags
Body
Body von PUT /v1/dns/zones/{id}/records/{recordId} Feld Typ Bedeutung name Text bis 253 ZeichenStandard: "@"
typePflicht Auswahl AAAAACNAMEMXTXTSRVCAANS
ttl Ganzzahl -9007199254740991–9007199254740991 contentPflicht Text bis 4000 Zeichen priority Ganzzahl | null – weight Ganzzahl | null – port Ganzzahl | null – tag Auswahl | null issueissuewildiodef
proxied true/false – comment Text bis 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}'200 JSON
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/dns/zones/{id}/records/{recordId} Feld Typ Bedeutung idPflicht Pfad Kennung recordIdPflicht Pfad Kennung des Eintrags
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/dns/zones/<id>/records/<recordId>" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
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 Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von POST /v1/dns/zones/{id}/records/bulk Feld Typ Bedeutung actionPflicht Auswahl deleteproxied_onproxied_off
ids[]Pflicht Liste (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"]}'200 JSON
auch mit Key „nur lesen“ Antwort: text/plain
Parameter
Parameter von GET /v1/dns/zones/{id}/export Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/dns/zones/<id>/export" \
-H "Authorization: Bearer $KH_API_KEY" \
-o datei200 Datei
Antwort: übernommen, übersprungen, Fehler, nicht unterstützt.
Key mit Rechten „lesen und ändern“
Parameter
Parameter von POST /v1/dns/zones/{id}/import Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von POST /v1/dns/zones/{id}/import Feld Typ Bedeutung zonefilePflicht Text Inhalt 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"}'200 JSON
Je Änderung Urheber, Zusammenfassung, Einträge vorher/nachher und undoable.
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/dns/zones/{id}/changes Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/dns/zones/<id>/changes" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
auch mit Key „nur lesen“ Antwort: text/csv
Parameter
Parameter von GET /v1/dns/zones/{id}/changes/export Feld Typ Bedeutung idPflicht Pfad Kennung q Abfrage Suchtext wer Abfrage Urheber (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 datei200 Datei
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 Feld Typ Bedeutung idPflicht Pfad Kennung changeIdPflicht Pfad Kennung der Änderung
Beispiel
curl -X POST "https://portal.kernhosting.com/v1/dns/zones/<id>/changes/<changeId>/undo" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
dsStatus: none, ok, foreign, error; key mit DS und DNSKEY.
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/dns/zones/{id}/dnssec Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/dns/zones/<id>/dnssec" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
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 Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X POST "https://portal.kernhosting.com/v1/dns/zones/<id>/dnssec" \
-H "Authorization: Bearer $KH_API_KEY"201 angelegt – das neue Objekt
409, solange der DS-Eintrag beim Registrar steht.
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/dns/zones/{id}/dnssec Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/dns/zones/<id>/dnssec" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
Ohne Tokens.
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/dns/zones/{id}/dyndns Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/dns/zones/<id>/dyndns" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
Antwort mit token – nur dieses eine Mal.
Key mit Rechten „lesen und ändern“
Parameter
Parameter von POST /v1/dns/zones/{id}/dyndns Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von POST /v1/dns/zones/{id}/dyndns Feld Typ Bedeutung labelPflicht Text bis 60 Zeichen names[]Pflicht Liste (Text) bis 10 Einträge ipv6InterfaceId Text –
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"]}'201 angelegt – das neue Objekt
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/dns/zones/{id}/dyndns/{dyndnsId} Feld Typ Bedeutung idPflicht Pfad Kennung dyndnsIdPflicht Pfad Kennung des DynDNS-Zugangs
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/dns/zones/<id>/dyndns/<dyndnsId>" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
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 Feld Typ Bedeutung idPflicht Pfad Kennung dyndnsIdPflicht Pfad Kennung des DynDNS-Zugangs
Beispiel
curl -X POST "https://portal.kernhosting.com/v1/dns/zones/<id>/dyndns/<dyndnsId>/token" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
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 Feld Typ Bedeutung fqdnPflicht Text bis 255 Zeichen value Text bis 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…"}'200 JSON
Key mit Rechten „lesen und ändern“
Body
Body von POST /v1/dns/acme/cleanup Feld Typ Bedeutung fqdnPflicht Text bis 255 Zeichen value Text bis 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…"}'200 JSON
Spielserver Minecraft-Server über das CDN: Einstellungen, Plugin, Tests und Statistik.
auch mit Key „nur lesen“
Beispiel
curl "https://portal.kernhosting.com/v1/game-servers" \
-H "Authorization: Bearer $KH_API_KEY"Key mit Rechten „lesen und ändern“
Body
Body von POST /v1/game-servers Feld Typ Bedeutung hostnamePflicht Text – originPflicht Objekt – origin.hostPflicht Text – origin.port Ganzzahl 1–65535Standard: 25565
origin.weight Ganzzahl 1–100 origin.state Auswahl activebackuppaused
origin.servers[] Liste (Objekt) bis 9 Einträge origin.servers[].hostPflicht Text – origin.servers[].port Ganzzahl 1–65535Standard: 25565
origin.servers[].weight Ganzzahl 1–100Standard: 1
origin.servers[].state Auswahl activebackuppaused
Standard: "active"
origin.balance Auswahl round_robinleast_conn
forwarding Auswahl 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}}'Mit Einstellungen, DNS-Status und der letzten Meldung des Plugins (plugin).
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/game-servers/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/game-servers/<id>" \
-H "Authorization: Bearer $KH_API_KEY"Server (origin, auch mehrere) oder an/aus (enabled).
Key mit Rechten „lesen und ändern“
Parameter
Parameter von PATCH /v1/game-servers/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von PATCH /v1/game-servers/{id} Feld Typ Bedeutung origin Objekt – origin.hostPflicht Text – origin.port Ganzzahl 1–65535Standard: 25565
origin.weight Ganzzahl 1–100 origin.state Auswahl activebackuppaused
origin.servers[] Liste (Objekt) bis 9 Einträge origin.servers[].hostPflicht Text – origin.servers[].port Ganzzahl 1–65535Standard: 25565
origin.servers[].weight Ganzzahl 1–100Standard: 1
origin.servers[].state Auswahl activebackuppaused
Standard: "active"
origin.balance Auswahl round_robinleast_conn
enabled true/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}'Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/game-servers/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/game-servers/<id>" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
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 Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von PATCH /v1/game-servers/{id}/settings Feld Typ Bedeutung connectionsPerMinute Ganzzahl 2–600 ipRules[] Liste (Objekt) bis 500 Einträge ipRules[].cidrPflicht Text – ipRules[].actionPflicht Auswahl blockallow
ipRules[].note Text bis 100 ZeichenStandard: ""
countries Objekt – countries.modePflicht Auswahl offblockallow
countries.list[]Pflicht Liste (Text) bis 250 Einträge maintenance Objekt – maintenance.enabled true/false – maintenance.motd Text bis 200 Zeichen maintenance.message Text bis 300 Zeichen maintenance.startsAt Zeit (ISO 8601) | null – maintenance.endsAt Zeit (ISO 8601) | null – unavailableMessage Text bis 300 Zeichen botProtection Auswahl offautoalways
vpnFilter Auswahl offverifyblock
loginChecks true/false – publicStatus true/false – syncBans true/false – edgeWhitelist true/false – forwarding Auswahl pluginproxy
vpnRegulars Objekt – vpnRegulars.enabled true/false – vpnRegulars.minSessions Ganzzahl 1–50 vpnAllow[] Liste (Text) bis 1000 Einträge serverList Objekt – serverList.mode Auswahl offofflinealways
Standard: "off"
serverList.motd Text bis 256 ZeichenStandard: ""
serverList.icon Text | null Standard: null
serverList.hidePlayers true/false Standard: false
queue Objekt – queue.enabled true/false Standard: true
queue.maxWaitSeconds Ganzzahl 30–600Standard: 180
queue.whenFull true/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"}}'Namen, die schon der Edge abweist (Kleinbuchstaben).
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/game-servers/{id}/player-bans Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/game-servers/<id>/player-bans" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
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 Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von POST /v1/game-servers/{id}/player-bans Feld Typ Bedeutung namePflicht Text – reason Text bis 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"}'201 angelegt – das neue Objekt
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/game-servers/{id}/player-bans/{name} Feld Typ Bedeutung idPflicht Pfad Kennung namePflicht Pfad name
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/game-servers/<id>/player-bans/<name>" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
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 Feld Typ Bedeutung q Abfrage Teil des Spielernamens; leer = zuletzt aktive
Beispiel
curl "https://portal.kernhosting.com/v1/players" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
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} Feld Typ Bedeutung namePflicht Pfad name
Beispiel
curl "https://portal.kernhosting.com/v1/players/<name>" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON · { name , firstSeen , lastSeen , servers , edges , countries , quality , recent }
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 Feld Typ Bedeutung idPflicht Pfad Kennung platform Abfrage · Auswahl paper (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) minecraft Abfrage · Text Statt platform: Minecraft-Version (z. B. 1.12.2) – das Portal wählt das passende Jar, zusammen mit loader. Nicht unterstützt → 400 unsupported_version. loader Abfrage · Auswahl paper (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 datei200 Datei
Key mit Rechten „lesen und ändern“
Parameter
Parameter von POST /v1/game-servers/{id}/dns-check Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X POST "https://portal.kernhosting.com/v1/game-servers/<id>/dns-check" \
-H "Authorization: Bearer $KH_API_KEY"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 Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X POST "https://portal.kernhosting.com/v1/game-servers/<id>/test" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
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 Feld Typ Bedeutung idPflicht Pfad Kennung range Abfrage · Auswahl Verlauf: 24h (Standard) oder 7d
Beispiel
curl "https://portal.kernhosting.com/v1/game-servers/<id>/stats" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
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 Feld Typ Bedeutung idPflicht Pfad Kennung kind Abfrage · Auswahl Nur eine Art von Ereignis: outage, restart, block, maintenance, update, change days Abfrage · Ganzzahl Zeitraum in Tagen (1–30, Standard 14) limit Abfrage · Ganzzahl Höchstens so viele (1–200, Standard 50)
Beispiel
curl "https://portal.kernhosting.com/v1/game-servers/<id>/activity" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
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 Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X POST "https://portal.kernhosting.com/v1/game-servers/<id>/secret" \
-H "Authorization: Bearer $KH_API_KEY"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).
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"200 JSON · { servers }
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 Feld Typ Bedeutung minecraft Abfrage Minecraft-Version des Servers loader Abfrage paper (Standard, auch Spigot), fabric, forge, neoforge
Beispiel
curl "https://portal.kernhosting.com/v1/integration/plugins" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON · { plugins , recommended }
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"200 JSON · { domains }
Für die Prüfung beim Tippen im Panel.
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/integration/domains/check Feld Typ Bedeutung domainPflicht Abfrage Adress-Domain namePflicht Abfrage Wunschname
Beispiel
curl "https://portal.kernhosting.com/v1/integration/domains/check?domain=play.ihr-hosting.de&name=meinserver" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON · { available , address , reason }
Zustand: DNS, Plugin (Version, Spieler), Schutz geprüft, Wartung.
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/integration/game-servers/{externalId} Feld Typ Bedeutung externalIdPflicht Pfad Kennung 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"200 JSON · { externalId , id , label , address , addressDomain , cnameTarget , dns , server , protection , options , forwarding , enabled , maintenance , plugin , protectedAt , createdAt , updatedAt }
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} Feld Typ Bedeutung externalIdPflicht Pfad Kennung des Servers in Ihrem Panel, z. B. srv-1234
Body
Body von PUT /v1/integration/game-servers/{externalId} Feld Typ Bedeutung addressPflicht Text | Objekt – serverPflicht Objekt – server.hostPflicht Text – server.port Ganzzahl 1–65535Standard: 25565
protection Auswahl basisstandardstreng
Standard: "standard"
options Objekt Standard: {"countries":[],"blockVpn":false,"edgeWhitelist":true,"publicStatus":false}
options.countries[] Liste (Text) bis 50 EinträgeStandard: []
options.blockVpn true/false Standard: false
options.edgeWhitelist true/false Standard: true
options.publicStatus true/false Standard: false
forwarding Auswahl pluginproxy
Standard: "plugin"
label Text bis 100 ZeichenStandard: ""
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"}'200 JSON · { externalId , id , label , address , addressDomain , cnameTarget , dns , server , protection , options , forwarding , enabled , maintenance , plugin , protectedAt , createdAt , updatedAt }
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/integration/game-servers/{externalId} Feld Typ Bedeutung externalIdPflicht Pfad Kennung 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"204 ohne Inhalt
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 Feld Typ Bedeutung externalIdPflicht Pfad Kennung des Servers in Ihrem Panel, z. B. srv-1234
Body
Body von POST /v1/integration/game-servers/{externalId}/maintenance Feld Typ Bedeutung enabledPflicht true/false – motd Text bis 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"}'200 JSON · { externalId , id , label , address , addressDomain , cnameTarget , dns , server , protection , options , forwarding , enabled , maintenance , plugin , protectedAt , createdAt , updatedAt }
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 Feld Typ Bedeutung externalIdPflicht Pfad Kennung des Servers in Ihrem Panel, z. B. srv-1234 platform Abfrage · Auswahl paper (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) minecraft Abfrage · Text Statt platform: Minecraft-Version (z. B. 1.12.2) – das Portal wählt das passende Jar, zusammen mit loader. Nicht unterstützt → 400 unsupported_version. loader Abfrage · Auswahl paper (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 datei200 Datei
Geräte Geräte mit dem KernHosting-Client und ihre Freigaben.
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"200 JSON
Antwort mit Code für die Anmeldung des Clients.
Key mit Rechten „lesen und ändern“
Body
Body von POST /v1/devices Feld Typ Bedeutung namePflicht Text bis 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"}'201 angelegt – das neue Objekt
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/devices/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/devices/<id>" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON
Key mit Rechten „lesen und ändern“
Parameter
Parameter von PATCH /v1/devices/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von PATCH /v1/devices/{id} Feld Typ Bedeutung name Text bis 60 Zeichen enabled true/false – selfManage true/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}'200 JSON
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/devices/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/devices/<id>" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
Key mit Rechten „lesen und ändern“
Parameter
Parameter von POST /v1/devices/{id}/code Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X POST "https://portal.kernhosting.com/v1/devices/<id>/code" \
-H "Authorization: Bearer $KH_API_KEY"201 angelegt – das neue Objekt
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 Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von POST /v1/devices/{id}/ports Feld Typ Bedeutung namePflicht Text bis 60 Zeichen protocol Auswahl tcpudp
Standard: "tcp"
targetPflicht Objekt – target.hostPflicht Text – target.portPflicht Ganzzahl 1–65535 hostname Text – proxyProtocol true/false Standard: false
internal true/false Standard: false
remote Auswahl | 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}'201 angelegt – das neue Objekt
Key mit Rechten „lesen und ändern“
Parameter
Parameter von PATCH /v1/devices/{id}/ports/{portId} Feld Typ Bedeutung idPflicht Pfad Kennung portIdPflicht Pfad Kennung der Freigabe
Body
Body von PATCH /v1/devices/{id}/ports/{portId} Feld Typ Bedeutung name Text bis 60 Zeichen protocol Auswahl tcpudp
target Objekt – target.hostPflicht Text – target.portPflicht Ganzzahl 1–65535 hostname Text – proxyProtocol true/false – enabled true/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}'200 JSON
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/devices/{id}/ports/{portId} Feld Typ Bedeutung idPflicht Pfad Kennung portIdPflicht Pfad Kennung der Freigabe
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/devices/<id>/ports/<portId>" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
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 Feld Typ Bedeutung idPflicht Pfad Kennung portIdPflicht Pfad Kennung der Freigabe
Body
Body von POST /v1/devices/{id}/ports/{portId}/zugang Feld Typ Bedeutung ip Text – hours Ganzzahl 1–8Standard: 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}'200 JSON · { until , port , ip }
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/devices/{id}/ports/{portId}/zugang Feld Typ Bedeutung idPflicht Pfad Kennung portIdPflicht Pfad Kennung der Freigabe
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/devices/<id>/ports/<portId>/zugang" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
Benachrichtigungen Störungen und Kanäle (E-Mail, Webhook, Discord, Slack, Telegram …).
Neueste zuerst.
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/alerts Feld Typ Bedeutung open Abfrage 1 = nur offenearea Abfrage Bereich: websites, dns, spielserver, geraete, load-balancer, konto kind Abfrage problems (Warnung, kritisch) oder notices (Hinweise)days Abfrage Zeitraum in Tagen (offene immer dabei) limit Abfrage Höchstens so viele, bis 500 (Standard 100)
Beispiel
curl "https://portal.kernhosting.com/v1/alerts" \
-H "Authorization: Bearer $KH_API_KEY"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 Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von POST /v1/alerts/{id}/mute Feld Typ Bedeutung hoursPflicht Ganzzahl | 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}'200 JSON · { id , event , severity , title , message , url , customerId , openedAt , resolvedAt , mutedUntil }
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/alerts/{id}/mute Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/alerts/<id>/mute" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON · { id , event , severity , title , message , url , customerId , openedAt , resolvedAt , mutedUntil }
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"200 JSON · { modes , mutedAreas , monthlyReport , productNews }
Key mit Rechten „lesen und ändern“
Body
Body von PUT /v1/notification-settings Feld Typ Bedeutung modesPflicht Objekt – modes.infoPflicht Auswahl instantdigestoff
modes.warningPflicht Auswahl instantdigestoff
modes.criticalPflicht Auswahl instantoff
mutedAreas[]Pflicht Liste (Auswahl) bis 7 Einträgewebsitesdnsspielservergeraeteload-balancerkontosystem
monthlyReport true/false Standard: true
productNews true/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"]}'200 JSON · { modes , mutedAreas , monthlyReport , productNews }
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"200 JSON · { channels: [Kanal ] } 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 Feld Typ Bedeutung namePflicht Text bis 100 Zeichen channelPflicht Objekt – events[]Pflicht 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…
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"]}'201 angelegt – das neue Objekt
Key mit Rechten „lesen und ändern“
Parameter
Parameter von PATCH /v1/notification-channels/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von PATCH /v1/notification-channels/{id} Feld Typ Bedeutung name Text bis 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…
enabled true/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}'200 JSON
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/notification-channels/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/notification-channels/<id>" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
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 Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X POST "https://portal.kernhosting.com/v1/notification-channels/<id>/test" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
Statusseite Ihre öffentliche Statusseite (`/status/<adresse>`): Dienste und Meldungen.
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"200 JSON
Nur eigene Websites und Spielserver; fremde oder doppelte werden ignoriert.
Key mit Rechten „lesen und ändern“
Body
Body von PUT /v1/status-page Feld Typ Bedeutung slugPflicht Text – titlePflicht Text bis 80 Zeichen description Text bis 300 ZeichenStandard: ""
enabledPflicht true/false – items[]Pflicht Liste (Objekt) bis 50 Einträge items[].kindPflicht Auswahl websitegame
items[].idPflicht Text – items[].name Text bis 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"}]}'200 JSON
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"200 JSON
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 Feld Typ Bedeutung kindPflicht Auswahl infomaintenanceincident
titlePflicht Text bis 120 Zeichen body Text bis 2000 ZeichenStandard: ""
startsAt Zeit (ISO 8601) – endsAt Zeit (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"}'201 angelegt – das neue Objekt
Key mit Rechten „lesen und ändern“
Parameter
Parameter von DELETE /v1/status-page/notices/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl -X DELETE "https://portal.kernhosting.com/v1/status-page/notices/<id>" \
-H "Authorization: Bearer $KH_API_KEY"204 ohne Inhalt
Support Anfragen an den Support – mit dem Dienst, um den es geht (Name und Störungen der letzten 7 Tage stehen gleich dabei).
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"200 JSON · { 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 Feld Typ Bedeutung subjectPflicht Text bis 150 Zeichen bodyPflicht Text bis 10000 Zeichen context Objekt | null – context.kindPflicht Auswahl websitegamedevicezonenetlb
context.idPflicht Text –
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"}}'201 angelegt – das neue Objekt · { id , number , subject , status , context , createdBy , createdAt , updatedAt , messages , thread }
Alle Nachrichten (ohne interne Notizen des Supports).
auch mit Key „nur lesen“
Parameter
Parameter von GET /v1/support/tickets/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Beispiel
curl "https://portal.kernhosting.com/v1/support/tickets/<id>" \
-H "Authorization: Bearer $KH_API_KEY"200 JSON · { id , number , subject , status , context , createdBy , createdAt , updatedAt , messages , thread }
{ "status": "closed" } bzw. "open".
Key mit Rechten „lesen und ändern“
Parameter
Parameter von PATCH /v1/support/tickets/{id} Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von PATCH /v1/support/tickets/{id} Feld Typ Bedeutung statusPflicht Auswahl 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 '{}'200 JSON · { id , number , subject , status , context , createdBy , createdAt , updatedAt , messages , thread }
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 Feld Typ Bedeutung idPflicht Pfad Kennung
Body
Body von POST /v1/support/tickets/{id}/messages Feld Typ Bedeutung bodyPflicht Text bis 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."}'201 angelegt – das neue Objekt · { id , number , subject , status , context , createdBy , createdAt , updatedAt , messages , thread }