For game creators · version 0.2.0

Two lines. Results for every player.

The Alldle SDK tells you how players actually do in your game — win rate, guesses, how hard each puzzle was — wherever they play it. And it puts your game in Alldle players' daily ritual, where finishing it counts toward their streak. Free, no account on your players' side.

Install

One script tag with your slug — the end of your game's Alldle address, alldle.net/game/your-game-slug. It creates a ready alldle object; you only call it when a round ends.

<script src="https://www.alldle.net/sdk.js" data-game="your-game-slug"></script>
<script>
  // when the player finishes a round
  alldle.completeMode('classic', { won: true, attempts: 3, maxAttempts: 6 });
</script>

In production, pin the version — this file never changes and is cached for a year:

<script src="https://www.alldle.net/sdk/0.2.0/sdk.js" data-game="your-game-slug"></script>

Or from npm, with types:

npm i @alldle/sdk

import { Alldle } from '@alldle/sdk';

const alldle = new Alldle({ gameSlug: 'your-game-slug' });
alldle.completeMode('classic', { won: true, attempts: 3, maxAttempts: 6 });

Report rounds

completeMode() when a round ends, won or lost. startMode() is optional: it measures time per round and shows how many rounds are abandoned.

// When a round starts (optional: measures time and abandoned rounds)
alldle.startMode('classic');

// When the player finishes, won or lost
alldle.completeMode('classic', {
  won: true,
  attempts: 3,
  maxAttempts: 6,
  puzzleId: '1172' // your puzzle number, if it has one
});

The completion payload

Only won is required; sending nothing else is a perfectly good integration.

won boolean required
Whether the player solved it.
attempts number
How many tries they used.
maxAttempts number
How many your game allows, so Alldle can show "3/6" rather than "3".
puzzleId string
Your identifier for the puzzle, e.g. "1172". One result per player and puzzle is kept, and your dashboard ranks puzzles by how hard players found them. Without it, one result per player, mode and day.
durationMs number
How long they took. Measured for you from startMode() when you leave it out.
score number
Your own score, if you keep one. Alldle stores it without interpreting it.
resultGrid string
Your emoji block, exactly as your players already share it. Send the grid; the caption line is dropped, because Alldle writes that line itself. Emoji, digits, spaces and basic separators only — at most 12 rows and 400 characters.

What you get for it

Results for every player, free

Win rate, guess distribution, time per round and abandoned rounds in your creator dashboard — for everyone who plays, on Alldle and on your own site, signed in or not.

How hard each puzzle was

Every puzzle against your usual win rate, so a word that was too obscure shows up the same day, not in the comments.

Your game in players’ daily ritual

A round finished inside Alldle, or on your site by a player Alldle sent, ticks your game off in their lineup and counts toward their streak. Your game page says so.

What Alldle brings you, measured

Rounds by players who came from Alldle are counted apart from your own players.

Check it works

Open your game's SDK page in the creator dashboard and finish a round: it shows up under Live results within seconds, from localhost too. Add data-debug to the script tag to see every call in the console; a slug or domain mistake is always reported there.

Ask what is already done today

For your own "come back tomorrow" screen, without keeping a record of it yourself.

const status = await alldle.getDailyStatus();
if (status?.modes['classic']?.completed) {
  showComeBackTomorrow();
}

Good to know

  • Results are accepted from your game’s own domain and its subdomains, from Alldle’s frame, and from localhost. Localhost results appear live on your SDK page marked “Test” and are never counted.
  • No cookies. Players are a random id in your domain’s local storage, so a result is counted once; nothing that identifies them is sent.
  • Requests are text/plain with keepalive: no preflight, and they still go out when the tab closes. Nothing the SDK does can throw into your game.
  • Coming from 0.1? Nothing to change: AllDle and AllDleSDK.AllDle still work, and results now reach your dashboard from every player instead of signed-in ones inside Alldle only.