BotShield SDK Overview
BotShield provides a REST API (and a thin TypeScript wrapper) for integrating anonymous human presence verification into your platform. Integration happens server-to-server, with the user completing a biometric check on their own device. No personally identifiable information ever crosses the BotShield boundary.Access to the BotShield API is provisioned through a developer application process. Once approved, you receive an API key (
bs_prod_* / bs_test_*) and a public site key (pk_live_* / pk_test_*) for client-side embeds.Anonymous by Design
Census performs one operation: anonymous human attestation — one operation, no modes. No identity-bearing path exists at the partner boundary:- The partner never sees a user email, name, or BotShield user ID.
- Identity (if any) lives only in the consumer app’s own account system — never in a verification payload, webhook, or token.
- Every artifact you receive carries a
request_idand a verification result. Nothing more.
Integration Model
- Creates a grant window (session token) using your API key
- Creates a verification link for a specific scope
- Presents the link to the user (deep link, web URL, or QR code)
- Receives the result via webhook or polling
- Opens the BotShield app (or is prompted to set it up on first use)
- Completes a biometric check (Face ID / Touch ID)
- Is returned to your platform
Human Presence Signal (HPS)
Each successful verification produces an HPS — a short-lived, cryptographically signed attestation that confirms:- A real human was present on a device
- The verification occurred within the expiry window
- The signal is tamper-proof and single-use
verification_token you can receive on the return_url (or from verifyToken) is PII-free — its claims are only:
Result States
Census collapses BotShield’s internal verdict logic into three partner-facing result states:
For the full internal verdict + reason grid that projects to these states, see Human Presence.
API Flow
What a Verification Guarantees
Guaranteed:- A real human was present on a device at verification time
- Verification occurred within the expiry window
- The signal is cryptographically signed and tamper-proof
- The signal cannot be replayed (one-time use)
- User identity (presence is not identity — and BotShield never reveals it)
- Device ownership
- Account state
- Future presence (the signal expires quickly)
MultiPass
MultiPass is BotShield’s continuity layer. When a user has an active passkey on their device, presence consent enabled, and a valid TTL window, a standard scope can pass without a fresh biometric — the user sees no friction, and you get a MultiPass Active result. Elevated scopes always require a live Face ID, even when MultiPass is active. MultiPass continuity is anonymous: it is bound to the device and routing handle, never to an identity the partner can see.Scopes
A scope defines the specific action being verified. Each scope maps to one action on your platform, following the formatcategory.action:
Scopes are registered and approved in the Partner Dashboard before use. Each scope resolves to one of two canonical impact levels —
standard (MultiPass continuity or a fresh Face ID is sufficient) or elevated (live Face ID always required). BotShield has no opinion on which of your actions need which scope; that is your policy decision.
Next Steps
- Quick Start — Step-by-step integration guide
- SDK Features — Detailed capabilities
- Use Cases — Real-world applications
- Client Libraries — Official TypeScript SDK
- API Reference — Endpoint documentation