개발자 문서

투명한 봇 보호. CAPTCHA 없음. API 우선.

퀵스타트

1

설치 및 포함

스크립트를 추가하고 토큰 받기

2

서버에서 확인

백엔드에서 토큰 유효성 검사

cURL로 빠른 테스트

명령줄에서 Nonce 확인

# 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);
})();

보안 및 개인 정보 보호

  • 쿠키 없음 – 완전히 쿠키 없는 작동
  • PII(개인 식별 정보) 수집 없음 – GDPR 및 CCPA 준수
  • EU 호스팅 – 모든 데이터는 유럽에 보관
  • WCAG 준수 – 모든 사용자가 접근 가능
  • CSP 호환 – Content Security Policy와 함께 사용:
Content-Security-Policy: script-src 'self' https://api.silentshield.io;

API 참조

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

POST/v1/verify

SilentShield Nonce 확인

Request Headers:

AuthorizationBearer YOUR_API_KEY
Content-Typeapplication/json

Request Body:

tokenstring확인할 Nonce

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 성공적으로 확인됨
400잘못된 요청 (Nonce 누락 또는 오류)
401잘못된 API 키
429요청 속도 제한 초과 (100 요청/분)
500내부 서버 오류

SDK 및 라이브러리

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.

시작할 준비가 되셨나요?

무료 계정을 만들고 몇 초 만에 사이트 키를 받으세요.

시작하기