Mit der API von WisyLink erstellen und ändern Sie gehostete Websites per Code. Sie laden Referenzdateien hoch, schicken eine Nachricht in Alltagssprache an POST /chat, und der Agent baut und hostet eine Website unter einer eigenen wisylink.com-Adresse. Eine weitere Nachricht mit derselben Link-ID ändert sie. Die API-Nutzung teilt sich das 5-Stunden- und Wochenkontingent Ihres Tarifs.
- Eine Handvoll REST-Endpunkte deckt den gesamten Lebenszyklus ab: Dateien hochladen, mit
POST /chateine Website erstellen oder fortsetzen, ihren Status abfragen, Websites auflisten und löschen. POST /chatspricht mit Wisy, demselben Assistenten wie in der App. Die Antwort kann also eine Rückfrage statt eines Builds sein. Prüfen Siestatus, bevor Sie mit dem Polling beginnen.- API-Schlüssel werden im Web erstellt, und jeder hat zusätzlich zu den Fenstern Ihres Tarifs ein eigenes Ausgabenlimit von bis zu 10 $ pro Tag, Woche oder Monat.
- Das npm-Paket
@wisylink/cliverpackt dieselben Endpunkte in ein Kommandozeilen-Tool und einen Node-Client. - Eigene Domains und Dienst-Schlüssel (Stripe, E-Mail) richten Sie in der Web- oder Mobil-App ein; die öffentliche API deckt sie nicht ab.
Was Sie automatisieren können
Die API ist der Chat ohne Chatfenster. Jeder Aufruf von POST /chat ist eine Nachricht an Wisy. Ist die Anfrage klar, schreibt ein KI-Build-Agent eine serverseitig gerenderte Web-App und stellt sie unter https://<id>.wisylink.com bereit, mit gespeicherten Daten, Konten oder Datei-Uploads, wenn das Briefing sie verlangt. Parameter für Vorlagen, Themes oder Seitentypen gibt es nicht. Alles an der Website, von Abschnitten und Texten bis zu Funktionen und Stil, steht in der Nachricht, so wie ein Mensch es beschreiben würde. (Die Grundlagen dazu erklärt der Beitrag Was ist ein KI-App-Builder?.)
Die Basis-URL ist https://api.wisylink.com. Sie authentifizieren sich mit dem Header x-api-key: <key> oder mit Authorization: Bearer <key>. JSON-Endpunkte erwarten Content-Type: application/json, Zeitstempel sind Epoch-Millisekunden.
| Endpunkt | Methode | Zweck | Wichtige Felder |
|---|---|---|---|
/files | POST | Datei-Upload starten | Eingabe name, Rückgabe id |
/files/chunks | POST | Die Bytes der Datei hochladen, höchstens 4 MB pro Anfrage | id und beim letzten Teilstück last=true; Body als rohe Binärdaten |
/files/:id | GET | Metadaten einer Datei lesen | content_type, name, size |
/files/:id | DELETE | Datei löschen | Wird auch aus den file_ids aller Links entfernt |
/chat | POST | Website erstellen (ohne id) oder fortsetzen (mit id) | message, bis zu 10 file_ids; liefert id, url, status, answer |
/links | GET | Ihre Websites auflisten, neueste zuerst | page, limit (1 bis 100); items, total_pages, has_next |
/links/:id | GET | Eine Website lesen | status, url, file_ids |
/links/:id | DELETE | Website samt Referenzdateien löschen | Liefert {"ok": true} |
Was die öffentliche API nicht kann: die Schlüssel setzen, die eine Website für Zahlungen oder E-Mail braucht (die trägt der Inhaber unter Integrationen ein), eine eigene Domain zuweisen, die gespeicherten Daten einer Website lesen oder schreiben oder Quellcode exportieren.
API-Schlüssel erstellen und Ausgabenlimit setzen
- Melden Sie sich auf wisylink.com an. Schlüssel werden nur im Web erstellt, nicht in den Mobil-Apps.
- Öffnen Sie API-Schlüssel in Ihren Kontoeinstellungen und wählen Sie Schlüssel generieren.
- Benennen Sie ihn nach seinem Einsatzort, etwa „acme-landingpages-ci“, damit Sie wissen, was beim Widerrufen ausfällt.
- Fenster und Limit festlegen. Wählen Sie täglich, wöchentlich oder monatlich und ein Ausgabenlimit in USD, höchstens 10 $ pro Fenster. Die Fenster folgen einem UTC-Tag, einer Woche ab Montag oder einem Monat.
- Kopieren Sie den Schlüssel sofort. Er wird nur einmal angezeigt. Legen Sie ihn in Ihrem Secret-Manager oder in den CI-Secrets ab, zum Beispiel als
WISYLINK_API_KEY.
Das Limit ist eine Sicherheitsbremse, nicht Ihr Tarif. Jede Anfrage zehrt zusätzlich vom rollierenden 5-Stunden- und Wochenfenster Ihres Kontos, denselben, die auch der Chat im Web und in den Mobil-Apps nutzt. Gemessen wird die KI-Arbeit, die eine Anfrage auslöst, einschließlich des Lesens Ihrer Referenzdateien. Das Limit wird vor jeder Anfrage geprüft und die Ausgabe danach verbucht; die letzte Anfrage in einem Fenster kann es also leicht überschreiten. Ein widerrufener Schlüssel wird sofort gelöscht, und alles, was ihn noch nutzt, erhält 401.
Können Sie die API im kostenlosen Tarif nutzen? Ja. In Community gelten dieselben Regeln wie in der App: ein Build pro 5-Stunden-Fenster, und Websites bleiben 30 Tage online plus eine Woche, in der sie zur Löschung markiert sind. Das reicht, um eine Integration zu prototypen. Für Kundenprojekte oder Stapelverarbeitung bietet ein kostenpflichtiger Tarif mehr Kontingent, parallele Builds und Links, die online bleiben, solange Ihr Abo läuft.
Referenzdateien hochladen: Upload in Teilstücken
Referenzdateien sind alles, was der Agent lesen oder auf der Website verwenden soll: ein Markenleitfaden, ein Logo, Produktfotos, eine Preisliste. Unterstützt werden JPEG, PNG, WebP, GIF, HEIC, SVG, MP3, MP4, PDF, XLSX, DOCX, CSV, TXT, JSON und HTML mit jeweils bis zu 25 MB. Der tatsächliche Typ wird anhand der Bytes erkannt, leere Dateien werden abgelehnt.
Der Upload braucht zwei Aufrufe. Legen Sie zuerst die Datei an und merken Sie sich die zurückgegebene id:
curl -s -X POST https://api.wisylink.com/files -H "x-api-key: $WISYLINK_API_KEY" -H "Content-Type: application/json" -d '{"name":"markenleitfaden.pdf"}'
Senden Sie dann die Bytes. Eine Datei bis 4 MB passt mit last=true in eine einzige Anfrage:
curl -s -X POST "https://api.wisylink.com/files/chunks?id=$FILE_ID&last=true" -H "x-api-key: $WISYLINK_API_KEY" -H "Content-Type: application/octet-stream" --data-binary @markenleitfaden.pdf
Größere Dateien teilen Sie auf (split -b 4m markenleitfaden.pdf part_), senden die Teile der Reihe nach an dieselbe id und setzen last=true nur beim letzten Teil; dieser Aufruf schließt die Datei ab und verarbeitet sie. Ein Upload muss innerhalb von 15 Minuten fertig sein, sonst läuft die Sitzung ab. In Node übernimmt der weiter unten beschriebene Client das Aufteilen für Sie.
Website mit POST /chat erstellen und auf die Live-URL warten
Das Briefing senden
Lassen Sie id weg, um eine neue Website zu starten. Die Nachricht darf bis zu 5.000 Zeichen lang sein; das reicht für ein ordentliches Briefing mit Zweck, Zielgruppe, Abschnitten, echten Texten, Funktionen, Stil und Sprache. Schließen Sie mit „Triff für alles, was ich nicht festgelegt habe, sinnvolle Standardentscheidungen“, dann startet der erste Aufruf eher direkt einen Build. Ersetzen Sie FILE_ID durch die ID aus Ihrem Upload.
curl -s -X POST https://api.wisylink.com/chat -H "x-api-key: $WISYLINK_API_KEY" -H "Content-Type: application/json" -d '{"message":"Baue eine einseitige Landingpage für Ember, eine Spezialitätenrösterei in Leipzig. Abschnitte: Hero, drei Single-Origin-Kaffees mit Preisen, Anfrageformular für Gastronomiekunden, das in einem Admin-Bereich gespeichert wird, Öffnungszeiten, Link zur Karte. Nutze den angehängten Markenleitfaden für Farben und Schriften. Triff für alles, was ich nicht festgelegt habe, sinnvolle Standardentscheidungen.","file_ids":["FILE_ID"]}'
Derselbe Aufruf aus Node mit fetch:
const res = await fetch("https://api.wisylink.com/chat", { method: "POST", headers: { "x-api-key": process.env.WISYLINK_API_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ message: brief, file_ids: [fileId] }) }); let link = await res.json();
Eine neue Website antwortet mit 201 und liefert id, url, status, answer, created_at und updated_at. Speichern Sie die id: Über sie ändern, lesen oder löschen Sie die Website später. Behandeln Sie sie als opake Zeichenkette und validieren Sie ihr Format nicht.
Erst den Status lesen, dann abfragen
Der status in der Antwort von POST /chat verrät, ob tatsächlich ein Build gestartet ist:
buildingoderqueued- Ein Build läuft oder wartet auf einen freien Platz (
queuedsteht noch nicht in der Liste der Referenz, kommt aber vor). Beginnen Sie mit dem Polling. Bei einer neuen Website zeigt dieurleine „Wird gebaut“-Seite, bis der erste Build fertig ist. idlebei einer neuen Website- Es wurde kein Build gestartet. Wisy hat stattdessen geantwortet, und
answerenthält meist eine kurze Rückfrage, etwa welcher Zahlungsanbieter genutzt werden soll. Antworten Sie mit einem weiterenPOST /chatmit derselbenid. completedoderaborteddirekt nach einer Folgenachricht- Bei einer bestehenden Website zeigt der Status das Ergebnis des letzten Builds. Wechselt er nicht zu
building, hat Ihre Nachricht eine Antwort erhalten, keinen Build; lesen Sieanswer.
Abfragen, bis der Build abgeschlossen ist
Webhooks gibt es nicht, fragen Sie also GET /links/:id ab. Builds dauern Minuten, nicht Sekunden; alle 15 bis 30 Sekunden genügt völlig. Behandeln Sie jeden Status außer completed, aborted oder idle als „läuft noch“. So bleibt Ihre Schleife robust, falls ein neuer Zwischenstatus hinzukommt:
const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); while (!["completed", "aborted", "idle"].includes(link.status)) { await sleep(20000); link = await (await fetch(`https://api.wisylink.com/links/${link.id}`, { headers: { "x-api-key": process.env.WISYLINK_API_KEY } })).json(); }
Steht status auf completed, ist url Ihre Live-Website. aborted heißt, der Build wurde vor dem Ende abgebrochen; eine bereits laufende Website behält ihre vorherige Version, und eine neue Nachricht startet einen neuen Versuch. Bekommt die Website später eine eigene Domain, liefert url stattdessen diese Domain. Den vollständigen Build-Bericht, einschließlich eines Hinweises, dass die Website noch auf Stripe- oder E-Mail-Schlüssel wartet, finden Sie im Chat dieses Links in der Web-App.
Links fortsetzen, auflisten und löschen
Um eine Website zu ändern, senden Sie nur die neue Anweisung mit ihrer id anstelle von LINK_ID. Der Server kennt den bisherigen Gesprächsverlauf, und eine fortgesetzte Website antwortet mit 200:
curl -s -X POST https://api.wisylink.com/chat -H "x-api-key: $WISYLINK_API_KEY" -H "Content-Type: application/json" -d '{"id":"LINK_ID","message":"Füge einen zweiten Standort hinzu: Karl-Liebknecht-Straße 41, täglich von 7 bis 15 Uhr geöffnet."}'
Fragen Sie danach genauso ab. Jede Änderung ist ein neuer Build: Ein fehlgeschlagener lässt die letzte funktionierende Version online, ein erfolgreicher ist live, sobald er fertig ist. Führen Sie Ihre Prüfungen also nach jeder Änderung aus. Warten Sie, bis ein Build abgeschlossen ist, bevor Sie die nächste Änderung schicken, es sei denn, die neue Nachricht korrigiert den laufenden Build.
Zum Auflisten blättern Sie durch GET /links?page=1&limit=100, bis has_next false ist. Zum Entfernen löscht DELETE /links/:id die Website und die angehängten Referenzdateien. Eine eigene Domain, die sie genutzt hat, bleibt in Ihrem Konto und steht für eine andere Website bereit.
Die CLI und der Node-Client
Das Paket @wisylink/cli (MIT-Lizenz, Node 18.17 oder neuer) bildet die Befehle eins zu eins auf die Endpunkte oben ab. Damit skripten Sie WisyLink am schnellsten aus einer Shell oder einem CI-Job:
npm i -g @wisylink/cli, dannexport WISYLINK_API_KEY=...oder--api-keybei jedem Befehl übergeben.wisylink files upload ./markenleitfaden.pdflädt automatisch in Teilstücken zu 4 MB hoch.wisylink chat --message "Baue eine Landingpage für Ember Coffee." --file-id FILE_IDerstellt eine Website.wisylink links list --page 1 --limit 50listet Ihre Websites auf.
Die Befehle geben JSON aus, sodass jq die id oder url herausziehen kann. --timeout akzeptiert 1.000 bis 120.000 Millisekunden; erhöhen Sie den Wert für chat, das auf Wisys Antwort wartet.
Dasselbe Paket exportiert einen Node-Client: import { CreateWisyLinkClient } from "@wisylink/cli"; const client = CreateWisyLinkClient({ apiKey: process.env.WISYLINK_API_KEY }); const file = await client.uploadFile("./markenleitfaden.pdf"); const link = await client.chat({ message: brief, fileIds: [file.id] });
Zwei Hinweise zur Version, Stand npm-Release 0.2.1. Erstens prüfen Befehle und Client-Methoden, die eine Link-ID erwarten (chat --link-id, links get, links delete sowie linkId, getLink, deleteLink in Node), Link-IDs gegen ein älteres Format und lehnen aktuelle ab. Setzen Sie Websites deshalb wie oben gezeigt per HTTP fort, lesen und löschen Sie sie ebenso. Zweitens beschreibt die CLI-Dokumentation (auf Englisch) bereits ein neueres Release mit Browser-Login (wisylink login), einem interaktiven Chat mit Live-Build-Fortschritt und einem --json-Flag; mit wisylink --version sehen Sie, welche Version Sie haben.
Limits, Fehler und bewährte Praxis
Fehler kommen als JSON mit einem error-Code zurück. Diese sollten Sie gezielt behandeln:
429 limit_reached- Das 5-Stunden- oder Wochenfenster Ihres Tarifs ist ausgeschöpft (
reasonist5h_limitoderweekly_limit). Planen Sie den nächsten Versuch fürreset_at(Epoch-Millisekunden) ein, statt in einer Schleife zu wiederholen. 429 credit_limit_exceeded- Dieser Schlüssel hat sein eigenes Ausgabenlimit erreicht. Das kann bei jedem Endpunkt passieren; warten Sie bis
resets_atoder erhöhen Sie das Limit (bis 10 $) im Web. 429 build_concurrency_limit- Für Ihren Tarif laufen zu viele Builds gleichzeitig. Warten Sie, bis einer abgeschlossen ist, und senden Sie dann den nächsten.
429 rate_limited- Zu viele Anfragen in kurzer Zeit. Pausieren Sie und versuchen Sie es erneut.
400 bad_request- Ungültiges JSON, eine leere oder über 5.000 Zeichen lange Nachricht oder nicht existierende Datei-IDs (aufgeführt in
missing_file_ids). Beachten Sie: Nur die ersten 10file_idswerden verwendet, weitere werden ohne Fehlermeldung verworfen. 401,404,500 chat_unavailable- Ein fehlender oder widerrufener Schlüssel; ein Link oder eine Datei, die nicht Ihnen gehört; Wisy ist kurz nicht erreichbar, ein erneuter Versuch nach einer Pause lohnt sich.
Gewohnheiten, die Geld und Verwirrung sparen:
- Schlüssel bleiben auf dem Server. Liefern Sie nie einen Schlüssel in Browser- oder App-Code aus. Nutzen Sie einen Schlüssel pro Kunde oder Pipeline, damit jeder sein eigenes Limit hat und einzeln widerrufen werden kann.
POST /chatnicht blind wiederholen. Der Aufruf ist nicht idempotent: Eine Anfrage, die bei Ihnen in ein Timeout lief, hat womöglich trotzdem eine Website angelegt oder einen Build gestartet. Prüfen SieGET /links(neueste zuerst), bevor Sie erneut senden, und geben Sie dem Aufruf ein clientseitiges Timeout von einer Minute oder mehr.- Stapelaufträge einreihen. Starten Sie so viele Builds gleichzeitig, wie Ihr Tarif erlaubt, und verstehen Sie
build_concurrency_limitals Signal zum Warten. - Vor der Auslieferung prüfen. KI-Ergebnisse können Fehler enthalten. Öffnen Sie jede Website, testen Sie ihre Formulare und lesen Sie die Texte, bevor Kunden oder die Öffentlichkeit sie sehen; laut den Nutzungsbedingungen von WisyLink liegt das Prüfen und Testen bei Ihnen.
Anwendungsfälle: Agentur-Landingpages, Event-Microsites, interne Tools
Landingpages für Agenturen. Pflegen Sie eine Briefing-Vorlage mit Platzhaltern für Kundenname, Angebot, Abschnitte und Tonalität, füllen Sie sie aus Ihrem CRM und hängen Sie Logo und Markenleitfaden des Kunden als Dateien an. Jede Kampagne wird zu einer eigenen Website, Kundenfeedback zu Folgenachrichten, und ein Schlüssel pro Kunde hält die Ausgaben getrennt. Ist die Seite abgenommen, verbinden Sie unter Domänen die Domain des Kunden. Ein durchgespieltes Beispiel für die Seite selbst finden Sie in der Anleitung zur Wartelisten-Landingpage mit KI.
Microsites pro Veranstaltung. Eine Zeile pro Veranstaltung in einer Tabelle (Name, Datum, Ort, Kapazität) wird zu je einer Anmeldeseite, erstellt von einem Skript, das jede zurückgegebene id neben ihrer Zeile ablegt. Die Anleitung zur Eventanmeldung mit KI zeigt, was in jedes Briefing gehört. Nach der Veranstaltung löschen Sie die Website oder behalten sie in einem kostenpflichtigen Tarif als Archiv.
Interne Automatisierungen. Ein Skript kann die erste Version eines internen Tools erzeugen, etwa einer Bestandsübersicht oder eines Freigabe-Boards. Bauen Sie aber nicht neu, nur um Daten zu aktualisieren: Bitten Sie Wisy um einen Endpunkt, an den Ihre Systeme Datensätze senden können, geschützt durch ein Geheimnis, das Sie unter Integrationen hinterlegen. So geschriebene Datensätze erreichen Besucher nach etwa einer Minute, ohne einen Build zu verbrauchen. Mehr zu diesem Muster lesen Sie unter interne Tools mit KI bauen.
Schlüssel holen und die erste Website per Code bauen
Legen Sie ein kostenloses Konto an, generieren Sie einen API-Schlüssel mit niedrigem Limit und senden Sie Ihr erstes Briefing mit dem curl-Aufruf von oben. Halten Sie für Details zu den Feldern die API-Referenz (auf Englisch) offen. Wird aus dem Prototyp eine Produktivintegration, wählen Sie im Preisbereich einen Tarif mit dem Build-Kontingent und den parallelen Builds, die Ihr Volumen braucht.
F.A.Q.
