Reference
API documentation
Every endpoint is served from /api/public/v1 and requires an approved API key. Create one from the dashboard.
Authentication
Send your key as a bearer token. x-api-key and ?key= are also accepted.
curl https://your-domain/api/public/v1/filters \ -H "Authorization: Bearer lll_your_key_here"
Identity forwarding
If you build a bot or app on top of the API, tell us who your end user is. Each user then gets their own upstream allowance, so one heavy user can't rate-limit everyone else. The caller's IP is always forwarded automatically.
X-Forward-User-Uuidheader or?uuid=— a stable UUID for the user in your app.X-Forward-Discord-Idheader or?discord=— the user's Discord snowflake.
Per-user buckets allow 10 checks/minute and 200/hour. Always send the same value for the same person — never a random value per request, and never your own server's IP.
curl https://your-domain/api/public/v1/check/cleanbrowsing/example.com \ -H "Authorization: Bearer lll_your_key_here" \ -H "X-Forward-Discord-Id: 1234567890123456789"
Limits
- 60 requests per minute per key.
- Up to 5 active keys per account.
- Free web checker: 20 links per run, 200 links per hour per IP.
Endpoints
/api/public/v1/filtersReturns every filter id available for checks, plus its display name and category.
{
"filters": [
{ "id": "cleanbrowsing", "name": "CleanBrowsing", "kind": "dns" }
]
}/api/public/v1/lightspeed/:siteLightSpeed content scan. Fetches the site and scores its page for game and proxy signals, returning a verdict of DETECTED, Not Detected or Unavailable, plus the scores and matched signals.
curl "https://your-domain/api/public/v1/lightspeed/example.com" \
-H "Authorization: Bearer lll_your_key_here"
{
"site": "example.com",
"verdict": "Not Detected",
"gameScore": 0,
"proxyScore": 0,
"gameDetected": false,
"proxyDetected": false,
"signals": { "gameText": [], "proxyBrands": [] },
"ms": 210
}/api/public/v1/lightspeedBatch LightSpeed scan: up to 20 sites per request, one full result each.
curl -X POST "https://your-domain/api/public/v1/lightspeed" \
-H "Authorization: Bearer lll_your_key_here" \
-H "Content-Type: application/json" \
-d '{"sites":["example.com","another-site.org"]}'
{
"results": [
{ "site": "example.com", "verdict": "Not Detected", "gameScore": 0, "proxyScore": 0, "...": "..." }
],
"rejected": []
}/api/public/v1/check/:filter/:siteChecks one site against one filter.
{
"site": "example.com",
"filter": "cleanbrowsing",
"status": "unblocked",
"category": null,
"ms": 82
}/api/public/v1/bulkChecks many sites against many filters in one call (max 50 sites × 10 filters).
curl -X POST https://your-domain/api/public/v1/bulk \
-H "Authorization: Bearer lll_your_key_here" \
-H "Content-Type: application/json" \
-d '{"links":["example.com"],"filters":["cleanbrowsing","quad9"]}'/api/public/v1/check-all/:siteChecks a site against every filter. Streams server-sent events by default; append ?mode=static for a single JSON response.
curl -N "https://your-domain/api/public/v1/check-all/example.com?key=lll_your_key_here" curl "https://your-domain/api/public/v1/check-all/example.com?mode=static" \ -H "Authorization: Bearer lll_your_key_here"
/api/public/v1/gen-api-keyOwner keys only. Mints a new API key and attaches the requester's details, so a third-party bot can hand out keys. Every mint is logged.
curl -X POST https://your-domain/api/public/v1/gen-api-key \
-H "Authorization: Bearer lll_owner_key" \
-H "Content-Type: application/json" \
-d '{"discord_id":"1234567890","username":"someone","email":"someone@example.com"}'/api/public/v1/meReturns the account behind a key: weekly quota, key tier, and the linked Discord account (ID, username, email and every server the user is in). When no Discord account is connected the response includes a connect_url to start linking.
curl https://your-domain/api/public/v1/me \ -H "Authorization: Bearer lll_your_key_here"
/api/public/v1/discord/:idOwner keys only. Looks up a linked Discord account by Discord ID, username or account email — useful for bots that need to resolve who a key belongs to.
curl https://your-domain/api/public/v1/discord/1234567890 \ -H "Authorization: Bearer lll_owner_key"
Connect Discord
- 1. Sign in and open your dashboard.
- 2. Press “Link your Discord” and approve the Discord consent screen.
- 3. We store your Discord ID, username, email and server list — readable through
/api/public/v1/me.
API calls are mirrored to the owner’s Discord log channel; owner-tier accounts are never logged.
/logoThe LLLogan mark as a raw PNG — safe to hotlink in embeds and bots.
https://your-domain/logo
/api/public/statusNo key required. Current health plus 24h uptime history: hourly buckets and recent incidents.
{
"status": "operational",
"latencyMs": 331,
"history": {
"uptime24h": 0.998,
"hours": [{ "start": "...", "uptime": 1, "state": "operational", "samples": 58 }],
"incidents": [{ "start": "...", "end": "...", "state": "degraded", "samples": 2 }]
}
}Errors
401— missing, invalid or revoked key.403— account not approved yet.429— rate limit exceeded.
Filter catalogue (27)
aristotlek12blocksiblocksiaiciscocleanbrowsingcontentkeeperdeledaodnsfilterforcepointfortiguardgagglegoguardianv2goguardianv3haparaibosslanschoolv1lightspeedlimewizepaloaltoquestitosecurlysensosmoothwallv1smoothwallv2sophostudentkeeperzscaler