SPAMADIN / ENTWICKLER

Ein klarer Weg von der
Nachricht zur Entscheidung.

Verbinde dein Backend mit Spamadin. Bewahre deinen API-Schlüssel auf dem Server auf. Speichere Nachrichten im eigenen System, bevor du eine Klassifizierung anfragst.

Mit deinem Programmierassistenten entwickeln

Gib deinem Assistenten unsere Integrationsreferenz und OpenAPI-Spezifikation, um deine Website auf dem Server anzubinden.

Integrationsreferenz · OpenAPI-Spezifikation · Dokumentationsindex für KI

WordPress-Plugin

Installiere Spamadin in WordPress und füge deinen Konto-API-Schlüssel unter Einstellungen → Spamadin ein. Verwende denselben Schlüssel auf allen Websites deines Tarifs. Die Verbindung fügt die Website innerhalb des Limits automatisch hinzu und speichert den Schlüssel sicher auf deinem WordPress-Server.

WordPress-Plugin herunterladen

Kommentare und unterstützte Kontaktformulare werden standardmäßig geschützt. Unterstützt werden Contact Form 7, WPForms, Gravity Forms, Fluent Forms und Elementor Pro. Schutz und optionale Browsersignale kannst du in den Plugin-Einstellungen ändern.

Spamkommentare bleiben in der Spamwarteschlange von WordPress; unsichere oder nicht verfügbare Prüfungen gehen in die Moderation. Zurückgehaltene Formularnachrichten bleiben bis zu 30 Tage privat unter Einstellungen → Spamadin. Prüfe sie dort und kontaktiere legitime Absender direkt; Formularaktionen werden nicht erneut ausgeführt. Korrekturen übermitteln nur Prüfreferenz und Einstufung, niemals den Nachrichtentext.

Das Trennen des Plugins stoppt lokale Prüfungen. Blockiere die Website in Spamadin, um ihre API-Anfragen zu stoppen und ihren Platz freizugeben. Eine erneute Verbindung hebt die Sperre nicht auf. Nach einem Schlüsselwechsel müssen alle Integrationen aktualisiert werden.

1. Konto und Schlüssel erstellen

Bestätige deine E-Mail, wähle ein Abo im Dashboard, und erstelle einen Konto-API-Schlüssel. Verwende ihn auf allen Websites. Jeder zugelassene Hostname belegt einen Platz; example.com und www.example.com zählen getrennt. Schlüssel werden einmal angezeigt und mit Argon2id gespeichert.

Dein Spamadin-Schlüssel authentifiziert Anfragen an diesen Dienst und ist von unseren internen KI-Zugangsdaten getrennt. Klassifizierung ist im Abo enthalten; du brauchst weder OpenRouter-Konto noch -Schlüssel.

2. Nachricht prüfen

Beschreiben Sie Ihre Website beim Verbinden. Spamadin kategorisiert sie mit KI und berücksichtigt diesen Kontext bei künftigen Prüfungen. Deaktivieren Sie eine Website im Dashboard, um ihre Anfragen zu stoppen und einen Platz freizugeben. Nach einem Downgrade bleiben die ältesten aktivierten Websites innerhalb des Planlimits aktiv. Deaktivieren Sie eine ältere Website, um eine andere zu aktivieren.

POST /api/v1/check · JSON-Inhalt · Authorization: Bearer YOUR_SERVER_KEY

curl https://spamadin.com/api/v1/check \
  -H 'Authorization: Bearer YOUR_SERVER_KEY' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: 45573012-1f18-4eaf-97a1-29702376ea21' \
  -d '{
    "type": "contact",
    "siteUrl": "https://example.com",
    "content": "Können Sie uns ein Angebot für unsere neue Website senden?",
    "context": { "title": "Website design", "language": "en" },
    "signals": { "elapsedMs": 8500, "honeypotFilled": false }
  }'

Stapelprüfungen

