Skip to content

Limits

The API is free and unauthenticated, so it is bounded. Every number below is read from the same file the API enforces, so this page cannot drift from the guard.

These hold whether you call the API or use the package directly.

Limit Value
Dice per roll 1000, counted across every term
Explosions per die 100
Formula length 1000 characters
Bonuses per roll 100
Largest total must stay an exact whole number

A formula that asks for more dice than that is refused rather than truncated. Past 2^53 JavaScript stops counting exactly, so a total beyond it would be quietly wrong rather than large.

Limit Value
Request body 8 KB
Formula length 200 characters
Bonuses per roll 20
Tags per roll 20, each at most 32 lowercase letters
Rolls per batch 20
Dice per request 1000, counted across every roll in a batch
Rate limit 60 requests every 60 seconds, per address

The formula limit is shorter than the package’s because this is the public tier. Formulas that long are generated rather than typed.

Across a whole request, not per roll. A batch of 20 rolls asking for 100 dice each is 2000 dice and is refused, though each roll would be legal alone.

The count comes from the parsed formula rather than from the roll, so a formula is charged for every die it throws rather than for the dice it keeps: 4d20adv costs four. The API parses every formula in a request, sums the dice, and refuses before rolling anything.

Per address, and per Cloudflare location rather than globally — so the number reachable worldwide is higher than 60, and a retry may succeed sooner than the window suggests. It is a guard against abuse rather than a quota to plan against.

period accepts only 10 or 60 seconds, so the window is not freely adjustable.

Survive the limits covers backing off a 429, splitting a batch to stay inside the dice budget, and what each refusal means for a retry.

The package enforces only the first table. It has no rate limit and no request budget, because it is not sharing a server with anyone — Package or API weighs that against what the API gives you.