N0D3
Tools API
Developer tools · emoji_bot available now

Ship human verification without the CAPTCHA tax.

One endpoint, one API key, one tool name. Server-verified emoji challenges with quotas that scale to whatever you're building. No user data, no third parties, no tracking.

Pricing
Simple tiers, hard limits

Every plan gets the same tools and the same API. Only the request ceiling differs.

Free
$0 / forever
For hobby projects and small side builds. Same emoji_bot tool, same endpoints.
Requests / day750
Requests / month7,550
Toolsemoji_bot
Supportcommunity
Scale
$25 / month
For high-volume apps. Burst to 900K/day, monthly ceiling set very high.
Requests / day900,000
Requests / month90,000,000
Toolsall current + future
Supportpriority
N0D3 Latency Booster is free forever. The emoji gate you see on the main page is our own use of the emoji_bot tool, served from our internal free tier. No API key needed for N0D3 itself — the booster is and always will be a free user tool.
API
Three things to make a request

Endpoint URL, your API key, and the tool name. That's it.

1. The endpoint

Every tool lives under /api/tools/{tool}/. Today the only tool is emoji_bot:

POST https://n0d3.pages.dev/api/tools/emoji_bot/challenge
POST https://n0d3.pages.dev/api/tools/emoji_bot/verify

2. The API key

Pass your key in the X-API-Key header. Never in a URL, never in client-side code, never in your frontend bundle. Keep it server-side.

X-API-Key: n0d3_tier11_a1b2c3d4…

3. The tool type

The tool is in the URL path. Currently the only tool is emoji_bot — more (e.g. proof_of_work, rate_guard, headless_check) will appear here with no change to the auth model.

Making a request — challenge

curl -X POST https://n0d3.pages.dev/api/tools/emoji_bot/challenge \
  -H "X-API-Key: n0d3_tier11_a1b2c3…"

Response (200):

{
  "challenge_id": "8f3e2a1b-…",
  "target": "😀",
  "options": ["😀", "😃", "😄", "😁", "😆", "😅"],
  "expires_in": 60,
  "quota": { "used_today": 124, "limit_today": 90000,
             "used_month": 3812, "limit_month": 900000 }
}

Show options to the user, tell them to click target. Any option is valid only if it equals the target. Challenges expire in 60 seconds.

Making a request — verify

curl -X POST https://n0d3.pages.dev/api/tools/emoji_bot/verify \
  -H "X-API-Key: n0d3_tier11_a1b2c3…" \
  -H "Content-Type: application/json" \
  -d '{"challenge_id":"8f3e2a1b-…","clicked":"😀"}'

Response (200, success):

{
  "success": true,
  "session_token": "8f3e2a1b-….1735689600000.hmac_sig_here",
  "expires_in": 300
}

Response (200, failure):

{ "success": false, "error": "wrong_emoji" }

On success, you get a session_token — an HMAC-signed proof that this user solved the challenge. You can trust it or verify it later by calling /api/tools/emoji_bot/check-session.

Errors

Keep your API key secret. If it leaks, revoke it immediately by contacting us. Keys are stored hashed on our side — we can't recover a lost key, only issue a new one.

Current tools