Sende bis zu 20 Nachrichten an POST /api/v1/check/bulk mit deinem Konto-API-Schlüssel. Elemente dürfen zu verschiedenen Websites deines Kontos gehören. Jedes benötigt eine eindeutige UUID und ein submission-Objekt. Antworten behalten die Reihenfolge und enthalten Status und Ergebnis. Wiederhole mit derselben ID und unveränderten Daten. Website-Limits, Sperren und das gemeinsame Monatskontingent gelten pro Element.

{
  "checks": [
    {
      "id": "45573012-1f18-4eaf-97a1-29702376ea21",
      "submission": {
        "type": "contact",
        "siteUrl": "https://example.com",
        "content": "Können Sie ein Angebot senden?"
      }
    }
  ]
}

Formularbezogener Kontext

Erstelle im Dashboard ein Formularprofil mit Zweck, Feldbeschriftungen und passenden öffentlichen Texten. Prüfe und speichere die vorgeschlagene Zusammenfassung und übermittle dann die formId bei einzelnen oder gesammelten Prüfungen. Verwende reader_comment-Profile für Kommentare und andere Profile für Kontaktanfragen. Profile liefern Kontext, aber keine automatische Erlaubnis für Werbenachrichten.

{
  "formId": "d495b23a-cf83-4c3d-bd63-6973297ec401",
  "type": "contact",
  "siteUrl": "https://example.com",
  "content": "Können Sie ein Angebot senden?"
}

Verwende je Nachricht eine neue UUID als Idempotency-Key. Wiederhole nach Netzwerkfehlern denselben Inhalt mit demselben Schlüssel. Abgeschlossene Prüfungen liefern das vorhandene Ergebnis ohne erneuten Kontingentabzug. Schlüssel bleiben 30 Tage in den Prüfmetadaten; wiederhole keine älteren Nachrichten.

FeldZweckGrenze
contentOriginaltext der Nachricht; erforderlich1–12.000 Zeichen
typecontact oder comment; erforderlichExakter Aufzählungswert
siteUrlWebsite-URL erforderlich. Neue Websites werden innerhalb deines Tariflimits automatisch registriert.HTTP(S), 2.048 Zeichen
context.title / descriptionRelevanter Seitenkontext von deinem Server200 / 1.000 Zeichen
context.language / tagsWebsite-Sprache und bis zu zehn Themen-Tags35 / 50 Zeichen
signals.elapsedMsZeit zwischen Anzeige und Absenden des Formulars0–86.400.000 ms
signals.honeypotFilledOb ein verborgenes Feld ausgefüllt wurdeBoolescher Wert
signals.userAgent / userIpOptionale Integrationsmetadaten; nicht an Modelle gesendet512 Zeichen / gültige IP

Ermittle Kontext und Verhalten auf dem Server. Browser-Zeitstempel sind fälschbar. Signiere bei künftigen CMS-Plugins den Anzeigezeitstempel und prüfe ihn beim Absenden, nutze einen barrierearmen Honeypot und serverseitige Hooks für Formulare und Kommentare. Leite keine Cookies, Autorisierungsheader, Passwörter, vollständigen Umgebungsvariablen oder anderen Geheimnisse weiter.

3. Unsichere Fälle bewahren

{
  "id": "c18dd105-5d52-4939-a63e-0d52b2c0606d",
  "verdict": "allow",
  "score": 0,
  "reasons": ["clear_legitimate_context"],
  "degraded": false,
  "latencyMs": 420,
  "charged": true
}

Diese Beispielantwort garantiert keine Latenz. Der Wert ist ein ordinaler Risikoindikator: 0 (zulassen), 50 (prüfen) oder 100 (starke Spam-Übereinstimmung). Er ist keine kalibrierte Wahrscheinlichkeit.

Die automatische Spam-Klassifizierung startet im Beobachtungsmodus, bis der Betreiber eine evaluierte Sperrstrategie aktiviert. Bei Netzwerkfehlern oder Nicht-2xx-Antworten Nachrichten zur Prüfung speichern, statt sie zu verwerfen oder unbegrenzt zu wiederholen.

4. Korrektur melden

