Skip to main content

Lorem Ipsum API

MOCK DATA

Lorem ipsum placeholder text — one paragraph, sentence or word per record, each with a word count, optionally opening with 'Lorem ipsum dolor sit amet'.

Generated test data for fixtures and development

Base URL
/api/lorem
Capabilities
1 route Seedable
Last updated
July 29, 2026

GET /api/lorem

Live requestRuns against the public API
No key required
GET/api/lorem?startWithLorem=true&count=3&seed=7

Request parameters

Unit each record contains: one paragraph (3–7 sentences), one sentence (4–12 words) or one single word.

Open the first record with the classic phrase 'Lorem ipsum dolor sit amet'; all other records are unaffected. Ignored for type=words (a warning says so).

Advanced response options7 options

How many records to generate (1–100).

Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

Return all fields except these (comma-separated).

Response format: json envelope, ndjson (one record per line) or csv.

Pretty-print the JSON response.

Drop the envelope: return the raw array/object without data/meta wrapper.

Response

Example parameters are ready. Send the request to inspect the live response.

Route reference

Code samples Ready-to-copy requests in 4 languages
Choose a code sample language
curl "https://randomapi.dev/api/lorem?startWithLorem=true&count=3&seed=7"
const res = await fetch("https://randomapi.dev/api/lorem?startWithLorem=true&count=3&seed=7");
const { data, meta } = await res.json();
import requests

data = requests.get("https://randomapi.dev/api/lorem?startWithLorem=true&count=3&seed=7").json()["data"]
$json = json_decode(file_get_contents(
  "https://randomapi.dev/api/lorem?startWithLorem=true&count=3&seed=7"
), true);
$data = $json["data"];
Parameters Route-specific request inputs 2
type enum

Unit each record contains: one paragraph (3–7 sentences), one sentence (4–12 words) or one single word.

default: paragraphs
allowed: paragraphs | sentences | words
example: type=sentences
startWithLorem boolean

Open the first record with the classic phrase 'Lorem ipsum dolor sit amet'; all other records are unaffected. Ignored for type=words (a warning says so).

default: false
example: startWithLorem=true
Universal parameters Shared response and formatting options 7
count int

How many records to generate (1–100).

default: 10
allowed: 1 – 100
example: count=3
seed int

Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).

example: seed=42
fields list

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

example: fields=text,words
exclude list

Return all fields except these (comma-separated).

example: exclude=words
format enum

Response format: json envelope, ndjson (one record per line) or csv.

default: json
allowed: json | ndjson | csv
example: format=csv
pretty boolean

Pretty-print the JSON response.

default: false
example: pretty=true
unwrap boolean

Drop the envelope: return the raw array/object without data/meta wrapper.

default: false
example: unwrap=true
Response schema Fields returned in each record 2
text string

The generated unit — one paragraph, one sentence or one word, depending on `type`.

example: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

words integer

Number of whitespace-separated words in `text` (always 1 for type=words).

example: 19

Documented examples

