Wordnik is the worlds biggest online English dictionary, by number of words
Bring your own key. This API needs your own Wordnik key - get one from the provider, add it once below, and the proxy injects it on every call. Your OmniStream plan covers the unified SDK, key storage, and proxy - the provider's own rate limits still apply to your key.
This is a community listing. If you own this API, you can request ownership.
npm install omnistream-sdkimport { OmniClient } from "omnistream-sdk";
const omni = new OmniClient({ token: process.env.OMNI_KEY! });
// One key reaches every API on the marketplace.
const data = await omni.call("wordnik/getAudio");One install, one key - the same client calls every API on the marketplace.
Word to get audio for.
If true will try to return the correct word root ('cats' -> 'cat'). If false returns exactly what was requested.
Maximum number of results to return
Fetches audio metadata for a word.
Return definitions for a word
Fetches etymology data
Returns examples for a word
Returns word usage over time
/**
* Wordnik - generated by OmniStream from Wordnik's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/wordnik";
export class WordnikError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `Wordnik error ${status}`);
this.name = "WordnikError";
this.status = status;
this.code = code;
}
}
export interface WordnikOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class Wordnik {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: WordnikOptions = {}) {
if (!token) throw new Error("Wordnik: token is required");
}
rateLimit: { remainingMinute?: number; remainingDay?: number } | null = null;
private async _request(method: string, path: string, { params, body }: { params?: Record<string, unknown>; body?: unknown } = {}): Promise<any> {
const f = this.opts.fetch ?? globalThis.fetch;
const url = new URL((this.opts.baseUrl ?? DEFAULT_BASE).replace(/\/+$/, "") + path);
if (params) for (const [k, v] of Object.entries(params)) if (v != null) url.searchParams.set(k, String(v));
const headers: Record<string, string> = { "x-omni-key": this.token };
if (body !== undefined) headers["content-type"] = "application/json";
const res = await f(url, { method, headers, body: body !== undefined ? JSON.stringify(body) : undefined });
this.rateLimit = {
remainingMinute: Number(res.headers.get("x-ratelimit-remaining-minute")) || undefined,
remainingDay: Number(res.headers.get("x-ratelimit-remaining-day")) || undefined,
};
const data = await res.json().catch(() => ({}));
if (!res.ok) throw new WordnikError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/** Fetches audio metadata for a word. */
getAudio(params: { "word": string; "useCanonical"?: string; "limit"?: number }): Promise<any> {
return this._request("GET", "/word.json/{word}/audio", { params });
}
/** Return definitions for a word */
getDefinitions(params: { "word": string; "limit"?: number; "partOfSpeech"?: string; "includeRelated"?: string; "sourceDictionaries"?: unknown[]; "useCanonical"?: string; "includeTags"?: string }): Promise<any> {
return this._request("GET", "/word.json/{word}/definitions", { params });
}
/** Fetches etymology data */
getEtymologies(params: { "word": string; "useCanonical"?: string }): Promise<any> {
return this._request("GET", "/word.json/{word}/etymologies", { params });
}
/** Returns examples for a word */
getExamples(params: { "word": string; "includeDuplicates"?: string; "useCanonical"?: string; "skip"?: number; "limit"?: number }): Promise<any> {
return this._request("GET", "/word.json/{word}/examples", { params });
}
/** Returns word usage over time */
getWordFrequency(params: { "word": string; "useCanonical"?: string; "startYear"?: number; "endYear"?: number }): Promise<any> {
return this._request("GET", "/word.json/{word}/frequency", { params });
}
/** Returns syllable information for a word */
getHyphenation(params: { "word": string; "useCanonical"?: string; "sourceDictionary"?: string; "limit"?: number }): Promise<any> {
return this._request("GET", "/word.json/{word}/hyphenation", { params });
}
/** Fetches bi-gram phrases for a word */
getPhrases(params: { "word": string; "limit"?: number; "wlmi"?: number; "useCanonical"?: string }): Promise<any> {
return this._request("GET", "/word.json/{word}/phrases", { params });
}
/** Returns text pronunciations for a given word */
getTextPronunciations(params: { "word": string; "useCanonical"?: string; "sourceDictionary"?: string; "typeFormat"?: string; "limit"?: number }): Promise<any> {
return this._request("GET", "/word.json/{word}/pronunciations", { params });
}
/** Given a word as a string, returns relationships from the Word Graph */
getRelatedWords(params: { "word": string; "useCanonical"?: string; "relationshipTypes"?: string; "limitPerRelationshipType"?: number }): Promise<any> {
return this._request("GET", "/word.json/{word}/relatedWords", { params });
}
/** Returns the Scrabble score for a word */
getScrabbleScore(params: { "word": string }): Promise<any> {
return this._request("GET", "/word.json/{word}/scrabbleScore", { params });
}
/** Returns a top example for a word */
getTopExample(params: { "word": string; "useCanonical"?: string }): Promise<any> {
return this._request("GET", "/word.json/{word}/topExample", { params });
}
/** Returns a single random WordObject */
getRandomWord(params: { "hasDictionaryDef"?: string; "includePartOfSpeech"?: string; "excludePartOfSpeech"?: string; "minCorpusCount"?: number; "maxCorpusCount"?: number; "minDictionaryCount"?: number; "maxDictionaryCount"?: number; "minLength"?: number; "maxLength"?: number }): Promise<any> {
return this._request("GET", "/words.json/randomWord", { params });
}
/** Returns an array of random WordObjects */
getRandomWords(params: { "hasDictionaryDef"?: string; "includePartOfSpeech"?: string; "excludePartOfSpeech"?: string; "minCorpusCount"?: number; "maxCorpusCount"?: number; "minDictionaryCount"?: number; "maxDictionaryCount"?: number; "minLength"?: number; "maxLength"?: number; "sortBy"?: string; "sortOrder"?: string; "limit"?: number }): Promise<any> {
return this._request("GET", "/words.json/randomWords", { params });
}
/** Reverse dictionary search */
reverseDictionary(params: { "query": string; "findSenseForWord"?: string; "includeSourceDictionaries"?: string; "excludeSourceDictionaries"?: string; "includePartOfSpeech"?: string; "excludePartOfSpeech"?: string; "minCorpusCount"?: number; "maxCorpusCount"?: number; "minLength"?: number; "maxLength"?: number; "expandTerms"?: string; "includeTags"?: string; "sortBy"?: string; "sortOrder"?: string; "skip"?: string; "limit"?: number }): Promise<any> {
return this._request("GET", "/words.json/reverseDictionary", { params });
}
/** Searches words */
searchWords(params: { "query": string; "allowRegex"?: string; "caseSensitive"?: string; "includePartOfSpeech"?: string; "excludePartOfSpeech"?: string; "minCorpusCount"?: number; "maxCorpusCount"?: number; "minDictionaryCount"?: number; "maxDictionaryCount"?: number; "minLength"?: number; "maxLength"?: number; "skip"?: number; "limit"?: number }): Promise<any> {
return this._request("GET", "/words.json/search/{query}", { params });
}
/** Returns a specific WordOfTheDay */
getWordOfTheDay(params: { "date"?: string }): Promise<any> {
return this._request("GET", "/words.json/wordOfTheDay", { params });
}
}
export default Wordnik;
No reviews yet. Be the first to rate this API.
Yes. Wordnik uses apiKey authentication, so you bring your own key from the provider. You store it once on OmniStream and the proxy injects it into every call, so your code only ever sends your Omni key.
Wordnik is the worlds biggest online English dictionary, by number of words It exposes 16 endpoints over GET, including GET /word.json/{word}/audio, GET /word.json/{word}/definitions, GET /word.json/{word}/etymologies.
Install the OmniStream SDK for your language and call Wordnik through it. The client is generated from this API's OpenAPI spec, so parameters and responses are fully typed, and the same client also calls every other API in the marketplace.
You can start on the free plan. OmniStream charges for the unified SDK, key storage and proxy rather than for Wordnik itself, and Wordnik's own rate limits still apply to your provider key.
Free Dictionary: A free, keyless English dictionary API - definitions, phonetics, synonyms, antonyms, and example sentences.
Returns syllable information for a word
Fetches bi-gram phrases for a word
Returns text pronunciations for a given word
Given a word as a string, returns relationships from the Word Graph
Returns the Scrabble score for a word
Returns a top example for a word
Returns a single random WordObject
Returns an array of random WordObjects
Reverse dictionary search
Searches words
Returns a specific WordOfTheDay