SPAMADIN / SVILUPPATORI

Un percorso chiaro dal
messaggio alla decisione.

Collega il backend a Spamadin. Conserva la chiave API Spamadin sul server. Salva i messaggi nel tuo sistema prima di richiedere una classificazione.

Crea con il tuo assistente di programmazione

Fornisci al tuo assistente la guida di integrazione e la specifica OpenAPI per collegare il sito dal server.

Guida di integrazione · Specifica OpenAPI · Indice della documentazione per IA

Plugin WordPress

Installa Spamadin su WordPress e incolla la chiave API dell’account in Impostazioni → Spamadin. Usa la stessa chiave su tutti i siti del piano. Il collegamento aggiunge automaticamente il sito entro il limite del piano e conserva la chiave in modo sicuro sul server WordPress.

Scarica il plugin WordPress

Commenti e moduli compatibili sono protetti per impostazione predefinita. Sono supportati Contact Form 7, WPForms, Gravity Forms, Fluent Forms ed Elementor Pro. Puoi modificare la protezione e i segnali facoltativi del browser nelle impostazioni del plugin.

I commenti spam restano nella coda spam di WordPress; i controlli incerti o non disponibili passano alla moderazione. I messaggi dei moduli trattenuti restano privati in Impostazioni → Spamadin per un massimo di 30 giorni. Esaminali e contatta direttamente i mittenti legittimi; le azioni del modulo non vengono rieseguite. Le correzioni condividono solo il riferimento del controllo e l’etichetta, mai il testo del messaggio.

Scollegare il plugin interrompe i controlli locali. Blocca il sito nella dashboard Spamadin per fermare le richieste API e liberare il posto. Ricollegarlo non lo sblocca. Sostituire la chiave dell’account richiede l’aggiornamento di tutte le integrazioni.

1. Crea un account e una chiave

Verifica l’e-mail, scegli un abbonamento nella dashboard, e crea una chiave API dell’account. Riutilizzala su tutti i siti. Ogni hostname consentito occupa un posto; example.com e www.example.com contano separatamente. Le chiavi vengono mostrate una sola volta e archiviate con Argon2id.

La chiave Spamadin autentica le richieste al servizio ed è distinta dalle nostre credenziali interne del fornitore IA. L’abbonamento include la classificazione; non serve un account o una chiave OpenRouter.

2. Controlla un messaggio

Descrivi il sito quando lo colleghi. Spamadin usa l’IA per classificarlo e includere il contesto nei controlli futuri. Disabilita un sito nella dashboard per bloccarne le richieste e liberare un posto. Passando a un piano inferiore, restano attivi i siti abilitati più vecchi entro il limite del piano; disabilitane uno per abilitarne un altro.

POST /api/v1/check · Corpo JSON · 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": "Potete inviarci un preventivo per il nostro nuovo sito?",
    "context": { "title": "Website design", "language": "en" },
    "signals": { "elapsedMs": 8500, "honeypotFilled": false }
  }'

Controlli in blocco

Invia fino a 20 messaggi a POST /api/v1/check/bulk con la chiave API dell’account. Possono provenire da siti diversi dell’account. Ogni elemento richiede un ID UUID unico e un oggetto submission. Le risposte mantengono l’ordine e includono stato e risultato. Riprova con lo stesso ID e gli stessi dati. Limiti dei siti, blocchi e quota mensile condivisa valgono per ogni elemento.

{
  "checks": [
    {
      "id": "45573012-1f18-4eaf-97a1-29702376ea21",
      "submission": {
        "type": "contact",
        "siteUrl": "https://example.com",
        "content": "Potete inviare un preventivo?"
      }
    }
  ]
}

Contesto specifico del modulo

Crea un profilo del modulo nella dashboard usando scopo, etichette dei campi e testo pubblico pertinente. Controlla e salva il riepilogo suggerito, poi includi il formId nei controlli singoli o in blocco. Usa i profili reader_comment per i commenti e gli altri profili per i messaggi di contatto. I profili forniscono contesto, non un’autorizzazione automatica a inviare messaggi promozionali.

{
  "formId": "d495b23a-cf83-4c3d-bd63-6973297ec401",
  "type": "contact",
  "siteUrl": "https://example.com",
  "content": "Potete inviare un preventivo?"
}

