SilentShield veilig in uw formulier integreren
Clientscript, controle aan serverzijde, sleutels en foutgevallen – de volledige integratie op één plek.
Zo werken het script en de servercontrole samen
Een volledige integratie bestaat uit twee helften: het script in de browser en een controle op uw server.
- 1
Script wordt geladen
Uw pagina laadt client.js?k=… met uw websitesleutel. Het script meet het gedrag in het formulier.
- 2
Formulier wordt verzonden
Bij het verzenden meldt het script de meting en voegt het het veld behavior_nonce aan uw formulier toe.
- 3
Uw server vraagt na
Uw server stuurt behavior_nonce naar POST /api/v1/captcha/verify-nonce, met uw sleutel in de header X-Api-Key.
- 4
U beslist
Het antwoord bevat ok, verdict, confidence en reason_codes. Accepteer de inzending als ok true is, wijs haar anders af.
Zonder stap 3 beschermt de integratie maar half: het script alleen houdt geen verzoek tegen dat rechtstreeks naar uw server wordt gestuurd.
Websitesleutel en serversleutel
Websitesleutel (openbaar)
client.js?k=…
Deze staat in de broncode van uw pagina en is dus voor iedereen zichtbaar. Hij koppelt het script aan uw domein; subdomeinen zoals www. of staging. horen erbij.
Serversleutel (geheim, optioneel)
X-Api-Key
Optioneel. Wilt u dat de aanroepen die uw server doet een waarde meesturen die niet in de broncode van uw pagina staat, maak deze dan aan in het dashboard bij de sleutel, op het tabblad ‘Serversleutel’. Hij hoort alleen op uw server, nooit in de browser, en kan op elk moment opnieuw worden gegenereerd.
De servercontrole werkt met alleen de sitesleutel, dus u hoeft niets te wijzigen. Beide sleutels worden geaccepteerd. Met de serversleutel bevat uw servercode geen waarde die iedereen in de broncode van uw pagina kan lezen.
Snelstart
Installeren & insluiten
Voeg het script toe en ontvang een token
Verifiëren op de server
Valideer de token op uw backend
Snelle test met cURL
Nonce verifiëren via de commandoregel
# Nonce verifiëren
curl -X POST https://api.silentshield.io/api/v1/captcha/verify-nonce \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"nonce": "256ea6c63c3ccdd317e05cbc9ef0c659"}'Frontend Integration
Add the client script with SRI and defer attributes
<!-- In <head> or before </body> of every page with a form -->
<script src="https://api.silentshield.io/client.js?k=YOUR_API_KEY" defer></script>Beveiliging & privacy
- Geen cookies – volledig cookieloze werking
- Geen profielen, geen cookies – AVG-conform inzetbaar
- EU-hosting – controle en opslag op onze servers in Duitsland
- WCAG-conform – toegankelijk voor alle gebruikers
- CSP-compatibel – gebruik met Content Security Policy:
Content-Security-Policy: script-src 'self' https://api-us.silentshield.io https://api-eu.silentshield.io; connect-src 'self' https://api-us.silentshield.io https://api-eu.silentshield.io; worker-src 'self' blob:;SDK's & Bibliotheken
Het pakket draait op uw server (Node.js 18 of nieuwer). In de browser hebt u helemaal geen pakket nodig — daar volstaat het client.js-fragment uit de snelstart.
Node.js / Express
v1.5.0npm i @forge12interactive/silentshield-sdk-jsimport { createClient } from "@forge12interactive/silentshield-sdk-js";
const shield = createClient({ apiKey: process.env.SILENTSHIELD_API_KEY });
app.post("/signup", async (req, res) => {
const { human } = await shield.verify(req.body.behavior_nonce);
if (!human) return res.status(403).send("Verification failed");
res.send("ok");
});AI-agents (Node.js)
v1.5.0npm i @forge12interactive/silentshield-sdk-jsimport { createClient, enforce } from "@forge12interactive/silentshield-sdk-js";
const shield = createClient({ apiKey: process.env.SILENTSHIELD_API_KEY });
// Reports bot candidates only — never blocks, never sees human traffic.
app.use(shield.observe);
// Applies your policy locally from a signed bundle. Fail-open.
app.use(enforce({ apiKey: process.env.SILENTSHIELD_API_KEY }));API-referentie
API Version: 2025-10-01 · Base URL: https://api.silentshield.io
/api/v1/captcha/verify-nonceSilentShield Nonce verifiëren
Request Headers:
X-Api-KeyYOUR_API_KEYContent-Typeapplication/jsonRequest Body:
noncestringDe te verifiëren NonceResponse:
Success (200):
{
"ok": true,
"verdict": "human",
"confidence": 0.95,
"requested_nonce": "256ea6c63c3ccdd317e05cbc9ef0c659"
}Error:
{
"ok": false,
"verdict": "bot",
"confidence": 0.12,
"request_nonce": "256ea6c63c3ccdd317e05cbc9ef0c659",
"reason_codes": ["NO_MOUSE_MOVEMENT"]
}Status Codes:
200Nonce succesvol geverifieerd400Ongeldig verzoek (ontbrekende of onjuiste Nonce)401Ongeldige API-sleutel403Niet als mens bevestigd (ok: false) – wijs de inzending af429Rate-limiet overschreden500Interne ServerfoutTime-outs, storingen en quotum
- Stel een time-out in voor de servercontrole. Onze codevoorbeelden gebruiken 5 seconden.
- Antwoordt de controle niet op tijd, dan behandelen de voorbeelden dat als ‘niet bevestigd’ en wijzen af. Accepteert u in dat geval liever, vang de fout dan zelf af — de beslissing ligt bij u.
- Antwoordt de eerste host niet terwijl het script zijn instellingen en onderdelen laadt, dan schakelt het over op de tweede (api.silentshield.io en api-eu.silentshield.io). Sleutels met strikte EU-binding blijven op de EU-host.
- Voor de servercontrole is er geen automatische uitwijkhost.
- Boven uw maandquotum blijft de API controleren en antwoordt zoals gebruikelijk. Een 429 betekent dat de limiet per minuut voor uw sleutel is overschreden.
Lokaal en op een testdomein testen
- Uw sleutel werkt niet op localhost: hij is aan uw domein gekoppeld en het script wordt daar geweigerd.
- Test op een subdomein van uw domein, bijvoorbeeld staging.uw-domein.nl. Het draait met de sleutel van het hoofddomein en neemt geen extra domeinplaats in.
- Wilt u test en live apart evalueren, maak dan een tweede sleutel aan voor hetzelfde domein. Ook die neemt geen extra domeinplaats in.
- Verstuur als test een formulier en controleer op uw server het antwoord van verify-nonce: bij een met de hand getypte invoer zou ok: true moeten terugkomen; anders laten de reason_codes zien waarom niet.
Versies en wijzigingen
- De API draagt zijn versie in het pad: /api/v1. Dezelfde routes zijn beschikbaar onder /api.
- Het script heeft geen versienummer: client.js levert altijd de actuele release, u hoeft dus niets bij te werken.
- De SDK's voor PHP, Node, Go en Edge hebben versienummers; wijzigingen staan in de changelog van het betreffende pakket.
- Wijzigingen aan de API en het script publiceren we in de changelog.
Bronnen
Helpcentrum
Uitgebreide documentatie met handleidingen om aan de slag te gaan, integratietutorials, configuratiereferenties en probleemoplossing.
Wijzigingslogboek
Blijf op de hoogte van de nieuwste functies, verbeteringen en oplossingen.