POST /api/v1/feedback mit demselben Bearer-API-Schlüssel und JSON {"id":"CHECK_UUID","label":"legitimate"} oder der Kennzeichnung spam. Korrekturen sind auf Prüfungen dieses Schlüssels beschränkt. Sie dienen der Auswertung, ändern kein gemeinsames Training und schalten einen Absender nicht sofort frei.

Du kannst auch im Dashboard eine Korrektur erfassen und dich mit der Prüfreferenz an den Support wenden. Wir können Kontext und Vorsicht für deine Website anpassen. Sende keine privaten Nachrichteninhalte, Passwörter oder API-Schlüssel per E-Mail. Prüfreferenzen bleiben 30 Tage verfügbar.

Grenzen und Fehlerbehandlung

Eine falsche Einstufung melden

Melde echte Nachrichten, die als Spam eingestuft wurden, an POST /api/v1/reports/false-positive oder übersehenen Spam an POST /api/v1/reports/missed-spam. Sende nur die zurückgegebene Prüfungs-ID mit deinem Konto-API-Schlüssel. Kein Nachrichteninhalt wird geteilt und keine Prüfung verbraucht. Die letzte Korrektur gilt; Meldungen trainieren ein Modell nicht sofort neu.

{
  "id": "c18dd105-5d52-4939-a63e-0d52b2c0606d"
}

Datenschutz als Standard

Normale Prüfungen speichern Metadaten und einen schlüsselbasierten Eingabe-Hash 30 Tage lang, keine Nachrichteninhalte. Übliche E-Mail- und Telefonmuster werden vor der KI-Verarbeitung maskiert; das ist Minimierung, keine vollständige Anonymisierung. Freiwillig geteilte Trainingsbeispiele werden gemäß der Datenschutzerklärung getrennt gespeichert.

Optionale unsichtbare Formularprüfungen

Rufe POST /api/v1/form-token von deinem Server mit siteUrl, type und optional einer gespeicherten formId auf. Tokens laufen nach 30 Minuten ab. Ihre Ausstellung verbraucht keine Spamprüfung und setzt einen aktiven Websitezugang voraus.

Sende das erhaltene Token in signals.formToken und verwende den erhaltenen idempotencyKey als Idempotency-Key-Header. Bei Stapelprüfungen verwendest du ihn als id des Elements. Wiederholungen müssen die ursprüngliche Anfrage exakt beibehalten. Nutze für eine neue Einsendung ein neues Token.

Lade /spamadin-behavior.js auf deiner Website und verbinde das Skript mit deinem Formular. Dein Token-Endpunkt derselben Origin ruft Spamadin von deinem Server aus auf und gibt nur die öffentliche Formular-Token-Antwort zurück. Lege niemals deinen API-Schlüssel offen und bette keine gemeinsam genutzten Tokens in zwischengespeicherte Seiten ein.

SpamadinBehavior.attach(document.querySelector("#contact-form"), {
  tokenEndpoint: "/form-evidence/token"
});

Das Skript fügt ein verborgenes Feld spamadin_evidence mit token, idempotencyKey und Browsersignalen hinzu. Validiere dieses Feld auf deinem Server, ordne browser signals.browser zu und leite token als signals.formToken weiter. Die Signale verwenden version 1, jsExecuted, focusCount, editCount, pasteCount, keyboardUsed, pointerUsed und optional firstInteractionMs. Dein Server kann auch honeypotFilled und die IP-Adresse des Besuchers senden.

Diese Signale unterstützen die Klassifizierung; allein weisen sie niemals Spam nach. Einfügen, automatisches Ausfüllen, fehlendes JavaScript und assistive Technologien können legitim sein. Die Zeitmessung erfasst die Zeit seit der Token-Ausstellung und beweist keine menschliche Aktivität. Fehlende oder abgelaufene Tokens führen nicht automatisch zur Ablehnung von Nachrichten.

