type enum Part of speech to generate. 'any' picks one at random per word — see the partOfSpeech field for what you got.
Random English words by part of speech — nouns, verbs, adjectives or adverbs — with working length filters, seedable output and honest 400s when nothing fits.
Generated test data for fixtures and development
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
type | enum | default: any allowed: noun | verb | adjective | adverb | any example: noun | Part of speech to generate. 'any' picks one at random per word — see the partOfSpeech field for what you got. |
minLength | int | default: 1 allowed: 1 – 30 example: 3 | Minimum word length in characters (inclusive). Must be ≤ maxLength. |
maxLength | int | default: 30 allowed: 1 – 30 example: 8 | Maximum word length in characters (inclusive). If no word of the chosen type fits the range, the request fails with a 400 — never a near-miss word. |
type enum Part of speech to generate. 'any' picks one at random per word — see the partOfSpeech field for what you got.
minLength int Minimum word length in characters (inclusive). Must be ≤ maxLength.
maxLength int Maximum word length in characters (inclusive). If no word of the chosen type fits the range, the request fails with a 400 — never a near-miss word.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 10 allowed: 1 – 100 example: 3 | How many records to generate (1–100). |
seed | int | example: 42 | Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). |
fields | list | example: word,partOfSpeech | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: partOfSpeech | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int How many records to generate (1–100).
seed int Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
word | string | The word, within minLength..maxLength characters (a few entries contain a hyphen). | harvest |
partOfSpeech | string | The part of speech actually generated: noun | verb | adjective | adverb. Varies per word when type=any. | noun |
word string The word, within minLength..maxLength characters (a few entries contain a hyphen).
example: harvest
partOfSpeech string The part of speech actually generated: noun | verb | adjective | adverb. Varies per word when type=any.
example: noun
/api/words?type=noun&count=5 {
"data": [
{
"word": "pearl",
"partOfSpeech": "noun"
},
{
"word": "step-mother",
"partOfSpeech": "noun"
},
{
"word": "submitter",
"partOfSpeech": "noun"
},
{
"word": "premium",
"partOfSpeech": "noun"
},
{
"word": "sailor",
"partOfSpeech": "noun"
}
],
"meta": {
"endpoint": "words",
"count": 5,
"seed": 42,
"params": {
"type": "noun",
"minLength": 1,
"maxLength": 30
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/words?type=adjective&minLength=4&maxLength=6&count=10&seed=7 {
"data": [
{
"word": "sudden",
"partOfSpeech": "adjective"
},
{
"word": "soft",
"partOfSpeech": "adjective"
},
{
"word": "tame",
"partOfSpeech": "adjective"
},
{
"word": "dental",
"partOfSpeech": "adjective"
},
{
"word": "afraid",
"partOfSpeech": "adjective"
},
{
"word": "total",
"partOfSpeech": "adjective"
},
{
"word": "blind",
"partOfSpeech": "adjective"
},
{
"word": "right",
"partOfSpeech": "adjective"
},
{
"word": "unripe",
"partOfSpeech": "adjective"
},
{
"word": "next",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/words?minLength=8&count=20 {
"data": [
{
"word": "overstay",
"partOfSpeech": "verb"
},
{
"word": "solution",
"partOfSpeech": "noun"
},
{
"word": "unexpectedly",
"partOfSpeech": "adverb"
},
{
"word": "pleasure",
"partOfSpeech": "noun"
},
{
"word": "suddenly",
"partOfSpeech": "adverb"
},
{
"word": "handover",
"partOfSpeech": "noun"
},
{
"word": "babushka",
"partOfSpeech": "noun"
},
{
"word": "verbally",
"partOfSpeech": "adverb"
},
{
"word": "emphasize",
"partOfSpeech": "verb"
},
{
"word": "famously",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Draws random words from curated English word lists, one record per word, each labelled with the part of speech it actually came from.
type picks the part of speech (noun, verb, adjective, adverb). The default any picks a part of speech at random per word, and the partOfSpeech field always tells you which one you got.minLength/maxLength genuinely constrain word length (counted in characters — a few entries like cross-contamination contain a hyphen). Every returned word is inside the range, never approximately.Honest failure, no silent fallback: when no word of the requested type exists in the length range (the lists roughly cover 2–19 characters), the request fails with a 400 explaining the problem — it never quietly substitutes a word of a different length or type. Note that type=any picks the part of speech before generating, so a tight range that only some parts of speech can satisfy may still 400 depending on the pick — pass an explicit type for tight ranges.
With a seed the same query returns the identical word list forever.
Yes — type restricts to one class (nouns, verbs, adjectives…), and every record is tagged with partOfSpeech.
minLength/maxLength filter by character count — handy for word games and placeholder labels.
A curated English wordlist shipped with the API — no external calls, so responses are fast and deterministic with seed.
Lorem ipsum placeholder text — one paragraph, sentence or word per record, each with a word count, optionally opening with 'Lorem ipsum dolor sit amet'.
Random person names — first, last and full — with a strict gender filter, locale-aware name pools in 8 languages and seed-reproducible output.
Weighted random picks from your own options, unbiased list shuffles and tunable coin flips — every decision reproducible with a seed.
Diceware-style random passphrases from a curated 895-word English list — pick word count, separator and capitalization, with an honest entropy estimate.