Developer API

The Word Index offers a free, versioned JSON API over its compiled lexicon: constrained word search, definitions, rhyme families, anagrams, and random words. No key is required, and every response names the exact data version it was computed from. Definitions are the exception to full coverage: the compiled glosses are machine-generated, so only editorially reviewed words return one.

Quickstart

No signup, no key. One GET request:

curl "https://thewordindex.com/api/v1/query?pattern=c_t"

Response (abridged):

{
  "data": {
    "words": [{"word": "cat", "length": 3, "tier": 1, "syllables": 1}],
    "total": 1,
    "returned": 1,
    "offset": 0,
    "has_more": false
  },
  "meta": {
    "api_version": "v1",
    "source": "The Word Index compiled lexicon (source-bounded membership facts)",
    "data_version": "…",
    "build_id": "…",
    "attribution": "…",
    "docs_url": "…/developers",
    "terms_url": "…/terms"
  }
}

Base URL and versioning

All endpoints live under https://thewordindex.com/api/v1/. The v1 path segment is a compatibility promise: fields documented here are not renamed or removed within v1; new optional fields may be added. Breaking changes would ship as /api/v2/ with v1 kept running through a documented sunset window.

Results come from one compiled, versioned lexicon release. meta.data_version and meta.build_id identify it exactly; the source catalogue at /about/data records every source artifact, licence state, and limitation. Commonness tier values (1–5) are build-specific ranking bands for that release, not universal usage claims, and membership never implies validity in any specific word game.

By default all endpoints exclude spellings on the release's offensive-word list; pass safe=false to include them.

Endpoints

GET /api/v1/query Ranked matches for one constrained search

At least one constraint parameter is required.

Query parameters for /api/v1/query
ParameterTypeMeaning
patternstringPositional pattern; _ is an unknown letter (for example c_t).
lettersstringLetters the word must include (repeat a letter to require it twice).
length, min_length, max_lengthint 1–45Exact or bounded word length.
prefix, suffix, containsstringRequired start, end, or in-order substring.
max_tierint 1–5 (default 5)Restrict to build-specific commonness bands 1..max_tier.
limitint 1–100 (default 25)Page size.
offsetint 0–1000Page start.
safebool (default true)Exclude offensive-list spellings.
curl "https://thewordindex.com/api/v1/query?letters=aeg&length=7&max_tier=3"
GET /api/v1/define Published, human-reviewed glosses for one spelling

Published definition glosses for one spelling. This is not a universal dictionary, and coverage is deliberately narrow: the glosses compiled into the release are machine-generated, and we do not serve them until a human editor has reviewed that word for the exact release you are querying.

An empty definitions list therefore means either that the release compiled no gloss for the spelling or that its gloss is not published yet — never that the spelling has no meaning. The response carries a note field whenever the list is empty, and the record itself (word, length, tier, syllables) is still returned with status 200.

{
  "data": {
    "word": "listen",
    "length": 6,
    "tier": 1,
    "syllables": 2,
    "definitions": [],
    "note": "No definition is published for this spelling. …"
  },
  "meta": {…}
}
Query parameters for /api/v1/define
ParameterTypeMeaning
wordstring (required)1–45 letters a–z.
safebool (default true)Offensive-list spellings return 404 while true.
curl "https://thewordindex.com/api/v1/define?word=listen"
GET /api/v1/rhymes Perfect, near, and vowel rhyme families

Three rhyme families for one word — perfect, near (a limited coda comparison), and vowel — computed from retained CMUdict-derived pronunciation variants. Words without a retained pronunciation return empty families and a null rhyme_key.

Query parameters for /api/v1/rhymes
ParameterTypeMeaning
wordstring (required)1–45 letters a–z.
max_tierint 1–5 (default 5)Commonness band cap.
limitint 1–100 (default 25)Per-family result cap.
safebool (default true)Exclude offensive-list spellings.
curl "https://thewordindex.com/api/v1/rhymes?word=light&limit=10"
GET /api/v1/anagrams Exact letter-multiset matches

Words that use exactly the submitted letter multiset. The submitted spelling itself is excluded from results.

Query parameters for /api/v1/anagrams
ParameterTypeMeaning
lettersstring (required)1–45 letters a–z.
max_tierint 1–5 (default 5)Commonness band cap.
limitint 1–100 (default 25)Result cap.
safebool (default true)Exclude offensive-list spellings.
curl "https://thewordindex.com/api/v1/anagrams?letters=listen"
GET /api/v1/random Uniform samples from a constrained pool

A uniform random sample from the pool of words matching the constraints. Each request is independently random (this is not a word-of-the-day endpoint). matching_count reports how many words matched in total.

Query parameters for /api/v1/random
ParameterTypeMeaning
length, min_length, max_lengthint 1–45Exact or bounded word length.
prefixstringRequired starting letters.
countint 1–20 (default 5)Words per response.
max_tierint 1–5 (default 3)Commonness band cap.
safebool (default true)Exclude offensive-list spellings.
curl "https://thewordindex.com/api/v1/random?length=6&count=3"

Response envelope

Every successful response is {"data": …, "meta": …}. The meta block is identical across endpoints:

meta fields
FieldMeaning
api_versionAlways "v1" for this surface.
sourceWhat the data is: compiled, source-bounded membership facts.
data_version / build_idThe exact lexicon release the response was computed from.
attributionThe attribution line we ask you to keep with republished results.
docs_url / terms_urlThis page and the site terms.

Word records are the same everywhere: {"word", "length", "tier", "syllables"}. syllables is null when the release retains no pronunciation for the word. tier is a build-specific commonness band (1 = most commonly observed in the pinned frequency artifact), documented at /about/data.

Errors

Errors use one envelope, always served with Cache-Control: no-store:

{
  "error": {"code": "invalid_parameter", "message": "…", "status": 400},
  "meta": {"api_version": "v1", "docs_url": "…/developers"}
}
Error codes
StatusCodeMeaning
400missing_parameterA required parameter (or any constraint) was not supplied.
400invalid_parameterA parameter failed validation; the message names it.
404not_foundThe spelling is not available in this lexicon release.
429rate_limitedToken bucket exhausted; honour Retry-After.
503engine_busyAll shared engine execution slots are in use; honour Retry-After.

Requests with undeclared query parameter names terminate with a plain 404 before reaching the API (part of this site's URL contract), so check parameter spelling first when debugging.

Rate limits and fair use

Per-IP token bucket: sustained 5 requests/second with a burst of 20, shared across all v1 endpoints. That is deliberately generous for interactive applications; if you need sustained bulk throughput, please contact us instead of distributing load across IPs.

  • Cache responses on your side where you can; results are stable within one data_version.
  • Identify your application with a descriptive User-Agent.
  • Do not use the API to reconstruct and redistribute the full compiled lexicon; source licence review for bulk redistribution is not complete (see /about/data).
  • No SLA is offered; the API serves the same infrastructure as the site.

CORS and caching

All v1 GET responses include Access-Control-Allow-Origin: *, so browser clients on any origin can call the API directly with fetch. Only simple GET requests are supported — no preflighted methods, no credentials, no custom request headers required.

Successful responses are publicly cacheable for a short window (Cache-Control: public, max-age=60); error responses are never stored. The X-Data-Version response header mirrors meta.data_version.

Attribution

The API is free without a key. In return we ask that public applications showing our data include the meta.attribution line, or a link back to The Word Index, near the displayed results. The underlying source artifacts, their licences, and their current legal review states are catalogued at /about/data — please do not present membership in this lexicon as proof of universal English usage or of validity in any specific word game.

Try it