For researchers and developers
Data & API
Everything published on this site is also available as structured data through a free, read-only API. Use it to search the documented graffiti, map the sites, or build your own visualizations.
What's available
The API is at https://dev.civilwargraffiti.org/api/v1/. It needs no account or key; open any of these links in a browser to explore.
| Endpoint | What it holds |
|---|---|
sites/ |
Buildings with documented graffiti, with their location and counts of walls and photographs. |
locations/ |
Addresses and latitude/longitude for each site. |
walls/ |
Photographed walls: room, position, date photographed, description, and image links. |
photos/ |
Individual pieces of graffiti cropped from a wall: type, description, image, where on the wall it appears, and the people it names. |
people/ |
People identified in the graffiti, with aliases and military service: rank, unit, branch, and Union or Confederate service. |
Every record includes its id, its API address (url), and a link to its page on this site (html_url). Add {id}/ to any endpoint for a single record, such as walls/{id}/.
Examples
- Every wall at Historic Blenheim:
walls/?site=4 - Graffiti that records a name:
photos/?graffiti_type=name - People who served the Union:
people/?governance=union - People who held the rank of captain:
people/?rank=captain - Sites matching “church”:
sites/?search=church
From a script or the command line, request JSON directly:
curl "https://dev.civilwargraffiti.org/api/v1/people/?rank=captain"
Things to know
- Pages of results. Lists return 50 records at a time, with
count,next, andpreviousfor paging. Ask for up to 500 at once with?page_size=500. - Filtering, searching, and sorting. Most endpoints accept filters like the examples above,
?search=for text, and?ordering=to sort (prefix a field with-for descending). The interactive reference lists every option. - Descriptions are HTML. Wall and photograph descriptions contain formatting markup such as paragraphs and line breaks.
- Choice values come with labels. Fields such as
military_rankhold a stable value (2nd_lieutenant) alongside a readable label (military_rank_display: “2nd Lieutenant”). - Crop positions. A photograph's
cropgives its rectangle in pixels of its wall's image, for placing graffiti on the wall. - Fair use of the service. Requests are limited to 120 per minute. If you need the whole dataset, page through it with a large
page_sizerather than requesting records one at a time. - Read-only. The API publishes what this site shows. Internal project notes are never included.
Reference
The interactive API reference documents every endpoint, field, and filter, and lets you try requests. The machine-readable OpenAPI schema can generate client code.
Citing and reusing the data
The data is available under a Creative Commons Attribution 4.0 International license (CC BY 4.0). You may share and adapt it for any purpose, including commercially, as long as you give credit. Please cite it as:
Civil War Graffiti Project, Roy Rosenzweig Center for History and New Media, George Mason University. https://dev.civilwargraffiti.org/data/. Accessed October 24, 2026.
Questions, corrections, or a project built on this data? Contact us at chnm@gmu.edu.