Das Skript zeichnet keine eingegebenen Texte, Zwischenablageinhalte, Mausbewegungen oder Cookies auf. Tokens und Interaktionszusammenfassungen werden weder im Prüfverlauf gespeichert noch als Zugangsdaten an KI-Anbieter gesendet. Prüfungen mit Browsersignalen führen immer eine Klassifizierung durch, ohne ein zwischengespeichertes Ergebnis wiederzuverwenden.

Wiederholungserkennung

Die Wiederholungserkennung ist pro Website getrennt. Fingerabdrücke verfallen nach 24 Stunden und enthalten keinen gespeicherten Nachrichtentext. Ähnliche Formulierungen helfen bei der Einstufung, bestimmen aber allein keinen Spam. Deaktiviere die Funktion in den Website-Einstellungen, um Verlauf und freigegebene Kampagnensignale zu löschen. Eine Sperre oder Korrekturmeldung löscht ebenfalls den aktuellen Verlauf.

Geeignete identische Prüfungen dürfen ein kürzliches Urteil als echte Nachricht nur wiederverwenden, wenn diese Funktion bewertet und aktiviert wurde. Die Wiederverwendung ist auf fünf Minuten begrenzt und erfordert unveränderte Einsendedaten, Website- und Formulareinstellungen, Modellkonfiguration und Erkennungsregeln. Unscharfe Treffer umgehen die KI niemals. Jede abgeschlossene Prüfung zählt einmal zum Kontingent, auch bei wiederverwendetem Urteil; fehlgeschlagene Anbieterprüfungen werden nicht berechnet.

Ein korrigiertes Trainingsbeispiel teilen

Sende POST /api/v1/training mit ursprünglichem Schlüssel, checkId, korrigierter Einstufung, unverändertem ursprünglichem Übermittlungsobjekt und beiden Freigabebestätigungen auf true. Die Prüfung muss abgeschlossen und jünger als 30 Tage sein. Das Teilen ist freiwillig, verbraucht keine Spam-Prüfung und trainiert ein Modell nicht sofort neu. Führe die Anfrage im Backend aus und erfülle vor dem Teilen von Besucherinhalten die erforderlichen Hinweise und rechtlichen Berechtigungen.

{
  "checkId": "c18dd105-5d52-4939-a63e-0d52b2c0606d",
  "label": "legitimate",
  "submission": {
    "type": "contact",
    "siteUrl": "https://example.com",
    "content": "Können Sie ein Angebot senden?"
  },
  "consent": {
    "authorizedToShare": true,
    "useForSpamImprovement": true
  }
}

GET /api/v1/training listet Referenzen der von deinem Konto geteilten Beispiele. Nutze ?after=EXAMPLE_UUID für die nächste Seite oder ?id=EXAMPLE_UUID für ein minimiertes Beispiel. DELETE am selben Endpunkt mit der Beispiel-ID entfernt es. Im Dashboard kannst du Beispiele auch nach dem Schlüsselwiderruf entfernen.

Beispiele verfallen nach 90 Tagen. Grenzen: 500 Beispiele oder 2 MiB verschlüsselte Nutzdaten pro Konto, 16 KiB ursprünglicher Nachrichtentext pro Beispiel und 24 KiB minimierter Inhalt samt Kontext vor Komprimierung. Anfragen bleiben auf 32 KiB begrenzt. Ein volles Konto liefert 429; vorübergehend fehlende Plattformkapazität oder Verschlüsselung liefert 503. Bei Ablehnung wegen einer Grenze wird kein Beispiel gespeichert. Wiederhole nicht unbegrenzt und sende keine privaten Anhänge. Die Maskierung erfolgt nach bestem Bemühen und ist keine Anonymisierung.

Die API besucht niemals übermittelte URLs. Optionale Besucher-IP-Adressen unterstützen kurzzeitige, websitespezifische Hinweise auf gehäufte Einsendungen; User-Agents beeinflussen die Klassifizierung nicht. Beide werden nicht an Modelle gesendet. Nutze unser WordPress-Plugin oder verbinde andere CMS über die Server-API.

Konto erstellen ↗