Sloth Lee — a ninja sloth with nunchucksSloth LeeThe slowest ninja alive · watching your Discord

Public API

Public Sloth Lee API.

A handful of endpoints are public — stats, health, badges, beta signup. The full authenticated dashboard API (200+ endpoints for guilds, moderation, tickets, AutoMod, audit, etc.) lives behind login but has its own browseable docs.

Quickstart

  • Base URL: https://api.slothlee.xyz (or https://slothlee.xyz — both work).
  • Auth:Public endpoints don't need auth. Authenticated endpoints use a session cookie set by Discord OAuth — see the full Swagger UI.
  • Rate limits: Stricter for unauthenticated requests. Default 100/min per IP for read-only endpoints, 10/hour for write endpoints. 429 on overage with Retry-After header.
  • Format: JSON in, JSON out, except for badge endpoints which return SVG.
  • CORS: Public endpoints set Access-Control-Allow-Origin: *so they're cross-domain embeddable. Authenticated endpoints don't — that's deliberate.

Endpoints

GET/api/public/statscache: 60s

Live guild and member count, plus latency, version, and online flag. Returns both new (`guild_count`, `member_count`) and legacy (`guilds`, `members`) field names for backwards compatibility.

{
  "guild_count": 142,
  "member_count": 18420,
  "commands_today": 3214,
  "bot_online": true,
  "bot_stale": false,
  "latency_ms": 87,
  "version": "1.4.2",
  "guilds": 142,
  "members": 18420
}
GET/api/public/healthcache: 30s

Multi-source liveness for the public status page. Each component (bot, dashboard, api, redis) reports operational / degraded / down independently. Includes any active incidents from the dashboard's incident composer.

{
  "checked_at": "2026-05-04T15:30:00Z",
  "overall": "operational",
  "components": [
    {"key": "bot", "name": "Discord bot", "status": "operational", "detail": "87ms gateway latency"},
    {"key": "dashboard", "name": "Web dashboard", "status": "operational", "detail": "Web HQ + database reachable"},
    {"key": "api", "name": "Public API", "status": "operational", "detail": "Public API responding"},
    {"key": "redis", "name": "Cache (Redis)", "status": "operational", "detail": "Cache + pub/sub reachable"}
  ],
  "incidents": [],
  "stats": { /* same as /api/public/stats */ }
}
GET/api/badge/stats.svgcache: 60s

Shields-style live stats badge — `Sloth Lee · 142 servers · 18.4k members`. Embeddable as an `<img>` on any site.

<img src="https://api.slothlee.xyz/api/badge/stats.svg">
GET/api/badge/guilds.svgcache: 60s

Compact server-count badge — `Sloth Lee servers · 142`.

<img src="https://api.slothlee.xyz/api/badge/guilds.svg">
GET/api/badge/status.svgcache: 30s

Live overall-status badge. Three states: `operational` (green), `degraded` (yellow), `down` (red).

<img src="https://api.slothlee.xyz/api/badge/status.svg">
GET/api/badge/version.svgcache: 5min

Current dashboard version badge — useful in changelog readers and ops dashboards.

<img src="https://api.slothlee.xyz/api/badge/version.svg">
POST/api/beta/signuprate-limit: 3 per hour, 10 per day

Submit a beta-program application. Body is JSON with `email` (required), and optional `discord_handle`, `guild_size`, `use_case`, `referrer` fields. Returns the user's waitlist position and the team's recent acceptance rate.

// Request
fetch("https://slothlee.xyz/api/beta/signup", {
  method: "POST",
  headers: {"Content-Type": "application/json"},
  body: JSON.stringify({
    email: "you@example.com",
    discord_handle: "yourhandle",
    use_case: "Moderating a 500-person book club",
  }),
});

// Response
{
  "ok": true,
  "position": 47,
  "weekly_acceptance_rate": 8
}

API change policy

Breaking changes to public endpoints get at least 30 days' notice in the changelog and an entry in our RSS feed. We deliberately ship new field names + retain old aliases for at least one minor version (the guild_count/guilds dual-emit on /api/public/stats is an example).

For non-breaking additions (new fields, new endpoints, looser rate limits) — no advance notice; they ship and we mention them in the next release notes.

Authenticated API

Full Swagger UI for the dashboard API.