Für Entwickler

Hosting, das Sie über Code steuern können

Zinn Digital® ist eine API-First-Plattform. Sie erhalten exakt dieselbe Engine-API, die auch unser Dashboard antreibt – versioniert, spezifikationsbasiert und beim Build zu 100 % dokumentiert, mit generierten SDKs, einer CLI, einem Terraform-Provider, signierten Webhooks und einem MCP-Server obendrauf. Ganz gleich, was Sie für Ihre Arbeit verwenden – ein Terminal, eine Pipeline, eine Statusdatei oder einen KI-Agenten – die Plattform reagiert darauf.

Ein API-Endpunkt, der signierte Ereignisse an mehrere abonnierte Listener übermittelt.
  • 700.000+weltweit gehostete Websites
  • 1OpenAPI-Spezifikation, aus der jedes Tool generiert wird
  • 4Client-SDKs — TypeScript, Python, PHP, Go
  • OAuth 2.1bereichsbezogener, widerrufbarer KI-Agenten-Zugriff

Eine API. Jede Oberfläche baut darauf auf.

Die meisten Hosting-Anbieter flanschen eine API erst nachträglich an ein Control Panel an, und das merkt man — die Hälfte der Funktionen des Panels schafft es nie dorthin. Wir haben es genau umgekehrt aufgebaut. Das Dashboard, die Admin-Konsole, die CLI, der Terraform-Provider, der MCP-Server und Ihre eigenen Integrationen greifen alle auf dieselbe Engine-API zu. Wenn Sie es im Panel tun können, können Sie es auch im Code tun.

Zuerst Spezifikation, nicht nachträglich dokumentiert

Die OpenAPI-Spezifikation ist die maßgebliche Quelle, und kein Endpunkt wird bereitgestellt, sofern er nicht in der Spezifikation enthalten ist. Diese einzige Regel sorgt dafür, dass die öffentliche API bereits während des Builds vollständig dokumentiert wird und nicht erst nachträglich — es gibt keinen undokumentierten Winkel, da ein undokumentierter Endpunkt gar nicht existieren kann.

Generiert, nie manuell gepflegt

Interaktive Referenzdokumente, die vier Client-SDKs, ein Großteil der CLI und das Terraform-Provider-Scaffolding werden alle aus dieser einen Spezifikation generiert. Eine Quelle, viele Artefakte, immer synchron – Sie müssen nie wieder einer Dokumentation hinterherlaufen, die von der Implementierung abgewichen ist.

Versioniert mit einer Deprecation-Richtlinie

Endpunkte befinden sich unter /v1 mit einer veröffentlichten Richtlinie zur Einstellung und einem Änderungsprotokoll. Sie werden vor einer Änderung schriftlich benachrichtigt, anstatt dies erst durch einen fehlschlagenden Build zu erfahren.

Vertraglich getestet in CI

Bei jeder Änderung werden Vertragstests zwischen Implementierung und Spezifikation sowie OpenAPI-Linting ausgeführt. Abweichungen zwischen dem Code und dem Vertrag führen zum Fehlschlagen des Builds — so entspricht die Spezifikation, aus der Sie Ihren Client generieren, genau derjenigen, die der Server tatsächlich einhält.

Authentifizierung, Gültigkeitsbereiche und die Tücken bei der Skalierung

Zwei Zugangswege, dahinter ein einheitliches Prinzip. Welchen Sie auch nutzen, es gelten dieselben Berechtigungsprüfungen und dieselbe Isolation auf Datenbankebene.

API-Schlüssel, pro Organisation

Schlüssel sehen wie zdk_<mode>_<prefix>_<secret> aus. Es wird nur ein SHA-256-Hash des Geheimnisses gespeichert — wir können Ihnen einen Schlüssel nach der Ausstellung nicht mehr anzeigen, und auch niemand, der Zugriff auf unsere Datenbank erhält, kann dies tun. Schlüssel verfügen über Berechtigungsbereiche, können widerrufen werden und werden pro Organisation und nicht pro Person ausgestellt.

Live- und Testmodus, voneinander getrennt

Sandbox-Schlüssel sind von Produktionsschlüsseln getrennt und laufen im Sandbox-Modus: keine echte Abrechnung, keine echte Bereitstellung. Ihre Integrationstests können die API intensiv belasten, ohne Geld auszugeben oder Server aufzubauen.

OIDC für Menschen