Usa un nuovo UUID Idempotency-Key per ogni messaggio. Dopo errori di rete, ripeti lo stesso contenuto con la stessa chiave. Un controllo già completato restituisce la decisione esistente senza un nuovo addebito di quota. Le chiavi restano nei metadati per 30 giorni; non riprovare messaggi più vecchi.

CampoScopoLimite
contentTesto originale del messaggio; obbligatorio1–12.000 caratteri
typecontact o comment; obbligatorioValore enumerato esatto
siteUrlURL del sito obbligatorio. I nuovi siti vengono registrati automaticamente entro il limite del piano.HTTP(S), 2.048 caratteri
context.title / descriptionContesto pertinente della pagina fornito dal server200 / 1.000 caratteri
context.language / tagsLingua del sito e fino a dieci tag tematici35 / 50 caratteri
signals.elapsedMsTempo tra visualizzazione e invio del modulo0–86.400.000 ms
signals.honeypotFilledIndica se un campo nascosto è stato compilatoBooleano
signals.userAgent / userIpMetadati facoltativi; non inviati ai modelli512 caratteri / IP valido

Deriva contesto e comportamento sul server. Gli orari del browser possono essere falsificati. Per i futuri plugin CMS, firma il timestamp di visualizzazione e validalo all’invio, usa un honeypot accessibile e gli hook del ciclo di vita server di commenti e moduli. Non inoltrare cookie, intestazioni di autorizzazione, password, variabili d’ambiente complete o altri segreti.

3. Preserva i casi incerti

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

Questa risposta è illustrativa, non garantisce una latenza. Il punteggio è un indicatore ordinale di rischio: 0 (consenti), 50 (verifica) o 100 (forte accordo sullo spam). Non è una probabilità calibrata.

La classificazione automatica parte in modalità osservazione finché l’operatore non abilita una politica di blocco valutata. Se la chiamata fallisce o restituisce uno stato diverso da 2xx, conserva il messaggio per revisione anziché eliminarlo o riprovare senza fine.

4. Segnala una correzione

POST /api/v1/feedback con la stessa chiave API Bearer e il JSON {"id":"CHECK_UUID","label":"legitimate"} oppure l’etichetta spam. Le correzioni riguardano solo i controlli creati da quella chiave. Registrano un dato per la valutazione, senza modificare l’addestramento condiviso o autorizzare subito un mittente.

Puoi anche registrare una correzione nella dashboard e contattare l’assistenza con il riferimento del controllo. Possiamo adattare contesto e cautela al tuo sito. Non inviare via email contenuti privati, password o chiavi API. I riferimenti restano disponibili per 30 giorni.

Limiti e gestione degli errori

Segnala un errore di classificazione

Segnala un messaggio legittimo classificato come spam a POST /api/v1/reports/false-positive, oppure spam non rilevato a POST /api/v1/reports/missed-spam. Invia solo l’ID restituito con la chiave API dell’account. Non viene condiviso contenuto né consumato un controllo. Prevale l’ultima correzione; le segnalazioni non riaddestrano subito il modello.

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

Privacy per impostazione predefinita

I controlli ordinari conservano metadati e un’impronta dell’input con chiave per 30 giorni, senza salvare il contenuto dei messaggi. I formati comuni di email e telefono vengono mascherati prima dell’elaborazione IA: è minimizzazione, non anonimizzazione completa. Gli esempi condivisi volontariamente sono conservati separatamente secondo l’informativa privacy.

Controlli invisibili facoltativi per i moduli

Chiama POST /api/v1/form-token dal tuo server con siteUrl, type e, facoltativamente, un formId salvato. I token scadono dopo 30 minuti. L’emissione non consuma un controllo antispam e richiede l’accesso attivo al sito.

Invia il token ricevuto in signals.formToken e usa l’idempotencyKey ricevuto come intestazione Idempotency-Key. Nei controlli in blocco, usalo come id dell’elemento. I tentativi successivi devono mantenere esattamente la richiesta originale. Usa un nuovo token per ogni nuovo invio.

Carica /spamadin-behavior.js sul tuo sito e collegalo al modulo. Il tuo endpoint dei token, della stessa origine, chiama Spamadin dal tuo server e restituisce solo la risposta pubblica del token del modulo. Non esporre mai la tua chiave API e non incorporare token condivisi nelle pagine memorizzate nella cache.

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

