FreeDict

Diccionario de inglés para aplicaciones de IA: definiciones, ejemplos, pronunciación, sinónimos, rimas, orígenes de palabras, jerga y traducciones.

Servidor MCP alojado

npx add-mcp 'https://freedict.com/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

English dictionary, thesaurus, translations & etymology

Dictionary API documentation

Everything you need to call the API: authentication, every endpoint, the MCP server for AI apps, rate limits and errors, with examples in cURL, Python and JavaScript.

Your API key

Get a free key from Account → API (you will need a verified FreeDict account). Send it in the X-API-Key header on every request. Keep it on your server; never put it in front-end code.

Base URL: https://freedict.com/api/v1. Every response is JSON. Successful responses wrap the result in data; errors come back as error with a code and a message, and never with a 200 status.

Building a client, or pointing an AI tool at the API? The whole API is described in an OpenAPI 3.1 file (no key needed to read it), and llms.txt is the plain-text summary for AI apps.

Look up a word

GET /words/{word}?locale=en-US

locale is required: en-US, en-GB or en-AU. It picks the pronunciation (British and Australian callers get the UK transcription where one exists).

curl "https://freedict.com/api/v1/words/serendipity?locale=en-US" \
  -H "X-API-Key: YOUR_KEY"

Python:

import requests

r = requests.get(
    "https://freedict.com/api/v1/words/serendipity",
    params={"locale": "en-US"},
    headers={"X-API-Key": "YOUR_KEY"},
    timeout=10,
)
entry = r.json()["data"]
print(entry["definition_short"])

JavaScript (Node 18+):

const res = await fetch(
  "https://freedict.com/api/v1/words/serendipity?locale=en-US",
  { headers: { "X-API-Key": process.env.FREEDICT_KEY } }
);
const { data } = await res.json();
console.log(data.definition_short);

The response includes: word, slug, length, pos, definition_short, definitions (each with pos, sense and register), pronunciation_ipa, respelling, cefr_level and flags (proper_noun, offensive, hyphenated, multiword), plus source information for the record. A word that is not in the dictionary returns 404 word_not_found.

Everything in one call

Add include to a word lookup to get more in the same response: examples, synonyms, etymology, forms, frequency, usage, faqs and translations. Anything your plan doesn't cover is listed under locked instead of failing the call.

curl "https://freedict.com/api/v1/words/serendipity?locale=en-US&include=examples,synonyms,etymology" \
  -H "X-API-Key: YOUR_KEY"

All tools

Every tool has its own endpoint under https://freedict.com/api/v1/. Parameters go in the query string.

EndpointWhat it returnsPlan
GET /words/{word}Look up a word The full entry: every definition with its part of speech, IPA (US or UK), an easy respelling, CEFR level and content flags. Add include to get examples, synonyms, origin, forms, usage notes, FAQs and translations in the same call. Parameters: locale, include.Free
GET /words/{word}/examplesExample sentences Example sentences for each meaning.Free
GET /words/{word}/synonymsSynonyms and antonyms Synonyms, antonyms, broader and narrower terms (oak is a kind of tree), part-of and has-parts (trunk is part of a tree) and related words, grouped by meaning.Free
GET /words/{word}/rhymesRhymes Words that rhyme by sound, common words first and names last. Choose perfect rhymes, near rhymes or consonant matches. Parameters: limit, type.Free
GET /words/{word}/soundsPronunciation and homophones How a word sounds: phonemes, syllable count, IPA and words that sound the same (course, coarse).Free
GET /sounds-likeSounds like Find a word from how it sounds, even misspelled: "jirraf" finds giraffe. Parameters: q, limit.Free
GET /words/{word}/translationsTranslate a word Translations into 34 languages, with part of speech and a romanised form for non-Latin scripts. Pass lang for one language. Parameters: lang.Free
GET /word-of-the-dayWord of the Day Today's Word of the Day with its full entry, or a past day's with date. Parameters: date.Free
GET /words/randomRandom word A random common word with its full entry, optionally filtered by CEFR level or part of speech. Parameters: cefr_level, pos.Free
GET /autocompleteAutocomplete Up to 10 words starting with what someone has typed, most common first, with a short meaning. If nothing starts with it, the real words it was probably meant to be ("recieve" gives receive), with corrected: true. Parameters: q.Free
GET /words/{word}/etymologyWord origin Where the word comes from: origin language, first known use and the story of how it reached English.Starter
GET /words/{word}/formsWord forms Plurals, verb tenses, comparatives and spelling variants.Starter
GET /words/{word}/frequencyWord frequency How common the word is: its rank among English words and its CEFR level.Starter
GET /slang/{term}Slang meaning What a slang term means, an example, where it came from and when it appeared, from 9,846 slang terms.Starter
GET /unscrambleUnscramble letters Every word that can be made from a set of letters, longest first. Use? for a blank tile. Parameters: letters, length.Starter
GET /wordsFind words One search for any mix of spelling (pattern t??k or un*able, starts, ends, contains, length), sound (sounds like, rhymes with), meaning ("ringing in the ears"), company (adjectives for a noun, what follows a word), kind-of and part-of, syllables, part of speech and CEFR level. A misspelled pattern still finds the word. Common words first, or in meaning, sound or company order. Each result has its definition, level and syllables; add examples or translations in the same call. Parameters: pattern, starts_with, ends_with, contains, length, length_min, length_max, syllables, pos, cefr_level, sounds_like, rhymes_with, rhyme_type, meaning, adjectives_of, nouns_of, after, before, broader, narrower, part_of, has_parts, vocabulary, exclude_flags, include, lang, seed, limit, offset.Free
GET /words/{word}/usageUsage guide Usage notes: a plain-English meaning, common mistakes, common word pairings, easily confused words, formality, UK and US differences and a learner tip.Pro
GET /compareCompare two words The difference between two easily confused words (affect vs effect), with a quick answer, an explanation and FAQs. Parameters: a, b.Pro
GET /words/{word}/faqsQuestions about a word Common questions about a word with short answers: meaning, spelling, pronunciation, plural, opposite.Pro
GET /words/{word}/quizQuiz questions Multiple-choice questions about a word (meaning, synonym, origin), with the answer and an explanation. Parameters: max.Pro
GET /translate/reverseForeign word to English The English word for a word in another language, e.g. "fauché" (French) → broke. Parameters: lang.Pro

