DiceplotsPlatforms → API

Diceplots API private beta

Three tiers, the same Rust engine. Free unauthenticated for casual integration, free registered for serious development, paid for production traffic. Auth, accounts, and per-tier rate limits are live today; endpoints ship alongside the next engine release.

Reserve a key → Manage existing keys

Tiers

Tier Auth Rate limit Suitable for
Free unreg None — anonymous 30 requests / minute / IP Try-it-out, scripts, low-volume integrations.
Free reg Account + API key 300 requests / minute / key Personal projects, dev work, low-traffic apps.
Paid API key on a paid account 3,000 requests / minute / key Production traffic, embedded engine calls, latency-sensitive use.

Per-key limits are tracked by sliding-window in ETS; the free-unreg bucket is keyed by remote IP (with X-Forwarded-For handled at Caddy). On limit exceeded, the API returns 429 with a JSON body naming the resolved tier and the per-window cap. Paid-tier pricing and bulk-purchase contact are below.

Status

The auth, accounts, API-key management, and per-tier rate limiting are all live in production today. Endpoints are in private beta — every /api/v1/* request currently returns 501 Not Implemented with a JSON body naming the caller's resolved tier so you can kick the tires on auth and rate-limiting now and integrate against the stub without waiting for endpoints to ship:

$ curl -i https://diceplots.com/api/v1/strike
HTTP/2 501
content-type: application/json

{
  "error": "not_implemented",
  "message": "Diceplots API endpoints are in private beta ...",
  "resolved_tier": "free_unreg",
  "see": "https://diceplots.com/platforms/api"
}

With a key:

$ curl -H "Authorization: Bearer dp_live_..." https://diceplots.com/api/v1/strike
{ "resolved_tier": "free_reg", ... }

Endpoints (private beta)

  • Strike — POST one expression + optional HP, get the full distribution + kill probability as exact rationals. Same shape as /strike/:slug but JSON-shaped for programmatic consumers.
  • Compare — POST two expressions + HP, get the kill-probability crossover point and per-expression distributions side by side.
  • Strikes-to-kill — expected number of strikes + cumulative kill curve. Optional Markov rounds-to-kill with per-round healing for the gambler's-ruin family.
  • Cascades — GWM-on-kill, PAM glaive haft, configurable cascade depth + queue HP. The same machinery that powers the cascade pillar.

Accounts and keys

Sign up at /sign-up with email and password — confirmation link arrives in your inbox; the account is usable immediately at the free_reg tier. The account dashboard manages keys end-to-end: create, copy-once, revoke, last-used timestamps. Keys are bcrypt-hashed at rest with a public prefix for identification; the plaintext is shown exactly once at creation.

Paid-tier pricing is per-engagement — drop a line to tom@defensiblelogic.com with the rough call volume and integration shape and we'll come back with terms.

Want the engine without the network round-trip? License the engine directly — same Rust core, no API quota to manage.