Skip to main content

Random Markdown Generator API

MOCK DATA

Multi-section Markdown documents where every feature flag is a hard guarantee — code blocks, tables, lists, links and images appear when on, never when off.

Generated test data for fixtures and development

Base URL
/api/markdown
Capabilities
1 route Seedable
Last updated
July 30, 2026

GET /api/markdown

Live requestRuns against the public API
No key required
GET/api/markdown?seed=42

Request parameters

Number of H2 sections after the intro. Each has 1–2 paragraphs plus its share of the enabled features.

Include fenced code blocks tagged js, ts, python or bash. true ⇒ at least one per document; false ⇒ no backticks anywhere.

Include 3-column pipe tables (header + separator + 3 rows). true ⇒ at least one per document; false ⇒ no table syntax anywhere.

Include unordered lists of 3–5 dash items. true ⇒ at least one per document; false ⇒ no list syntax anywhere.

Include a ![figure](…) image from this platform's placeholder API. true ⇒ at least one per document; false (default) ⇒ no image syntax.

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/markdown?seed=42"
const res = await fetch("https://randomapi.dev/api/markdown?seed=42");
const { data, meta } = await res.json();
import requests

data = requests.get("https://randomapi.dev/api/markdown?seed=42").json()["data"]
$json = json_decode(file_get_contents(
  "https://randomapi.dev/api/markdown?seed=42"
), true);
$data = $json["data"];
Parameters Route-specific request inputs 6
sections int

Number of H2 sections after the intro. Each has 1–2 paragraphs plus its share of the enabled features.

default: 3
allowed: 1 – 10
example: sections=4
codeBlocks boolean

Include fenced code blocks tagged js, ts, python or bash. true ⇒ at least one per document; false ⇒ no backticks anywhere.

default: true
example: codeBlocks=true
tables boolean

Include 3-column pipe tables (header + separator + 3 rows). true ⇒ at least one per document; false ⇒ no table syntax anywhere.

default: true
example: tables=true
lists boolean

Include unordered lists of 3–5 dash items. true ⇒ at least one per document; false ⇒ no list syntax anywhere.

default: true
example: lists=true
links boolean

