Open Source Projects — entry 003 of 8
Datamuse
Datamuse is a free word-finding query engine for autocomplete, rhyme, and meaning-based lookups; a live unauthenticated GET against `api.datamuse.com/words` returned a 200 JSON array with `Access-Control-Allow-Origin` echoing the request Origin plus `Access-Control-Allow-Credentials: true`, resolving cors "unknown" to "yes". Its own homepage now states that starting January 1, 2027 an API key will be required on every request (capped at 100,000/day per key) after more than a decade of fully free access — as of this check the API still works with no key at all.
Datamuse's core word-finding engine takes constraint query params (`rel_rhy`, `sp`, `ml`, ...) and ranks matches by relevance score. A live GET to `/words?rel_rhy=forgetful&max=3` returned a 200 JSON array of `{word,score,numSyllables}` objects, and `access-control-allow-origin` echoed back the exact request `Origin` (not a bare `*`) alongside `access-control-allow-credentials: true` — both confirmed by this run's own probe, not carried over from the stored summary.
GreatAPIs Score
Auth quickstart
- No API key or signup required today — every probe in this file returned data with no auth header sent at all.
- Datamuse's own homepage states: "starting January 1, 2027, an API key will be required in all requests, and access will be limited to 100,000 requests per day per API key" — quoted here rather than restated, since as of this run's check the API still answers fully keyless with no such requirement enforced yet.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Find words that rhyme with "forgetful"
GEThttps://api.datamuse.com/words?rel_rhy=forgetful&max=3
[{"word":"fretful","score":20029,"numSyllables":2},{"word":"regretful","score":9029,"numSyllables":3},{"word":"threatful","score":12,"numSyllables":2}]Captured byte-for-byte from this run's live probe. `score` is a relevance rank, not a literal count, and the exact set/order can shift as Datamuse's underlying word-frequency corpus is updated — the three-word shape and field names are what's stable.
Developer reference
https://api.datamuse.comGotchas & limits
- An unrecognized query param is silently ignored rather than rejected: a live GET to `/words?sp=f??gettable&zzzznotreal=abc&max=3` still returned a normal 200 `[{"word":"forgettable","score":4023}]`, with the bogus `zzzznotreal` param having no effect at all — a client mistyping a param name gets no error to catch it.
- A call with no recognized constraint params doesn't error, it returns an empty result: a live GET to `/words` (no query string) returned HTTP 200 with body `[]` — a client checking only the status code can't tell a malformed/empty query from a legitimately empty match set.
- CORS is genuinely permissive but not via a bare wildcard: a live GET with `Origin: https://example.com` returned `access-control-allow-origin: https://example.com` (echoing the request Origin) plus `access-control-allow-credentials: true`, not `access-control-allow-origin: *` — relevant if a client library treats those two differently.
- `/words` isn't the only endpoint: `GET /sug?s=rea&max=3` is a second, live, documented autocomplete route and returned its own ranked array, `[{"word":"reason","score":32056},{"word":"realm","score":29041},{"word":"reach","score":28067}]` — separate from the constraint-based `/words` search.