Benutzersitzungen authentifizieren sich mit von Keycloak ausgestellten JWTs, die anhand des öffentlichen Schlüssels des Realms überprüft werden, und führen zum selben Principal-Objekt wie ein API-Schlüssel. Endpunkte sind durch granulare Berechtigungsschlüssel wie sites.create oder apikeys.manage geschützt, die pro Organisation überprüft werden – eine Berechtigung in einer Organisation gewährt keinen Zugriff in einer separaten, unabhängigen Organisation, gilt jedoch für die ihr untergeordneten Organisationen.

Sicherheit auf Zeilenebene darunter

Jede Mandantenanfrage wird in einer Transaktion ausgeführt, bei der der Postgres-Organisationsbereich über den Principal festgelegt wird. Somit wird die Isolation durch die Datenbank erzwungen und nicht durch einen ORM-Filter, den jemand vergessen könnte. Der queryset-Filter bleibt als Defense-in-Depth-Maßnahme weiterhin bestehen.

Für Maschinen gebaut, nicht nur für Demos

Es ist leicht, eine API in einer README gut aussehen zu lassen, aber schwer, ihr Verhalten unter echtem Datenverkehr zuverlässig zu gestalten. Genau an diesen Teilen haben wir akribisch gearbeitet, denn es sind die Teile, die Integrationen um drei Uhr morgens zum Scheitern bringen.

Ein Detail verdient besondere Erwähnung, da es das Verhalten von Massenoperationen bestimmt: Ein 409-Fehler bei einer Domänenduplizierung beantwortet für jeden Mandanten die Frage „Wird dieser Hostname hier gehostet?“, was ein Aufzählungs-Orakel und ein echtes Deanonymisierungsrisiko für Footprint-Free darstellt. Die Drosselung der Website-Erstellung wäre die bequeme Lösung gewesen und hätte das Produkt für die Massenbereitstellung vollständig unbrauchbar gemacht. Stattdessen werden nur abgelehnte Versuche mit doppelten Domänen budgetiert, und zwar pro Prinzipal. Erfolgreiche Erstellungen werden niemals darauf angerechnet — Sie können also den ganzen Tag über Massenbereitstellungen durchführen, während Ausspähversuche fast sofort unterbunden werden.

  • Ein einheitlicher Fehler-Envelope bei jedem Fehler: ein Code, eine lesbare Nachricht, optionale Details auf Feldebene und eine request_id, die Sie dem Support mitteilen können. Validierungsfehler geben 422 mit den beanstandeten Feldern zurück.
  • Idempotenzschlüssel bei POST, wobei der Replay-Datensatz beim Commit und nicht inline geschrieben wird – sodass ein erneuter Versuch niemals einen zwischengespeicherten 201-Code wiedergeben kann, der eine Zeile benennt, die nie committet wurde. Eine fehlgeschlagene Anforderung gibt ihre In-Flight-Sperre sofort frei, sodass ein 422-Fehler Ihren korrigierten erneuten Versuch nicht blockiert.
  • Cursor-Paginierung als Keyset über UUIDv7 – stabil bei gleichzeitigen Schreibvorgängen, ohne Seitenverschiebung beim Einfügen von Zeilen während des Suchlaufs.
  • RateLimit-Remaining in Antworten, damit ein generierter Client intelligent drosseln kann, anstatt zu raten.
  • Ressourcen außerhalb des Geltungsbereichs geben 404 statt 403 zurück – ein 403 würde die Existenz der Ressource bestätigen. Das Filtern nach einer Organisation außerhalb Ihres Bereichs gibt aus demselben Grund eine leere Seite zurück.
  • Die Website-Erstellung ist eine Registrierung, keine Bereitstellung: POST /v1/sites gibt 201 mit dem Status pending zurück und blockiert niemals den Build. Das Ereignis wird in derselben Transaktion wie die Zeile in die transactional outbox geschrieben, sodass eine Website genau dann existiert, wenn ihre Bereitstellung garantiert angefordert wird.

SDKs, eine CLI und ein Terraform-Provider

Drei Verwender derselben Spezifikation für drei verschiedene Arbeitsweisen.

Client-SDKs

Generiert für TypeScript, Python, PHP und Go, folgt der Spezifikation, sodass ein neuer Endpunkt in Ihrer Sprache verfügbar ist, ohne auf einen manuell geschriebenen Wrapper warten zu müssen.

Zinnector®, die CLI

Erstellen Sie das Grundgerüst einer WordPress-Website, führen Sie sie lokal aus, ohne etwas anderes als Node installiert zu haben, und stellen Sie sie bereit. Zinnector® prüft Ihr Projekt vorab im Hinblick auf den Slot, auf dem Sie bereitstellen möchten — PHP-Version, Festplattenspeicher, Anzahl der Dateien — und warnt Sie vor dem Übertragen statt erst danach. Es meldet Sie außerdem an, listet Websites auf, stellt bereit, verwaltet Domains sowie DNS, liest Maildienste aus, erstellt Backups, führt zugelassene WP-CLI-Befehle aus, verfolgt Protokolle und stößt Massenoperationen an. Kostenlos, MIT-lizenziert und auf derselben öffentlichen API aufgebaut.