AI apps (MCP)

The same tools are available to AI apps through our MCP server at https://freedict.com/mcp. People sign in with their FreeDict account, and calls count toward their plan. The quickest setup is to paste this into the AI app's chat:

Read and follow https://freedict.com/agent-onboarding/SKILL.md

It supports Streamable HTTP, OAuth 2.1 with PKCE, dynamic client registration and the standard .well-known discovery, so any MCP client can add it by URL.

Translations

Add include=translations to a word or batch request to get translations in all 34 languages, grouped by language, each with the part of speech, a short gloss where there is one and a romanised form for non-Latin scripts.

curl "https://freedict.com/api/v1/words/peace?locale=en-GB&include=translations" \
  -H "X-API-Key: YOUR_KEY"

Batch lookups Starter and above

POST /words/batch with a JSON body of up to 500 words. Words that are not found are listed in not_found. A batch request counts as one call.

curl -X POST "https://freedict.com/api/v1/words/batch" \
  -H "X-API-Key: YOUR_KEY" -H "Content-Type: application/json" \
  -d '{"locale": "en-US", "words": ["apple", "banana", "cherry"]}'

Find Words Every plan

GET /words is one search that takes any mix of filters and returns only the words that pass all of them. Each result carries its definition, CEFR level and syllable count, so there is no second call to explain what you found. GET /words/query without a seed is the same search.

ParameterWhat it does
pattern (or sp)Wildcard spelling. ? is any one letter and * is any run of letters: t??k, un*able, *tion. Up to 30 characters. A pattern with * needs at least one letter. A pattern with no ? or * that is not a word of ours is read as a misspelling: sp=recieve returns receive and its nearest matches by spelling, sound and how common they are, order is spelling and corrected_from echoes what you typed.
starts_with, ends_with, containsLetters the word must start with, end with or contain.
length, length_min, length_maxNumber of letters.
syllablesA number, or a comma list such as 2,3. A word with no pronunciation on file has no syllable count, so it never matches this filter.
posComma list: noun, verb, adjective, adverb (or n, v, adj, adv).
cefr_levelComma list from a1 to c2. Only levels we state for the word count: a level estimated from how common the word is does not match.
sounds_like (or sl)What the word sounds like, even misspelled: jirraf finds giraffe. Sets the order, nearest sound first.
rhymes_with, rhyme_typeA word to rhyme with, and perfect (the default), near or consonant. Sets the order, the same one the Rhymes tool uses. With both sound filters, sounds_like sets the order and rhymes_with narrows it.
meaning (or ml)Words that mean what you describe: a word (happy), a phrase (ringing in the ears, a large body of water) or a request (to make worse, not honest). Ranked by how well a word's meanings and synonyms match, and each result shows the meaning that matched in definition and how in matched_by. Sets the order; sounds_like and rhymes_with then narrow it. 2 to 100 characters.
adjectives_of (or rel_jjb), nouns_of (or rel_jja)Which adjectives go with a noun (adjectives_of=beach gives sandy, white) and which nouns go with an adjective (nouns_of=sandy gives beach, soil). Counted in our own example sentences and book quotations, not in all English, so it ranks well-attested pairs and says nothing about how common a pair is in the wild. Sets the order; each result has pair_count.
after (or lc), before (or rc)The words that most often come right after a word (after=drink) or right before it (before=water), from the same sentences. Little words such as the, of and to are left out of these lists.
broader (or rel_spc), narrower (or rel_gen), part_of (or rel_par), has_parts (or rel_com)Kind-of and part-of links from Princeton WordNet: broader=gondola gives boat, narrower=boat gives gondola, part_of=trunk gives tree, has_parts=tree gives trunk. A word we do not hold is a 404.
vocabularycore (the default) searches the words that have a page here. extended also searches words with no page, after the others in the same call; those results have slug and page of null and in_dictionary of false. It takes the spelling, sound, rhyme (perfect), part of speech and syllable filters, and refuses the rest with a 422.
exclude_flagsSame flags as seeded lists: proper_noun, offensive, archaic, abbreviation, hyphenated, multiword.
include, langinclude=examples adds one example sentence of ours per word; include=translations adds translations, lang=es,fr keeps only those languages, and include=frequency adds corpus_per_million, how often the word turns up per million words of our example sentences. Up to 100 results a call with either.
limit (or max), offsetDefault 50, at most 1,000. offset + limit is at most 2,000.

