Widget für Ihre Seite
Wenn Sie die API lieber nicht aus dem Backend aufrufen möchten — fügen Sie ein einziges <script> ein, und das Datei-Eingabefeld startet die Moderation von selbst aus dem Browser des Nutzers.
1. Widget-Schlüssel anlegen und Domains eintragen
Im Dashboard → Widget für Ihre Seite → Neuer Widget-Schlüssel (pk_live_…). Tragen Sie die Domains ein, auf denen das Widget laufen soll — es funktioniert nur von diesen Domains aus (wir prüfen den Origin-Header).
2. Snippet einfügen
<script src="https://modwall.dev/widget.js" data-site-key="pk_live_..."></script> <input type="file" data-modwall>
Ein Feld mit data-modwall sendet die ausgewählte Datei von selbst und löst ein Ereignis mit dem Ergebnis aus:
document.addEventListener("modwall:result", function (e) {
console.log(e.detail); // { scores, decision, threshold, _status }
if (e.detail.decision === "block") {
// np. zablokuj wysyłkę formularza
}
});
JavaScript-API
Das globale Objekt Modwall:
const res = await Modwall.moderate(fileInput.files[0]);
// res = { scores: {nsfw, safe}, decision, threshold, _status }
if (res.decision !== "allow") {
alert("Obraz nie przeszedł moderacji.");
}
Sicherheit
Der Schlüssel pk_live_ ist öffentlich (im Quelltext der Seite sichtbar). Wir schützen ihn mit einer Domain-Allowlist — eine Anfrage von einer anderen Domain erhält 403. Das ist Schutz „auf Browser-Ebene": Er verhindert die Nutzung von fremden Seiten aus, aber ein entschlossener Angreifer, der die Anfrage außerhalb des Browsers stellt (etwa curl mit gefälschtem Origin), umgeht ihn.
Kritische Entscheidungen setzen Sie deshalb serverseitig durch — über die sk_live_-API. Das Widget dient der UX (schnelles Feedback beim Upload), die Server-API ist das Rückgrat der Compliance.
Endpunkt (unter der Haube)
/widget/moderateBody multipart/form-data: site_key + image (optional reference, image_url). Liefert CORS-Header für die zugelassenen Domains. Die Antwort entspricht /v1/moderate.