Der Terraform-Provider

Verwalten Sie Websites, Domains, DNS-Einträge, Postfächer und Tarife als Infrastructure as Code. terraform apply stellt das Hosting bereit, und Ihre Umgebungen werden reproduzierbar und überprüfbar – anstelle einer Abfolge von Klicks, die niemand dokumentiert hat.

Interaktive Referenz

Generierte Dokumentation, die Sie direkt im Browser lesen und aufrufen können und die genau die vom Server implementierten Endpunkte beschreibt — da beide aus derselben Spezifikation stammen.

Webhooks, die den Ausfall Ihres Endpunkts überstehen

Hinter der Plattform steht ein stabiles Event-Rückgrat: Jede Statusänderung schreibt atomar mit der Datenbankänderung ein Ereignis in eine transaktionale Outbox in Postgres, und ein Relay veröffentlicht es an NATS JetStream. Ereignisse sind typisiert und versioniert – site.deployed, order.paid, invoice.overdue, backup.completed, abuse.flagged, trial.ending und die übrigen.

Abonnieren Sie, was Ihnen wichtig ist

Registrieren Sie einen Endpunkt als WebhookSubscription und wählen Sie die Ereignistypen aus, die er empfangen soll. Ein einziger Stream versorgt Benachrichtigungen, Analysen, Automatisierungen und Ihre Integration gleichermaßen — Sie nutzen dieselben Ereignisse wie wir.

Mit HMAC signiert

Jede Übermittlung ist HMAC-signiert, sodass Sie vor einer Reaktion überprüfen können, ob sie von uns stammt.

Mit Backoff erneut versucht und protokolliert

Fehlgeschlagene Zustellungen werden mit Backoff wiederholt, und jeder Versuch wird als WebhookDelivery protokolliert. Sie können Zustellungen direkt im Dashboard überprüfen und wiederholen, anstatt den Support per E-Mail zu fragen, was gesendet wurde.

Mindestens einmal, daher Duplikate anhand der id entfernen

Die Pipeline arbeitet bewusst nach dem Prinzip „mindestens einmal“, anstatt vorzugeben, „genau einmal“ zu liefern. Fällt ein Relay mitten im Veröffentlichungsvorgang aus, läuft sein Anspruchslease ab und seine Ereignisse werden erneut veröffentlicht. Deduplizieren Sie anhand der Umschlag-ID, und Ihr Consumer ist konstruktionsbedingt korrekt.

Code auf die Website übertragen

Eine API ist nur die halbe Entwicklergeschichte. Die andere Hälfte ist die Bereitstellung.

  • Verbinden Sie GitHub, GitLab oder Bitbucket über OAuth, wobei Bereitstellungsschlüssel im Anmeldeinformationsspeicher gespeichert werden – nicht in einer Konfigurationsdatei.
  • Push löst eine Build-and-Deploy-Pipeline aus, mit Branch-zu-Umgebung-Zuordnung (main zu production, staging zu staging) und stack-spezifischen Build-Schritten für composer und npm.
  • Setzen Sie auf eine vorherige Version zurück, wenn bei einer Bereitstellung ein Fehler auftritt.
  • Staging-Klon und Push-to-Live, damit eine Änderung an einem realistischen Ort getestet wird, bevor sie Besucher erreicht.
  • SFTP pro Website unter CageFS-Isolation, sodass jeder Mandant nur seine eigenen Dateien sieht, sowie eine isolierte (jailed) SSH-Shell auf der gemeinsam genutzten Plattform.
  • wp-cli über das Panel-Terminal und über SSH.
  • VS Code im Browser über code-server – ein vollwertiger Editor mit git zur direkten Bearbeitung der Dateien Ihrer Website.
  • PHP-Version pro Website, bearbeitbare PHP-Einstellungen, Erweiterungen pro Website, Umgebungsvariablen und echter Cronjob neben WP-Cron.

Vier Möglichkeiten, an einer Website zu arbeiten

Die API ist eine Tür. Dies sind die anderen vier, und jede davon ist im Tarif enthalten, anstatt als Entwickler-Stufe verkauft zu werden.

Der Web-Editor

