Independent dice for online games

Rolls nobody on the server can fudge.

RandomDice.org issues cryptographically secure, unbiased integers and a public receipt for every roll. Players can check the number. Studios cannot silently “set” the die.

Get a free API key

Free for 10,000 calls per UTC day per key. Need more? Contact us.

Demo roll · d6

Purpose

Players should not have to trust the house RNG.

In a hosted game, the studio owns the server. A “random” die can be weighted, rerolled, or swapped after the fact. That is a setup, not a roll. RandomDice.org sits outside the game: the server asks us for a number, we generate it with PHP random_int() (a CSPRNG), and we publish the last 15 minutes of rolls for each listed game — including the required player_name — so anyone can check the value.

  • Unbiased range. Uniform integers from min to max, default 1–6.
  • Public rolls. The last 15 minutes of rolls for each listed game are viewable by anyone — player nickname, values, request parameters, and timestamps. Click a client logo and search your nickname.
  • Public receipt. Every call also returns an id and verify_url.
  • Free quota. 10,000 API calls per UTC day per key. Above that, contact us.

Clients

Games that already roll in the open.

These studios call RandomDice.org for combat, loot, or table rolls. Click any logo to open that game’s public roll log — rolls from the last 15 minutes, the required player_name, request parameters, and timestamps. Search your nickname on that page. A game that shows a different number than the log is not using our result. Placeholder logos will be replaced as real listings are approved.

How to use

One JSON API. Call it from anything.

Works from a browser address bar, curl, fetch, Python, Java, Godot HTTP, Unity, SOAP-era backends that can POST JSON — anything that can hit HTTPS. Authenticate with a Bearer token, X-Api-Key, or query api_key.

Endpoint

GET or POST https://randomdice.org/api/v1/roll

Parameters

player_name (required, 1–40 characters), min (default 1), max (default 6), count (1–100, default 1). Authenticate with Authorization: Bearer, X-Api-Key, or query api_key (handy for a GET in the browser). Optional custom string parameters: pass them as extra fields or in a params object — at most 10, keys and values at most 32 characters. They are stored and shown on the public log. Calls without player_name are rejected. One HTTP request counts as one quota call even when count is a batch.

Quota

10,000 calls per UTC day. Headers: X-RateLimit-Limit, Remaining, Reset. Over quota returns 429.

Browser GET — paste in the address bar:
https://randomdice.org/api/v1/roll?api_key=rd_live_YOUR_KEY&player_name=FlashMan&min=1&max=6&count=1
curl -H "Authorization: Bearer rd_live_YOUR_KEY" \
  "https://randomdice.org/api/v1/roll?player_name=FlashMan&min=1&max=6&count=1&match_id=arena-12"
fetch("https://randomdice.org/api/v1/roll", {
  method: "POST",
  headers: {
    "Authorization": "Bearer rd_live_YOUR_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    player_name: "FlashMan",
    min: 1,
    max: 6,
    count: 3,
    params: { match_id: "arena-12", round: "3" }
  })
})
import requests
r = requests.get(
  "https://randomdice.org/api/v1/roll",
  params={"player_name": "FlashMan", "min": 1, "max": 20, "count": 1, "match_id": "arena-12"},
  headers={"Authorization": "Bearer rd_live_YOUR_KEY"},
)
print(r.json())

Success includes player_name, params, values, id, verify_url, and (once the game is listed) public_log_url. Show those links to players. The last 15 minutes of rolls are public on the game page and searchable by nickname, including any custom parameters you sent. Errors are JSON: { "ok": false, "error": { "code", "message" } }.

Get API key

Issue a key in one step.

No wait for approval. The key is shown once on this page and emailed to you. Quota starts at 10,000 calls / UTC day. You will paste this same key when you submit your game so the homepage logo can open your public roll log.

Captcha image

Submit

List your game and get a certificate stamp.

This does not gate the API. It is the verified Clients directory and public roll log. Paste the full API key you generated above — after we approve the listing, your logo on the homepage is clickable and opens the last 15 minutes of rolls, filterable by player nickname. Pending listings sit in our queue until we approve or reject them by email.

Required. Paste the full key from Get API key (not the short prefix). We store a link to that key, not the secret. After approval, clicking your logo shows this game’s last 15 minutes of rolls with a player-name filter.

Captcha image

Contact us

Quota, partnerships, or a problem with a roll.

We do not publish a mailbox on this page. Send the form and we reply to the address you enter.

Captcha image