Weave inline [text](https://example.com/…) links into paragraphs. true ⇒ at least one per document; false ⇒ no link syntax anywhere.

default: true
example: links=true
images boolean

Include a ![figure](…) image from this platform's placeholder API. true ⇒ at least one per document; false (default) ⇒ no image syntax.

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

How many records to generate (1–100).

default: 1
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=markdown,wordCount
exclude list

Return all fields except these (comma-separated).

example: exclude=sections
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 3
markdown string (Markdown)

The complete document: H1 title, intro paragraph, then the H2 sections with the enabled features distributed among them.

example: # Practical Cache Strategies Veniam consequatur voluptas nihil tempora. ## Getting Started Quia sequi rerum aut facilis. See [the deploy guide](https://example.com/docs/deploy) for the full reference. - Voluptas nihil tempora - Quia sequi rerum - Aut facilis numquam

wordCount integer

Whitespace-separated token count of the exact markdown string (syntax included).

example: 214

sections integer

Number of H2 sections in the document — echoes the sections parameter.

example: 3

Documented examples

Build-generated requests and complete responses
3
One full-featured document
GET /api/markdown?seed=42
{
  "data": [
    {
      "markdown": "# Sulum Laborum Comitatus Vulgo Cetera\n\nAcer aegre mollitia terreo. Tener atrocitas vitae aegrus viscus aliquid talus certe dapifer audacia.\n\n## Tristis truculenter pax curis\n\nA peior cohors minima defessus delectus voluptatibus aer synagoga. Usque curia aranea cunctatio verumtamen vitiosus decretum. Tenax admoneo vitium trans earum stabilis. Compare the notes in [valde sufficio vilicus](https://example.com/aqua/aliquam) before upgrading.\n\n| Name | Value | Unit |\n| --- | --- | --- |\n| bis | antea | spes repellat |\n| arma | annus | esse fuga |\n| contego | beatus | pectus damno |\n\n- Comes caecus debilito depromo non\n- Sublime agnitio\n- Commodo ascisco deporto\n- Atrox coniecto\n- Corroboro thymbra\n\nIpsum capio demergo aperio adulescens basium animi anser vester charisma. Ab perferendis tibi cupressus odit ducimus.\n\n## Canonicus damnatio\n\nDecor auctus tonsor statua occaecati cur cultellus quos suggero. Talio comis deserunt delibero assumenda coaegresco aegrotatio iusto acquiro. Adeptio thalassinus patior uberrime.\n\n```ts\nexport interface VoraxOptions {\n  retries: number;\n  timeoutMs: number;\n  verbose: boolean;\n}\n\nexport function createVorax(overrides: Partial<VoraxOptions>): VoraxOptions {\n  return { retries: 3, timeoutMs: 5000, verbose: false, ...overrides };\n}\n```\n\n- Voluptate curto attero\n- Varietas quibusdam laboriosam accusator adficio creber\n- Crastinus correptius velociter\n- Volaticus tabgo\n- Cur condico vomer viduo comminor aeternus\n\n## Vulgus modi\n\nQuasi iure tenax cernuus adulescens possimus. Stips demens curiositas sufficio somniculosus aequitas. Tersus vociferor absorbeo tamen. This builds on the approach described in [adhuc alter](https://example.com/ceno/alo).\n\n| Notes | Type | Stage |\n| --- | --- | --- |\n| appello | adsidue | copia ipsum |\n| exercitationem | cotidie | patruus ratione |\n| tondeo | argumentum | baiulus adflicto |\n\nVoluptatem vomer non enim depono solio atavus ventosus thermae. Viriliter quis tibi. Peior temporibus alienus pecus cito consectetur.",
      "wordCount": 293,
      "sections": 3
    }
  ],
  "meta": {
    "endpoint": "markdown",
    "count": 1,
    "seed": 42,
    "params": {
      "sections": 3,
      "codeBlocks": true,
      "tables": true,
      "lists": true,
      "links": true,
      "images": false
    },
    "generatedAt": "2026-07-30T15:14:08.000Z"
  }
}
Prose only — no code, tables, lists or links
GET /api/markdown?codeBlocks=false&tables=false&lists=false&links=false&sections=2
{
  "data": [
    {
      "markdown": "# Sulum Laborum Comitatus Vulgo Cetera\n\nAcer aegre mollitia terreo. Tener atrocitas vitae aegrus viscus aliquid talus certe dapifer audacia.\n\n## Tristis truculenter pax curis\n\nA peior cohors minima defessus delectus voluptatibus aer synagoga. Usque curia aranea cunctatio verumtamen vitiosus decretum. Tenax admoneo vitium trans earum stabilis.\n\nSufficio vilicus aqua aliquam calco vinculum ipsum capio demergo aperio. Basium animi anser. Charisma crastinus ab perferendis tibi cupressus odit ducimus solutio comes. Debilito depromo non asperiores.\n\n## Agnitio coadunatio commodo ascisco\n\nAtrox coniecto aggredior. Thymbra bis antea spes repellat. Annus esse fuga contego.",
      "wordCount": 91,
      "sections": 2
    }
  ],
  "meta": {
    "endpoint": "markdown",
    "count": 1,
    "seed": 42,
    "params": {
      "sections": 2,
      "codeBlocks": false,
      "tables": false,
      "lists": false,
      "links": false,
      "images": false
    },
    "generatedAt": "2026-07-30T15:14:08.000Z"
  }
}
Five illustrated articles
GET /api/markdown?count=5&images=true&sections=4&seed=7
{
  "data": [
    {
      "markdown": "# Surgo Amoveo Timidus Textus Velit Quidem\n\nUrbs perspiciatis odio autus. Subnecto alveus solutio soluta voluptate trans contabesco uxor. Vigor voluptatibus trepide convoco sopor tremo alo armarium stabilis.\n\n## Beatae demonstro\n\nRecusandae amet quod placeat. Timidus audax vilitas aperiam textor exercitationem pecus cresco supra. Aeger caveo cultellus xiphias tempore teres teres.\n\n- Confero arcus civitas\n- Mollitia admoveo cogito vis sopor\n- Amaritudo illo cibo\n- Admiratio cui tero ascit adsidue decretum\n- Benigne tabesco videlicet absque\n\nNesciunt ultio considero admoneo. Caelum beatae testimonium laborum laudantium concedo ulciscor contra. Nesciunt audax consuasor vito nulla voluntarius crustulum claudeo. This builds on the approach described in [deleniti vinculum antea](https://example.com/conduco/tricesimus).\n\n## Vulgivagus sollers cumque ara\n\nClibanus avaritia attero virtus arcesso conculco impedit confugo suadeo velum. Spiritus tutis adipiscor abbas. Adhuc attero corrumpo teres. Eaque ambitus suppono sonitus harum convoco voveo conatus molestias perferendis.\n\n| Value | Notes | Unit |\n| --- | --- | --- |\n| quae | tenetur | anser vulariter |\n| totam | absum | adversus suffragium |\n| assentator | aestivus | cerno vomer |\n\n## Aestivus in\n\nAdsidue vado conculco quae convoco ter vigor ducimus. Pel benigne cotidie crepusculum adaugeo reprehenderit audacia vomer.\n\n- Alioqui cavus\n- Uredo aeneus adamo\n- Antea verus adversus cruentus\n- Aro ea versus sumo\n\n```ts\nexport interface AnimiOptions {\n  retries: number;\n  timeoutMs: number;\n  verbose: boolean;\n}\n\nexport function createAnimi(overrides: Partial<AnimiOptions>): AnimiOptions {\n  return { retries: 3, timeoutMs: 5000, verbose: false, ...overrides };\n}\n```\n\n## Praesentium confugo custodia\n\nVociferor vel tego conduco. Teres comes confugo. Traho omnis auctus debeo admoveo vigilo stipes toties accommodo facere. A complete walkthrough is available at [vergo similique](https://example.com/administratio/texo).\n\n![Degusto arceo vinculum vereor](https://randomapi.dev/api/images/placeholder?width=640&height=360&text=Figure)\n\n| Stage | Value | Name |\n| --- | --- | --- |\n| culpo | capillus | appono adsidue |\n| quisquam | umerus | aqua conatus |\n| illo | tabella | amet tubineus |\n\n- Caries sono\n- Accedo adimpleo\n- Adulescens cuppedia vulnero",
      "wordCount": 325,
      "sections": 4
    },
    {
      "markdown": "# Dolorum Deputo Porro Vae Totidem\n\nTimor aperiam verbum calamitas esse saepe. Nostrum aranea subiungo in calcar vetus dedecor subito sed.\n\n## Comminor acer inflammatio adicio\n\nSum id ciminatio comptus calcar contabesco suffragium conculco. Patruus cultura certus tenax creber uredo vicinus. Candidus aperio ter tenuis valeo denego nemo reprehenderit. Veritas communis benigne cilicium vulgus viriliter adduco corpus carcer bardus.\n\n![Video aliquam deprimo crebro](https://randomapi.dev/api/images/placeholder?width=640&height=360&text=Figure)\n\n## Volup sollicito sulum damno conor\n\nStrues angelus mollitia comburo tonsor. Beneficium argentum aegrus. Depromo cinis mollitia vesper ventito ambitus debeo cuppedia. Urbs spiritus culpo bibo amiculum vivo asper.\n\n- Umbra vociferor\n- Tepidus auxilium\n- Astrum tandem demulceo derideo absum abundans\n- Thema bene vere\n- Ager cogo crustulum beatae arcesso\n\n## Praesentium terror cattus tandem bos\n\nCorporis patior deleniti. Adeo animus unde vos laudantium illum cubicularis nihil maxime unde. Cenaculum earum eos aestivus saepe ab vespillo corrumpo subvenio. Tum acceptus curo deludo rerum avarus.\n\n| Description | Type | Field |\n| --- | --- | --- |\n| cura | curia | fuga tubineus |\n| callide | aggredior | volaticus universe |\n| creber | spoliatio | tremo aggredior |\n\n```python\nimport json\n\ndef load_animus(path):\n    with open(path, encoding=\"utf-8\") as handle:\n        return json.load(handle)\n\nprint(load_animus(\"animus.json\"))\n```\n\nVobis acies commodo. Summisse crur callide circumvenio acies. Patruus coniuratio eum illo spoliatio peccatus. Advenio balbus audio vis cognatus. A complete walkthrough is available at [curriculum totidem vapulus](https://example.com/culpo/cetera).\n\n## Qui facilis\n\nCoepi benigne vito. Absum vos facere aequus veritas. Advenio repudiandae curia thymbra censura. Compare the notes in [complectus patrocinor](https://example.com/stipes/casso) before upgrading.\n\n- Tamisium atqui aer decipio antiquus\n- Alius pecto accusator virtus\n- Alius sulum ea qui venio\n- Apostolus cubicularis claustrum\n- Auditor vere ullus",
      "wordCount": 278,
      "sections": 4
    },
    {
      "markdown": "# Praesentium Esse Nam Absconditus Aequitas Atrocitas\n\nTotidem sumptus terga alo ambulo. Vulticulus patrocinor comparo dolorem addo pax tubineus considero comparo. Assentator nesciunt cicuta desparatus causa commodi ancilla volo curiositas esse. Uter a magnam.\n\n## Avarus laborum\n\nAvarus esse arbor canto viridis credo consuasor laborum cursus. Accusator carbo contra vomica terreo depulso unde quisquam architecto natus.\n\n```js\nimport { readFileSync } from \"node:fs\";\n\nexport function loadSpes(path) {\n  const raw = readFileSync(path, \"utf8\");\n  return JSON.parse(raw);\n}\n```\n\n![Tabgo crur](https://randomapi.dev/api/images/placeholder?width=640&height=360&text=Figure)\n\n## Corporis artificiose adsuesco clarus\n\nCultura curso creo viridis conatus. Cunabula cado cerno caterva admoveo bonus calcar canonicus vulpes.\n\n```js\nimport { readFileSync } from \"node:fs\";\n\nexport function loadSaepe(path) {\n  const raw = readFileSync(path, \"utf8\");\n  return JSON.parse(raw);\n}\n```\n\n## Una arbitro terra tripudio\n\nAgo abundans audacia capillus canonicus venia decerno urbs delibero ustilo. Illum uxor delinquo denique. Depromo cohaero cogito bestia cognomen tumultus. Compare the notes in [aegrus admiratio](https://example.com/conduco/fugiat) before upgrading.\n\n- Vivo assumenda paens commemoro considero tonsor\n- Cura reprehenderit vespillo corporis advoco tactus\n- Tepesco aequus molestias umerus terminatio\n- Spoliatio pectus beatae vociferor impedit custodia\n\nImpedit corrupti casus inflammatio caritas ipsum tempore incidunt ocer. Cado esse comes.\n\n## Nam virgo\n\nTemptatio tempore aveho denego amo annus sonitus. Civis velociter utroque arbor. Accommodo benigne sto deprecator vicissitudo umerus ara desipio amoveo venia. Compare the notes in [vilitas toties tondeo](https://example.com/sperno/timor) before upgrading.\n\n| Stage | Default | Status |\n| --- | --- | --- |\n| eum | voro | ventosus crapula |\n| decens | adaugeo | stultus testimonium |\n| addo | consequatur | et suggero |",
      "wordCount": 260,
      "sections": 4
    },
    {
      "markdown": "# Deinde Magnam Mollitia\n\nApparatus tego curto facere argumentum id iure uredo usus. Aspicio cruentus denego cimentarius cui.\n\n## Facilis corrumpo\n\nViscus ulterius bestia voluptatibus armarium eum. Voro ambitus celer tutis usque. Compare the notes in [verecundia virga cibo](https://example.com/antiquus/aiunt) before upgrading.\n\n- Placeat commodo\n- Totidem expedita caecus modi angustus tepidus\n- Totam advenio\n- Adnuo adinventitias pecco officia valeo facilis\n- Una accendo vinco utilis cado\n\n## Vorax crustulum acies aperiam quasi\n\nEius denego tot thema pectus velum antepono. Statua armarium cubo tenuis vindico eligendi. Decens atqui perferendis ago. Crinis tremo color ambulo trans audeo.\n\n| Name | Description | Notes |\n| --- | --- | --- |\n| vallum | surgo | patior uter |\n| condico | animus | antiquus causa |\n| tactus | demens | thesaurus tabernus |\n\n![Doloremque cogito](https://randomapi.dev/api/images/placeholder?width=640&height=360&text=Figure)\n\n## Centum arx\n\nAperte cuppedia valeo ullus sonitus quaerat voluntarius civitas cibo volaticus. Tepidus creator temptatio subseco deorsum succedo tricesimus congregatio. Utrimque aperio reprehenderit temptatio vir alveus catena summopere verumtamen.\n\n- Accusantium auctor tredecim cui sortitus\n- Coepi voluptate\n- Speculum attonbitus\n- Capio somniculosus inventore agnosco tempora demitto\n\n## Temporibus adduco\n\nAlveus pel viridis crux desparatus tertius conventus certus desolo. Defessus sopor vero.\n\n```bash\nset -euo pipefail\n\ncurl -fsS \"https://example.com/api/ratione\" -o \"ratione.json\"\ngrep -c \"id\" \"ratione.json\"\n```",
      "wordCount": 214,
      "sections": 4
    },
    {
      "markdown": "# Cupiditate Suppono Defero\n\nColor sono magni studio blandior tempora terror. Vis clamo vigor. Amet culpa alius quod veritas.\n\n## Suscipio tempore aperiam\n\nAbstergo soleo curtus ventosus certus dicta subito. Natus concido cupressus canis aliquam. Thema tenetur cupiditate modi articulus complectus ulciscor caecus ulterius nihil. This builds on the approach described in [arbitro fugiat](https://example.com/cuppedia/villa).\n\n- Concido admiratio pel taedium vulgus\n- Vel acervus id dolorem vulnero\n- Comedo delectatio tollo suppono aqua\n- Tardus allatus\n- Ter sol talis tot bardus\n\n## Abeo demo\n\nTeneo vulnus eaque ocer volaticus tricesimus casus. Ventus caveo supra corrumpo vulpes. Vestigium compono adimpleo tonsor mollitia accusator calco. Coniuratio verecundia est sollers quasi.\n\n- Dignissimos vigilo temptatio nesciunt\n- Cattus utilis\n- Asporto cubitum comprehendo\n\n| Value | Default | Stage |\n| --- | --- | --- |\n| conculco | vitiosus | ullus cornu |\n| aliqua | cervus | cupiditas tremo |\n| conservo | perferendis | ater cohaero |\n\nAppositus vomica aduro tamquam ver vigor dolore complectus utor suscipio. Colo voro deserunt. Virga eius vomica careo vita combibo vomica. Avarus comburo tergeo vestrum sumptus amissio aut exercitationem atavus.\n\n## Avaritia corrumpo\n\nDefluo aliquid bos arguo voveo tepidus cohaero cunctatio debeo. Alo sum arceo degenero auctus amoveo curatio adulatio vel asporto. Virgo cito clamo uterque thalassinus alter occaecati demitto terra.\n\n| Notes | Type | Value |\n| --- | --- | --- |\n| clementia | arma | deduco adopto |\n| aspernatur | impedit | stipes coniecto |\n| vulticulus | iure | cumque amicitia |\n\nDesino tollo ex credo ascisco delego antiquus. Sto benigne nostrum suasoria vito tabella solium vox causa laborum. Tripudio asperiores suscipit.\n\n## Vestigium demo\n\nCeler circumvenio decerno bellum utpote comburo aestas tempora. Clibanus attollo dignissimos carpo ventosus cura conturbo vel arx.\n\n![Facilis viriliter](https://randomapi.dev/api/images/placeholder?width=640&height=360&text=Figure)\n\n```ts\nexport interface CruentusOptions {\n  retries: number;\n  timeoutMs: number;\n  verbose: boolean;\n}\n\nexport function createCruentus(overrides: Partial<CruentusOptions>): CruentusOptions {\n  return { retries: 3, timeoutMs: 5000, verbose: false, ...overrides };\n}\n```\n\n| Value | Description | Notes |\n| --- | --- | --- |\n| agnitio | vilitas | correptius tot |\n| aggero | adflicto | vomer surgo |\n| sophismata | thermae | temporibus terebro |",
      "wordCount": 366,
      "sections": 4
    }
  ],
  "meta": {
    "endpoint": "markdown",
    "count": 5,
    "seed": 7,
    "params": {
      "sections": 4,
      "codeBlocks": true,
      "tables": true,
      "lists": true,
      "links": true,
      "images": true
    },
    "generatedAt": "2026-07-30T15:14:08.000Z"
  }
}

About this API

Coverage & behavior

Generates complete Markdown documents with a predictable, parseable shape: an H1 title, an intro paragraph, then exactly sections H2 sections of 1–2 lorem-style paragraphs each.

The feature flags are a strict contract, not a probability:

  • when a flag is true, the feature is force-placed into at least one section — even a sections=1 document contains every enabled feature;
  • when a flag is false, its syntax is completely absent: codeBlocks=false means not a single backtick, tables=false means no pipe characters, lists=false means no line starts with a dash, and links=false / images=false mean no bracket syntax of that kind.

What each feature produces: fenced code blocks tagged js/ts/python/bash with a plausible snippet; 3-column pipe tables with header and separator rows; unordered lists of 3–5 dash items; inline links to https://example.com/… woven into paragraphs; and ![figure](…) images served by this platform's own placeholder API so they render in any preview.

wordCount is the whitespace-separated token count of the exact markdown string, and with a seed the same documents come back byte-identical forever.

Use it for

  • Test markdown renderers, sanitizers and WYSIWYG editors against exact feature mixes
  • Seed CMS and blog development databases with realistic multi-section articles
  • Reproducible markdown-to-HTML snapshot fixtures via seed (same document in every CI run)

Frequently asked questions

Can I control which Markdown features appear?

Yes — toggle codeBlocks, tables, lists, links and images individually and set sections for length; ideal for stress-testing a renderer's edge cases.

What constructs does it emit?

Standard Markdown — headings, emphasis, fenced code, pipe tables, lists and links — the constructs mainstream renderers handle.

How do I get reproducible documents?

seed — same seed, same document, forever. wordCount in the response tells you how big it came out.

Standards & references