Developer Documentation

Invisible bot protection. No CAPTCHAs. API-first.

Quickstart

1

Install & Embed

Add the script and get a token

2

Verify on Server

Validate the token on your backend

Quick Test with cURL

Verify nonce from command line

# Verify Nonce
curl -X POST https://api.silentshield.io/v1/verify \
  -H "api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"nonce": "256ea6c63c3ccdd317e05cbc9ef0c659"}'

Frontend Integration

Add the client script with SRI and defer attributes

<!-- Add to <head> with SRI for security -->
(function () {
  var KEY = "YOUR_API_KEY";
  var SITE = location.hostname;
  var V = "2025.09.1";
  var s = document.createElement('script');
  s.src = "https://api.silentshield.io/client.js?k=" + encodeURIComponent(KEY)
    + "&v=" + encodeURIComponent(V)
    + "&site=" + encodeURIComponent(SITE);
  s.async = true;
  s.crossOrigin = "anonymous";
  document.head.appendChild(s);
})();

Security & Privacy

  • No cookies – fully cookieless operation
  • No PII collection – GDPR & CCPA compliant
  • EU hosting – all data stays in Europe
  • WCAG compliant – accessible to all users
  • CSP compatible – use with Content Security Policy:
Content-Security-Policy: script-src 'self' https://api.silentshield.io;

API Reference

API Version: 2025-10-01 · Base URL: https://api.silentshield.io

POST/v1/verify

Verify SilentShield Nonce

Request Headers:

AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Request Body:

tokenstringThe nonce to verify

Response:

Success (200):

{
  "ok": true,
  "verdict": "human",
  "confidence": 0.95,
  "request_nonce": "req_abc123"
}

Error:

{
  "ok": false,
  "verdict": "error",
  "confidence": 0,
  "request_nonce": "req_abc123",
  "error": "Invalid nonce"
}

Status Codes:

200Nonce successfully verified
400Invalid request (missing or incorrect nonce)
401Invalid API Key
429Rate limit exceeded (100 requests/min.)
500Internal Server Error

SDKs & Libraries

JavaScript ES6+

v1.0.1
npm i @forge12interactive/silentshield-sdk-js
import { SilentShield } from "@forge12interactive/silentshield-sdk-js";

const shield = new SilentShield({
  siteKey: 'your-site-key',
  debug: true
});

await shield.initialize();
const token = await shield.getToken();

TypeScript

v1.0.1
npm i @forge12interactive/silentshield-sdk-js
import { SilentShield, type SilentShieldConfig } from "@forge12interactive/silentshield-sdk-js";

const config: SilentShieldConfig = {
  siteKey: 'your-site-key',
  timeout: 10000
};

const shield = new SilentShield(config);
const token: string = await shield.getToken();

Node.js Backend

v1.0.1
npm i @forge12interactive/silentshield-sdk-js
import { SilentShieldBackend } from "@forge12interactive/silentshield-sdk-js";

const backend = new SilentShieldBackend('your-secret-key');

// Form verification
const result = await backend.verifyFormSubmission(formData);
if (result.isValid) {
  console.log('Human verified!', result.formData);
}

Vue.js

v1.0.1
npm i @forge12interactive/silentshield-sdk-js
import { SilentShield } from "@forge12interactive/silentshield-sdk-js";

export default {
  async mounted() {
    this.shield = new SilentShield({ siteKey: 'your-key' });
    await this.shield.initialize();
  },
  
  methods: {
    async handleSubmit() {
      const token = await this.shield.getToken();
      // Submit with token
    }
  }
};

React

v1.0.1
npm i @forge12interactive/silentshield-sdk-js
import { SilentShield } from "@forge12interactive/silentshield-sdk-js";
import { useEffect, useState } from 'react';

function MyForm() {
  const [shield, setShield] = useState(null);
  
  useEffect(() => {
    const init = async () => {
      const s = new SilentShield({ siteKey: 'your-key' });
      await s.initialize();
      setShield(s);
    };
    init();
  }, []);
  
  const handleSubmit = async (e) => {
    const token = await shield?.getToken();
    // Submit with token
  };
  
  return <form onSubmit={handleSubmit}>...</form>;
}

Resources

Help Center

Comprehensive documentation with getting started guides, integration tutorials, configuration references, and troubleshooting.

Changelog

Stay up to date with the latest features, improvements, and fixes.

Ready to start?

Create a free account and get your site key in seconds.

Get Started