Build-generated requests and complete responses
3
Three classic-opening paragraphs
GET /api/lorem?startWithLorem=true&count=3&seed=7
{
  "data": [
    {
      "text": "Lorem ipsum dolor sit amet, amoveo timidus textus velit quidem deorsum caelum urbs. Odio autus suspendo subnecto alveus solutio soluta. Trans contabesco uxor triumphus vigor voluptatibus trepide convoco sopor tremo. Armarium stabilis arto. Demonstro contabesco audax recusandae. Quod placeat traho. Audax vilitas aperiam textor exercitationem pecus cresco supra quaerat.",
      "words": 49
    },
    {
      "text": "Deputo porro vae totidem civitas curso timor. Verbum calamitas esse saepe. Nostrum aranea subiungo in calcar vetus dedecor subito sed. Comminor acer inflammatio adicio tabesco suspendo sum id. Comptus calcar contabesco suffragium conculco. Patruus cultura certus tenax creber uredo vicinus.",
      "words": 40
    },
    {
      "text": "Esse nam absconditus aequitas atrocitas urbanus comis. Sumptus terga alo ambulo tubineus vulticulus patrocinor comparo dolorem. Pax tubineus considero. Volutabrum assentator nesciunt cicuta desparatus. Commodi ancilla volo curiositas esse. Uter a magnam. Avarus laborum arbitro.",
      "words": 35
    }
  ],
  "meta": {
    "endpoint": "lorem",
    "count": 3,
    "seed": 7,
    "params": {
      "type": "paragraphs",
      "startWithLorem": true
    },
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Twenty standalone sentences
GET /api/lorem?type=sentences&count=20
{
  "data": [
    {
      "text": "Sulum laborum comitatus vulgo cetera arbor ars acer aegre.",
      "words": 9
    },
    {
      "text": "Velit volubilis carcer carus necessitatibus tergum curriculum dignissimos volo caput crustulum.",
      "words": 11
    },
    {
      "text": "Numquam cultellus tripudio umbra uredo consectetur alo virtus tolero urbs theologus.",
      "words": 11
    },
    {
      "text": "Creptio sustineo caritas cuius crapula tantillus clam vilitas tactus xiphias.",
      "words": 10
    },
    {
      "text": "Temptatio sumo vis solus catena defessus fuga necessitatibus vinum comes.",
      "words": 10
    },
    {
      "text": "Usus iusto tripudio creta aestus iure sub terra.",
      "words": 8
    },
    {
      "text": "Excepturi patrocinor solutio vomito.",
      "words": 4
    },
    {
      "text": "Audacia doloremque debitis spectaculum adulatio adamo vinco volo custodia utroque alius crudelis.",
      "words": 12
    },
    {
      "text": "Tempore cervus sumptus viriliter caterva volup.",
      "words": 6
    },
    {
      "text": "Velum umquam acer absens tyrannus dignissimos.",
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Fifty single words as CSV
GET /api/lorem?type=words&count=50&fields=text&format=csv
text
soleo
ulterius
urbs
subvenio
ter
decretum
aestas
vester
combibo
calco
campana
patruus
delectus
ullus
dapifer
amita
tricesimus
minima
uredo
crur
animus
anser
arbustum
tot
thermae
crepusculum
pauper
spargo
tantillus
cupiditas
cui
spiculum
sto
vinculum
adaugeo
ventus
cotidie
defendo
suasoria
    …
arcus
conculco

About this API

Coverage & behavior

Pseudo-Latin lorem ipsum filler for layouts and fixtures. Each record is exactly one unit of the chosen type:

  • paragraphs (default) — one paragraph of 3–7 sentences.
  • sentences — one standalone sentence of 4–12 words: capitalized, single terminal period.
  • words — one single lowercase Latin word (tags, slugs, autocomplete fixtures).

Every record also carries a words count — the number of whitespace-separated words in text — so length-sensitive UI tests can assert or filter without re-counting.

startWithLorem=true opens the first record with the canonical phrase "Lorem ipsum dolor sit amet," spliced into otherwise-normal generated text; with the same seed, every other record stays byte-identical to a run without the flag. For type=words the flag is ignored (a one-word record cannot carry the five-word phrase) and a warning in meta.warnings says so.

This is mock filler, not real prose. Combine with seed for reproducible output, fields=text to drop the counts, or format=ndjson/csv for bulk use.

Use it for

  • Fill CMS templates, cards and article layouts with paragraph placeholder copy
  • Test truncation, line-clamp and 'read more' UI against sentences with known word counts
  • Seed tag pickers and autocomplete demos with single Latin words

Frequently asked questions

How do I control the amount of text?

type=paragraphs|sentences|words picks the unit and count the amount — e.g. ?type=sentences&count=5 returns five sentences.

Can it start with the classic opening?

Yes — startWithLorem=true forces "Lorem ipsum dolor sit amet…"; otherwise the text is randomized (and seedable).

Why JSON instead of raw text?

JSON gives you the text plus a words count and fits fixtures; add unwrap=true for the bare records without the envelope.