Open5e API
Free tabletop RPG API with no key: monsters, spells, magic items and rules from the 5e SRD plus Tome of Beasts, Level Up A5e and other open sources. Live example.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Open5e API?
Open5e is a free, key-free API for fifth-edition tabletop content. It serves monsters, spells, magic items, classes, races and rules from the 5e SRD and from other openly licensed publishers such as Kobold Press and EN Publishing, each record tagged with the document it came from.
Publisher provenance is the feature that justifies a second 5e API existing at all. Every record carries a `document` object naming the source, its publisher and its game system, so the aboleth in our capture is explicitly from EN Publishing's Monstrous Menagerie under the Advanced 5th Edition system — not the SRD version. That matters enormously in play: two monsters with the same name and very different stat blocks will both come back from an unfiltered query, and shipping the wrong one into a combat tracker is a bad afternoon for somebody.
The other thing to settle before writing a line of client code is which API version you are on. v1 and v2 coexist with different shapes and even different resource names — v1 has `monsters` keyed by `slug`, v2 has `creatures` keyed by `key`, and the nested objects differ throughout. Both are live and neither is going away soon, so pick one, pin it in your base URL, and do not mix. Pagination is Django REST framework's standard `count` / `next` / `previous` / `results`, with absolute URLs in the links.
Quick facts
- Base URL
https://api.open5e.com- Authentication
- No key or account. The API is open source and self-hostable if you would rather not depend on the public instance.
- Rate limit
- No rate-limit headers are returned. The content is static between publisher releases, so fetch and cache rather than querying live.
- Pricing
- Free and open source. The underlying content is published under open licences.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Open5e API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch a monster stat block from the v2 API
GET https://api.open5e.com/v2/creatures/?limit=1
curl 'https://api.open5e.com/v2/creatures/?limit=1'const res = await fetch("https://api.open5e.com/v2/creatures/?limit=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.open5e.com/v2/creatures/?limit=1", timeout=20)
res.raise_for_status()
print(res.json()){
"count": 3541,
"next": "https://api.open5e.com/v2/creatures/?limit=1&page=2",
"previous": null,
"results": [
{
"key": "a5e-mm_aboleth",
"name": "Aboleth",
"document": {
"name": "Monstrous Menagerie",
"key": "a5e-mm",
"type": "SOURCE",
"display_name": "Monstrous Menagerie",
"publisher": {
"name": "EN Publishing",
"key": "en-publishing"
},
"gamesystem": {
"name": "Advanced 5th Edition",
"key": "a5e"
},
"permalink": "https://enpublishingrpg.com/collections/level-up-advanced-5th-edition-a5e/products/level-up-monstrous-menagerie-a5e"
},
"type": {
"name": "Aberration",
"key": "aberration"
},
"size": {
"name": "Large",
"key": "large"
},
"challenge_rating": 11.0,
"proficiency_bonus": null,
"speed": {
"walk": 10,
"unit": "feet",
"swim": 40
},
"speed_all": {
"unit": "feet",
"walk": 10,
"crawl": 5,
"hover": false,
"fly": 0,
"burrow": 0,
"climb": 5,
"swim": 40
},
"category": "Monsters",
"subcategory": null,
"alignment": "chaotic evil",
"languages": {
"as_string": "Deep Speech, telepathy 120 ft.",
"data": [
{
"name": "Deep Speech",
"key": "deep-speech",
"desc": "Typical speakers include aboleths and cloakers. It is only spoken."
}
]
},
"armor_class"Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | query | Optional | Page size. Stat blocks are large, so keep this modest when browsing. 1 |
page | query | Optional | Page number. Prefer following the absolute `next` URL rather than constructing it. 2 |
document__key | query | Optional | Restrict results to one source document — the parameter to reach for when you need SRD-only content. srd |
challenge_rating | query | Optional | Filter creatures by CR. Fractional values are decimals, so a quarter-CR monster is 0.25. 11 |
search | query | Optional | Full-text search across the collection. aboleth |
Response fields
countinteger- Total records matching the query across all pages, not the number in `results`.
next / previousstring | null- Absolute URLs for pagination, null at the ends. Follow them rather than building page numbers by hand.
results[].keystring- Stable slug in v2, prefixed by its source — `a5e-mm_aboleth`. The v1 equivalent field is called `slug` and has no prefix.
results[].documentobject- Source provenance: `name`, `key`, `display_name`, a `publisher` object and a `gamesystem` object. Read this before assuming a record is SRD content.
results[].challenge_ratingfloat- A float, so CR 11 arrives as `11.0` and low-CR monsters as `0.25`. Format for display rather than printing raw.
results[].speed / speed_allobject- `speed` holds only the movement modes that apply plus a `unit`; `speed_all` includes every mode with zeros and a boolean `hover`. Use `speed_all` when you need a uniform shape.
results[].languagesobject- Both an `as_string` rendering for display and a `data` array of language objects for structured use.
results[].proficiency_bonusinteger | null- Null on records from systems that do not use it — a good reminder that fields vary by source document.
What you can build with the Open5e API
- Build a monster search for a virtual tabletop or DM screen
- Look up spell descriptions in a campaign companion app
- Filter encounters by challenge rating for a party of a given level
- Compare SRD and third-party versions of the same creature
- Seed a homebrew tool with openly licensed base content
Common errors and how to fix them
Unexpected fields or missing ones
You are mixing v1 and v2 responses.
Fix: Pin one version in your base URL. v1 uses `slug` and `monsters`; v2 uses `key` and `creatures`, with different nested shapes.
Third-party monsters where you expected SRD
The default result set spans every source document.
Fix: Add `document__key=srd` — or whichever source you want — to any query whose results you intend to treat as canonical.
404 on a slug that exists
v2 keys are prefixed with their document, so the bare name will not resolve.
Fix: Use the exact `key` from a list response, prefix included, rather than deriving it from the monster's name.
Very slow responses on large pages
Stat blocks are verbose and a big `limit` multiplies that.
Fix: Page with a small limit and follow `next`, or filter server-side before paging.
Open5e API — frequently asked questions
Is Open5e free to use?
Yes — no key, no account, and the content is openly licensed. The project is also open source, so you can self-host the API if you would rather not depend on the public instance for a production app.
How is Open5e different from the D&D 5e SRD API?
Coverage and provenance. Open5e includes third-party open content such as Kobold Press's Tome of Beasts and EN Publishing's Level Up A5e alongside the SRD, and tags every record with the document it came from so you can tell them apart.
How do I get only SRD content?
Add `document__key=srd` to your query. Without it, results span every source document the project indexes, which means two differently statted monsters can share a name in the same response.
Should I use the v1 or v2 API?
Whichever you pick, do not mix them. v2 is the newer shape with `creatures` and prefixed `key` values and richer nested objects; v1 remains available with `monsters` and plain `slug` values. Both are live, and their response shapes are not interchangeable.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
Markdown Table Generator
Build GitHub-flavored Markdown tables with an editable grid, column alignment and CSV/TSV paste import. Free online Markdown table generator, 100% in-browser.
Open5e is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.