Lo script aggiunge un campo nascosto spamadin_evidence contenente token, idempotencyKey e i segnali del browser. Valida questo campo sul server, associa browser a signals.browser e inoltra token come signals.formToken. I segnali usano version 1, jsExecuted, focusCount, editCount, pasteCount, keyboardUsed, pointerUsed e, facoltativamente, firstInteractionMs. Il server può anche inviare honeypotFilled e l’indirizzo IP del visitatore.

Questi segnali aiutano la classificazione, ma da soli non identificano mai lo spam. Incollare, usare il completamento automatico, disabilitare JavaScript e utilizzare tecnologie assistive possono essere comportamenti legittimi. Il tempo misura l’intervallo dall’emissione del token, senza dimostrare un’attività umana. I token assenti o scaduti non causano il rifiuto automatico dei messaggi.

Lo script non registra testo digitato, contenuti degli appunti, movimenti del mouse o cookie. I token e i riepiloghi delle interazioni non sono conservati nella cronologia dei controlli né inviati come credenziali ai fornitori di IA. I controlli con segnali del browser eseguono sempre la classificazione senza riutilizzare un risultato in cache.

Riconoscimento delle ripetizioni

Il riconoscimento delle ripetizioni è separato per sito. Le impronte scadono dopo 24 ore e non contengono testo salvato. Formulazioni simili supportano la classificazione, ma non identificano spam da sole. Disattiva la funzione nelle impostazioni del sito per cancellare cronologia e segnali delle campagne approvate. Bloccare un sito o segnalare una correzione cancella anche la cronologia recente.

I controlli identici idonei possono riutilizzare un verdetto recente di messaggio autentico solo quando la funzione è stata valutata e attivata. Il riutilizzo è limitato a cinque minuti e richiede dati inviati, impostazioni di sito e modulo, configurazione dei modelli e criteri di rilevamento invariati. Le corrispondenze approssimative non saltano mai l’IA. Ogni controllo completato conta una volta nel limite, anche con un verdetto riutilizzato; gli errori del fornitore non vengono conteggiati.

Condividi un esempio corretto

Invia POST /api/v1/training con chiave originale, checkId, etichetta corretta, oggetto dell’invio originale invariato ed entrambe le conferme di condivisione su true. Il controllo deve essere completato e risalire a meno di 30 giorni. La condivisione è facoltativa, non consuma un controllo e non riaddestra subito un modello. Esegui la richiesta dal backend e fornisci le informative richieste e l’autorità legale prima di condividere contenuti dei visitatori.

{
  "checkId": "c18dd105-5d52-4939-a63e-0d52b2c0606d",
  "label": "legitimate",
  "submission": {
    "type": "contact",
    "siteUrl": "https://example.com",
    "content": "Potete inviare un preventivo?"
  },
  "consent": {
    "authorizedToShare": true,
    "useForSpamImprovement": true
  }
}

GET /api/v1/training elenca i riferimenti degli esempi condivisi dall’account. Usa ?after=EXAMPLE_UUID per la pagina successiva o ?id=EXAMPLE_UUID per recuperare un esempio ridotto. DELETE sullo stesso endpoint con l’ID dell’esempio lo rimuove. La dashboard permette di rimuovere esempi anche dopo la revoca della chiave.

Gli esempi scadono dopo 90 giorni. Limiti: 500 esempi o 2 MiB di dati cifrati per account, 16 KiB di testo originale per esempio e 24 KiB di contenuto e contesto minimizzati prima della compressione. Le richieste restano limitate a 32 KiB. Un account pieno restituisce 429; capacità temporaneamente indisponibile o assenza di cifratura restituiscono 503. Nessun esempio viene salvato se un limite rifiuta la richiesta. Non riprovare all’infinito e non inviare allegati privati. Il mascheramento è effettuato al meglio, non è anonimizzazione.

L’API non visita mai gli URL inviati. Gli IP facoltativi aiutano a rilevare picchi temporanei di invii per singolo sito; gli user agent non influiscono sulla classificazione. Nessuno viene inviato ai modelli. Usa il nostro plugin WordPress o collega altri CMS tramite l’API server.

Crea il tuo account ↗