VS Code im Browser, geöffnet über die Seite der Website im Dashboard, bearbeitet die echten Dateien dieser Website mit integriertem git und dem gesamten Editor im selben CageFS-Jail wie Ihr SFTP-Zugang. Es bearbeitet die LIVE-Website — es gibt keine Staging-Kopie dazwischen, sodass eine von Ihnen gespeicherte Datei in dem Moment öffentlich ist, in dem sie geschrieben wird, obwohl eine statische Datei noch bis zu vier Stunden lang aus dem CDN-Cache bereitgestellt werden kann.

Zinnector®, die CLI

Kostenlos, unter MIT-Lizenz und auf derselben öffentlichen API aufgebaut. Erstellen Sie das Grundgerüst einer WordPress-Website, führen Sie sie auf Ihrem eigenen Computer aus, führen Sie eine Vorabprüfung gegen den Slot durch, auf den Sie bereitstellen möchten — PHP-Version, Festplatte, Dateianzahl — und stellen Sie bereit. Erfordert Node 24 oder neuer.

Der MCP-Server

Ein einziger Werkzeugkatalog, damit der KI-Client, den Sie bereits nutzen, über dieselbe API und dieselben Berechtigungen wie das Dashboard auf Ihren Websites arbeiten kann. Derselbe Server, mit dem sich Ihr eigener Client verbindet, ist auch mit dem Web-Editor verknüpft. Schreibgeschützt, bis Sie etwas anderes festlegen.

Entwicklerzugriff pro Website

Für Kundenprojekte wird Ihr Passwort nicht benötigt. Laden Sie jemanden per E-Mail-Adresse ein und die Person erhält genau eine Website: Die Anmeldung erfolgt unter eigener Identität mit der Rolle „Betrachter“, „Editor“ oder „Manager“, und jede andere Website antwortet mit 404, noch bevor ein Handler ausgeführt wird – eine Postgres-Sicherheitsrichtlinie auf Zeilenebene und eine Barriere auf Anfrageebene, nicht nur eine einzelne Überprüfung. Der Kontoinhaber erteilt und widerruft die Berechtigung mit einem einzigen Klick, wirksam mit der nächsten Anfrage.

Und dieselbe API, die Ihr KI-Agent nutzen kann

Wir stellen die Plattform als gehosteten MCP-Server bereit: ein schlanker Protokolladapter über der Engine-API, der denselben Aktionskatalog, dieselbe RBAC und denselben Audit-Trail wiederverwendet. Verbinden Sie Claude Code, Cursor, ChatGPT, Claude Desktop oder einen beliebigen MCP-fähigen Client einmal, und jede Funktion, die wir der API hinzufügen, steht ihm automatisch zur Verfügung.

Der Agent erhält drei Dinge: Tools (dieselben API-Endpunkte, keine parallele Logik, die abweichen könnte), Ressourcen (schreibgeschützter Website-Zustand, Konfiguration, aktuelle Protokolle, Metriken, Betriebszeit und Wissensdatenbank-Artikel, damit er vor dem Handeln mit echten Daten diagnostizieren kann) und Prompts (veröffentlichte Workflow-Vorlagen wie „diese Website diagnostizieren“ oder „eine Migration vorbereiten“).

Die Sicherheit folgt demselben Prinzip wie die Authentifizierung: OAuth 2.1, an Ihre Organisation gebundene Tokens und RBAC-Berechtigungen mit durchgesetzter Sicherheit auf Zeilenebene, pro Werkzeug eingegrenzt und widerrufbar, Sandbox von der Produktionsumgebung getrennt. Destruktive Aktionen — Löschen, Sperren, Abrechnung, hohe Ausgaben — erfordern eine ausdrückliche Bestätigung oder eine Richtlinie zur menschlichen Genehmigung. Ratenbegrenzungen und Ausgabenobergrenzen beschränken KI-ausgelöste kostenpflichtige Aktionen, und jeder MCP-Aufruf wird mit Identität, Werkzeug, Argumenten und Ergebnis im Audit-Protokoll erfasst.

Wir unterstützen das Protokoll, anstatt jede Anwendung einzeln zu integrieren. Das bedeutet, dass sich Ihre Auswahl an KI-Tools ändern kann, ohne dass sich Ihre Hosting-Integration mit ihr ändert.

Häufig gestellte Fragen

Ist die öffentliche API dieselbe, die auch das Dashboard verwendet?

Ja — es ist dieselbe Engine-API, veröffentlicht und gehärtet. Das Dashboard, die Verwaltungskonsole, die CLI, der Terraform-Provider, der MCP-Server und Webhooks sind allesamt Konsumenten einer einzigen Oberfläche, weshalb die API dem Panel nicht hinterherhinkt.

