Today we are opening the Anagrama API v1 to all developers. The API provides programmatic access to the same curated word dictionary that powers every Anagrama game mode.
Whether you are building a Discord bot, a classroom vocabulary tool, a personal dashboard, or just experimenting with word data, the API is designed to be simple, fast, and well-documented.
API at a glance
What Is the Anagrama API?
The Anagrama API v1 is a developer-facing REST API that gives you programmatic access to the Anagrama platform. It lets you fetch words from our curated puzzle dictionary, retrieve the daily featured word, and integrate Anagrama word data into your own applications.
The API lives at the /api/v1 path and returns JSON for every response. It follows standard REST conventions with predictable URLs, meaningful HTTP status codes, and clear error messages.
Free to Use
The API is free and open during the beta period. No API key is required to get started.
Plan comparison
Select a column to highlight. All plans include access to the full Anagrama word engine.
Feature availability
Core API features and perks available on each plan.
Available Endpoints
The v1 API offers 7 endpoints across four sections — Words, Wordsets, Dictionary, and Puzzles. Every endpoint requires an API key passed via the X-API-Key header, no exceptions.
- Word API — random words, daily word, and word validation across 870+ languages
- Wordsets API — retrieve and filter custom word lists with optional letter scrambling
- Dictionary API (beta) — multilingual definitions, etymology, synonyms, and prefix search across 10M+ entries
- Puzzle API (beta) — generate complete Anagrama puzzles with hints, alternate answers, and definitions
Word API
Three endpoints for working with words — fetch random words, get the daily word, or validate whether a word exists in the dictionary.
GET /words/random
Returns one or more random words from the Anagrama dictionary. Filter by length and request up to 10 words at a time.
curl -H "X-API-Key: ak_your_key" \
"https://api.playanagrama.com/api/v1/words/random?count=3&minLength=5&maxLength=8"Fetch 3 random words between 5-8 letters
{
"words": ["cipher", "presto", "quartz"],
"count": 3
}Response
GET /words/daily
Returns the same word for all users on a given day. The word is deterministically seeded so everyone gets the same daily word. Supports timezone-aware date boundaries.
curl -H "X-API-Key: ak_your_key" \
"https://api.playanagrama.com/api/v1/words/daily?tz=America/New_York"{
"word": "enigma",
"date": "2025-05-15",
"timezone": "America/New_York"
}Response — same word for all users on this date
GET /words/validate
Check whether a word exists in the dictionary. Supports 870+ languages via the lang parameter. Returns the word, language, validity, and part of speech when available.
curl -H "X-API-Key: ak_your_key" \
"https://api.playanagrama.com/api/v1/words/validate?word=quixotic&lang=en"{
"word": "quixotic",
"lang": "en",
"valid": true,
"pos": "adj"
}Wordsets API
Retrieve custom word lists created via the developer dashboard. Filter by length, category, or request a random subset. All requests require an API key.
GET /v1/wordsets/:wordsetId
curl -H "X-API-Key: ak_your_key" \
"https://api.playanagrama.com/v1/wordsets/ws_abc123?limit=5&random=true&scramble=true"Fetch 5 random words from a wordset with scrambled letters
{
"wordsetId": "ws_abc123",
"name": "SAT Vocabulary",
"description": "Common SAT prep words",
"isPublic": false,
"words": [
{ "word": "aelcbnaa", "original": "balance", "category": "noun" },
{ "word": "tpraseci", "original": "practice", "category": "noun" }
],
"wordCount": 5,
"totalWordCount": 248
}Scramble mode
Pass scramble=true to receive letter-scrambled versions of words — useful for building anagram games with your own word lists.
Dictionary API (Beta)
Full multilingual dictionary with definitions, etymology, synonyms, antonyms, related words, and more. Covers 871 languages with over 10 million entries.
GET /dictionary/:word
Look up any word for definitions, etymology, forms, synonyms, antonyms, and related words. Use exact=false for prefix search. Filter results by part of speech or specific fields.
curl -H "X-API-Key: ak_your_key" \
"https://api.playanagrama.com/api/v1/dictionary/ephemeral?lang=en&fields=definitions,synonyms&examples=true"{
"word": "ephemeral",
"lang": "en",
"results": [
{
"pos": "adj",
"definitions": [
{
"text": "lasting for a very short time",
"examples": ["the ephemeral nature of fashion trends"]
}
],
"synonyms": ["transient", "fleeting", "momentary", "brief"]
}
]
}GET /dictionary/languages
List all available dictionary languages with entry counts. Results are sorted by entry count and cached for 5 minutes.
curl -H "X-API-Key: ak_your_key" \
"https://api.playanagrama.com/api/v1/dictionary/languages"Puzzle API (Beta)
Generate complete Anagrama puzzles programmatically — including the target word, scrambled letters, a letter pool with decoys, pre-computed hints, alternate valid answers, and definitions.
GET /puzzles/generate
Generate a puzzle at a specified difficulty level. Easy puzzles use 4-5 letter words with 0-1 extra letters, medium uses 5-6 with 1-2 extra, and hard uses 6-7 with 3-4 extra. All puzzles allow 5 attempts and up to 3 hints (0 in hard mode).
curl -H "X-API-Key: ak_your_key" \
"https://api.playanagrama.com/api/v1/puzzles/generate?difficulty=medium"{
"seed": "a7f3c2d1",
"difficulty": "medium",
"target": "cipher",
"scramble": "hprice",
"pool": ["c", "i", "p", "h", "e", "r", "t"],
"wordLength": 6,
"maxAttempts": 5,
"maxHints": 3,
"hints": [
{ "position": 0, "letter": "c" },
{ "position": 3, "letter": "h" },
{ "position": 5, "letter": "r" }
],
"alts": ["enrich", "richen"],
"definitions": {
"cipher": "a secret or disguised way of writing; a code"
},
"metadata": {
"vowelCount": 2,
"hasRepeats": false,
"poolSize": 7,
"altCount": 2
}
}Reproducible puzzles
Pass a seed value to regenerate the exact same puzzle — useful for multiplayer games or sharing specific puzzles with friends.
Authentication and Rate Limits
All API requests require an API key passed in the X-API-Key header. Create and manage keys from the Developer Dashboard. The free tier includes 2 keys with 100 requests per day — upgrade for higher limits.
Rate limit headers
Every response includes X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers for daily limits, plus X-Weekly-Limit, X-Weekly-Remaining, and X-Burst-Limit for weekly and per-minute burst limits. Exceeding any limit returns 429 Too Many Requests with a Retry-After header.
Getting Started
Full documentation is available at the links below. The quickest way to get started is to create a free account, generate an API key, and make your first request.
import requests
# Fetch 5 random words
response = requests.get(
"https://api.playanagrama.com/api/v1/words/random",
params={"count": 5, "minLength": 5},
headers={"X-API-Key": "ak_your_key"}
)
words = response.json()["words"]
print(words)Python quick start
// Fetch the daily word
const res = await fetch(
"https://api.playanagrama.com/api/v1/words/daily",
{ headers: { "X-API-Key": "ak_your_key" } }
);
const { word, date } = await res.json();
console.log(`Today's word: ${word} (${date})`);JavaScript quick start