Without a sound filter, results come most common first: words we hold a frequency rank for in rank order, then the rest, shorter first. Words that are only ever names are left out, and so is a short list of slurs. A ? or * stands for letters, never a space or a hyphen; starts_with, ends_with and contains can match phrases, so add exclude_flags=multiword,hyphenated to drop them.

Each result has word, slug, length, pos, definition, cefr_level, syllables and frequency_rank, plus example and translations when asked for. The response also has count, offset, limit, has_more and order (frequency, meaning, rhymes_with, sounds_like, adjectives_of, nouns_of, after, before, broader, narrower, part_of, has_parts or spelling).

A parameter the search does not know returns 422 rather than being ignored. Each search counts as one call against your monthly allowance. On the Free plan that is 3,000 calls a month, and searches have their own limit of 6 a minute (a tenth of the per-minute rate, never under 5; see rate limits).

curl "https://freedict.com/api/v1/words?rhymes_with=light&syllables=2&pos=verb,noun&limit=10" \
  -H "X-API-Key: YOUR_KEY"

curl "https://freedict.com/api/v1/words?pattern=un*able&cefr_level=b1,b2&include=examples&limit=10" \
  -H "X-API-Key: YOUR_KEY"

Seeded Word Lists Pro and above

GET /words/query with a seed returns words that match your filters in a fixed order for that seed, which is what word games need: the same seed always gives the same list, so a daily puzzle never changes after the day it was set.

  • locale and seed are required.
  • Filters: length, length_min, length_max, pos (comma-separated), cefr_level (e.g. A2,B1), starts_with, ends_with, contains, exclude_flags (proper_noun, offensive, archaic, abbreviation, hyphenated, multiword), and a pattern with ? only.
  • Paging: limit (default 100, up to 10,000) and offset.
  • The sound, syllable and include filters of the search above are not available with a seed and return 422. A filter the API does not support also returns 422 rather than being silently ignored.
curl "https://freedict.com/api/v1/words/query?locale=en-US&seed=2026-09-28&length=5&exclude_flags=proper_noun,offensive&limit=50" \
  -H "X-API-Key: YOUR_KEY"

Dataset info

GET /meta lists the fields and filters the API supports and how many words each field is filled for, counted live, so you can check coverage before you build on a field.

Rate limits and your monthly allowance

Each plan has a per-minute limit and a monthly allowance (see pricing). Batch, search and seeded-list requests have a smaller per-minute allowance than single lookups because they do more work. Responses carry these headers:

  • X-RateLimit-Remaining: requests left this minute.
  • X-Quota-Limit and X-Quota-Used: your monthly allowance and how much of it you have used.
  • Retry-After (on a 429): seconds to wait before trying again.

Only successful calls count towards your allowance. On paid plans, calls beyond the allowance keep working and are billed at your plan's overage rate; on Free, they stop until the 1st of the next month.

Errors

StatusCodeMeaning
401unauthorisedMissing or invalid X-API-Key.
403plan_requiredYour plan does not include this endpoint.
404word_not_foundThe word is not in the dictionary.
422unknown_locale, unknown_parameter, bad_pattern, bad_request, too_many, unknown_flag, filter_unavailableSomething in the request needs fixing. The message says what.
429rate_limitedToo many requests this minute. Wait for Retry-After.
429quota_exceededFree plan monthly allowance used up.

Attribution

On the Free plan, show a visible “Powered by FreeDict” link to freedict.com wherever you display our data. Free-plan responses include the text and link in meta.attribution. Paid plans do not need it. See the API terms for caching and use rules.