Kann ich eine Integration testen, ohne Geld auszugeben oder echte Server aufzubauen?

Ja. Sandbox-Schlüssel werden getrennt von Produktionsschlüsseln ausgestellt und laufen im Testmodus: keine echte Abrechnung und keine echte Bereitstellung. Richten Sie Ihre CI auf Sandbox-Anmeldedaten aus und testen Sie den vollständigen Anfrage- und Antwortzyklus sicher.

Wie verhindere ich, dass durch einen erneuten Versuch ein Element doppelt erstellt wird?

Senden Sie einen Idempotency-Key bei Ihrem POST. Der Wiederholungseintrag wird beim Commit und nicht inline geschrieben, sodass ein erneuter Versuch niemals einen zwischengespeicherten Erfolg für eine Zeile wiederholen kann, die nicht tatsächlich committet wurde, und eine fehlgeschlagene Anforderung ihre Sperre sofort freigibt, damit Ihr korrigierter erneuter Versuch nicht aufgehalten wird. Die Webhook-Zustellung erfolgt konstruktionsbedingt mindestens einmal (at-least-once) – führen Sie die Deduplizierung anhand der envelope id auf Ihrer Seite durch.

Kann ich einem API-Schlüssel Zugriff auf alle meine Kundenorganisationen gewähren?

Heute nicht. API-Schlüssel werden pro Organisation ausgestellt, sodass eine Integration, die mehrere Kundenorganisationen umfasst, für jede einen Schlüssel besitzt. Auch Berechtigungen werden für Benutzer-Principals pro Organisation geprüft: Der Besitz von sites.create in einer Organisation gewährt keinen Zugriff in einer separaten, unabhängigen Organisation, gilt jedoch für die darunter verschachtelten Organisationen. Das ist beabsichtigt — so wird ein kompromittierter Schlüssel auf seine eigene Organisation und die darunter liegenden Unterorganisationen beschränkt und nicht auf die gesamte Plattform.

Was erlaubt die integrierte Entwickler-Rolle eigentlich?

Die Rolle dev umfasst das Lesen von Organisationsdaten, die Verwaltung von API-Schlüsseln, das Anzeigen und Erstellen von Websites, deren Neustart, das Leeren ihres Caches sowie das Anzeigen und Beantworten von Tickets. Die Abrechnungskontrolle ist bewusst ausgeschlossen. Bitte beachten Sie, dass Berechtigungen für Deployments und Push-to-Live nicht enthalten sind – falls ein Teammitglied diese benötigt, weisen Sie ihm eine Rolle zu, die diese Berechtigungen beinhaltet, anstatt davon auszugehen, dass Developer die umfassendste technische Rolle ist.

Was passiert mit meinen Webhooks, wenn mein Endpunkt für eine Stunde ausfällt?

Zustellungen werden mit Backoff wiederholt und jeder Versuch wird als WebhookDelivery protokolliert, die Sie überprüfen können. Upstream werden Ereignisse in derselben Datenbanktransaktion wie die Änderung selbst in eine transaktionale Outbox geschrieben, sodass nichts verloren geht, während ein Consumer nicht verfügbar ist – ein ausgefallener Consumer gerät in Verzug, unterbricht jedoch niemals den Producer, und Sie können Zustellungen über das Dashboard wiederholen, sobald Sie wieder da sind.

Wie viel kostet es, mit der Entwicklung darauf zu beginnen?

Starte eine kartenfreie 14-tägige Testversion von Footprint-Free Hosting – keine Zahlungsdaten, bis zu 5 Websites. Kostenpflichtige Footprint-Free Tarife beginnen bei 6 $/Monat für PBN 5. Jeder Tarif beinhaltet eine 30-Tage-Geld-zurück-Garantie, kostenlose Migrationen und keine Anbieterbindung.

Lesen Sie die Spezifikation und entwickeln Sie anschließend danach

Spec-First-API, generierte SDKs, eine CLI, ein Terraform-Provider, signierte Webhooks und ein MCP-Server – auf dem Hosting, das wir für mehr als 700.000 Websites weltweit aufgebaut haben. Starten Sie mit einer 14-tägigen Testversion ohne Karte und ohne Zahlungsdaten.

Kostenlos starten

WordPress-Plugins, mit denen Ihr KI-Agent arbeiten kann

Jedes dieser Plugins macht Ihre WordPress-Site zu einem MCP-Server, sodass Claude, Cursor, VS Code und andere KI-Assistenten echte Arbeit daran verrichten können, angemeldet als Sie und beschränkt auf das, was Sie tun dürfen.

Alle MCP- und API-Dokumente für Entwickler →