Docs
Everything is set up from your dashboard. Sign up to get your keys.
WordPress plugin
- In WordPress admin, go to Plugins → Add New → Upload Plugin and activate WallSafe.
- Open Settings → WallSafe.
- Set the API base URL to your WallSafe address and paste your API key.
The plugin caches the blocklist on your server and refreshes it every 15 minutes. If WallSafe can't be reached it allows all traffic.
Next.js and Node.js (npm SDK)
The wallsafe npm package isn't published yet. Email us for early access.
Next.js: create middleware.ts in your project root.
import { createMiddleware } from "wallsafe";
export default createMiddleware({ apiKey: process.env.WALLSAFE_API_KEY });
export const config = {
matcher: ["/((?!_next/static|_next/image|favicon.ico).*)"],
};Express and other Node servers:
const { wallSafe } = require("wallsafe");
app.use(wallSafe({ apiKey: process.env.WALLSAFE_API_KEY }));Full reference: SDK README.
Script tag (any website)
Add one line before </body>. Use your public script key (wsp_…) from Dashboard → Overview → Install → Script, never your secret API key.
<script src="https://wallsafe.io/ws.js?key=YOUR_SCRIPT_KEY" async></script>
The script reports automated browsers and JavaScript-running AI agents and sends nothing for ordinary visitors. It cannot stop crawlers that only download your HTML; use the plugin or the SDK for that.
Agent Protection API
Screen a message before it reaches your LLM. Send your site's API key in X-API-Key.
curl -X POST https://wallsafe.io/api/agent/evaluate \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "your user message here"}'Response: { isAttack, attackType, confidence, defenseResponse, evaluationId }. When isAttack is true you can return defenseResponse instead of calling your model. Limits: 1,000 evaluations a month on Free, 50,000 on Creator (HTTP 429 when exceeded).
Detection is pattern-based: it catches known attack phrasings, not every attack, and can occasionally flag an ordinary message. Treat any error or timeout as “no verdict” and let the message through (the SDK's evaluatePrompt() does this for you).
Help
Questions or something not working? Email support@placelaneprojects.in.