Shield · Server verification

Server-side verification

The browser SDK provides signals, but browser payloads can be spoofed — use server-side verification for enforcement decisions. Secret API keys never belong in client-side code.

Endpoint

Secret-key authenticated

POST https://shield.findip.net/v1/shield/sessions/verify
// Request
{
  "session_id": "sess_xxx",
  "event": "signup_attempt"
}

// Response
{
  "risk_score": 87,
  "recommendation": "challenge",
  "verified": true
}

Recommended flow

1. BrowserSDK tracks signup_attempt and receives the initial risk signal.
2. Your backendReceives the signup request including the session_id.
3. VerifyBackend calls /v1/shield/sessions/verify with your secret API key.
4. EnforceAllow, challenge, or block based on the verified response.

Integration example

// Frontend: include session ID in the signup request
const { sessionId } = FindIP.getSession();
await fetch('/api/signup', {
  method: 'POST',
  body: JSON.stringify({ email, password, findip_session_id: sessionId }),
});

// Backend: verify before creating the account
const verify = await fetch('https://shield.findip.net/v1/shield/sessions/verify', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.FINDIP_SHIELD_SECRET_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    session_id: req.body.findip_session_id,
    event: 'signup_attempt',
  }),
});