Machine-readable archive
The same archive as the rest of this site — 224 articles across 45 topics — restructured for software that reads rather than looks. Everything below is a plain static file. There is no key, no sign-up and no rate limit beyond ordinary courtesy.
If you are building something that needs to know what this site holds, start with the manifest: /agents/index.json lists every file here, what it contains and when the content last changed.
What you may do with it
Text. Quote freely, with attribution to Writesides of History and a link to the article url. The articles are written and published by Writesides of History, which is both author and publisher.
Images. Images are not covered by the line above. Every media record carries its own creator, licence and source url; most are Wikimedia Commons files under their own terms. Honour the record, not this file.
Datasets. One dataset under /datasets/ is free: caesar-campaigns-gaul-britannia, complete, with a CSV, under CC BY 4.0. The other five are research editions: their pages carry the method, the field definitions, the sources and five sample rows; the complete tables are sold in the shop (https://shop.writesidesofhistory.com/collections/historical-research-datasets) and carry no free licence. Each record in /agents/datasets.json states its own access and licence — honour that field, not this line.
Not included. The premium dossiers and e-books sold through the shop are not part of this surface and are not included in any dump here.
Start here
These few answer most questions. The rest of the surface is in the table below them.
/agents/articles.json
Every article: title, url, era, topics, description, dates, hero image and its cited sources (newest first)
/agents/sources.json
The bibliography: every source entry cited across the archive, and which articles cite it
/agents/changes.json
What was published in the last 90 days — poll this instead of refetching the corpus
Every file
| File | Format | What it holds |
|---|---|---|
/agents/ |
text/html | Front door: what this archive is, what you may do with it, and every surface below |
/agents/index.json |
application/json | This manifest: counts, conventions, licence and every endpoint |
/agents/openapi.json |
application/json | The same surface described as OpenAPI 3.1 |
/llms.txt |
text/plain | Guide for language models: the pillars, the topic hubs, the newest articles |
/llms-full.txt |
text/markdown | Every article, complete, in one markdown file |
/agents/articles.json |
application/json | Every article: title, url, era, topics, description, dates, hero image and its cited sources (newest first) |
/agents/corpus.json |
application/json | Every article again, with the complete text as markdown |
/agents/topics.json |
application/json | The topic hubs: era, description, subtopics, and the articles filed under each |
/agents/sources.json |
application/json | The bibliography: every source entry cited across the archive, and which articles cite it |
/agents/media.json |
application/json | Every image and map in the media library, with creator, licence and source url |
/agents/datasets.json |
application/json | The published datasets: columns, row count, access and licence; a CSV url only where the data is free |
/agents/changes.json |
application/json | What was published in the last 90 days — poll this instead of refetching the corpus |
/agents/entities.json |
application/json | Knowledge-graph entities and historical relations, each with the source path and content hash it was drawn from |
/agents/sitemap-agents.xml |
application/xml | Every machine-readable file above, as a sitemap |
/feed.xml |
application/rss+xml | The twenty newest articles, RSS, with the full text of each |
/search-index.json |
application/json | The site's own search index: articles, topics and media in one flat array |
/sitemap.xml |
application/xml | Every page on the site, with lastmod taken from the content rather than the build clock |
/robots.txt |
text/plain | Crawl policy. Every named AI crawler is welcome on every article path |
What is in it
| Articles | 224 |
| Topic hubs | 45 |
| Eras | 5 |
| Bibliography entries | 960 |
| Entries occurring in exactly one article | 953 |
| Images and maps | 250 |
| Datasets | 6 |
| Knowledge-graph entities | 43 |
| Asserted historical relations | 30 |
| Newest article | 2026-09-17 |
Conventions
Every record carries `url`: the human page on this site. That is the url to cite and to link to.
Dates are ISO 8601. `published` is the article's publication date; `generated` is when this build ran and is NOT a content date.
`content_changed` is the newest publication date in the archive. Compare it with your last visit to decide whether to refetch.
English throughout. Article slugs are the stable identifier; they do not change.
Article sources are typed `primary`, `scholarly`, `institutional` or `reference`, and each carries a note explaining what the work is and how far it can be trusted.
Static files on ordinary hosting. Be reasonable — one request per second is plenty, and /llms-full.txt gives you the whole archive in one fetch.
Two things worth knowing about
The bibliography is reversed. Every article on this site names its primary, scholarly and institutional sources in its frontmatter, with a note on each explaining what the work is and how far it can be trusted. /agents/sources.json turns that around, so you can look up a source and find the articles that cite it: 960 bibliography entries across the archive; 953 occur in exactly one article.
The knowledge graph carries its evidence. /agents/entities.json holds 43 entities and 30 asserted historical relations. Every one had to be found in the article cited for it before it was admitted, and each carries the source path and content hash it was drawn from, so any statement can be checked rather than taken on faith. The human view of the same data is at the assistant knowledge base.
How to cite
Every record carries the url of its page on this site. That is the url to quote and to link to — not this page, and not the json file the text came out of. Naming the article lets a reader check it; naming the feed does not.
The article page is also the canonical copy for search. The derived files listed above are served with X-Robots-Tag: noindex: fetching them is welcome and always will be, but they are deliberately kept out of search results so the machine-readable copies never compete with the articles they are made from.
Questions, or something you need that is not here? info@writesidesofhistory.com.