Overview
# Introduction Welcome to the dnd5eapi, the Dungeons & Dragons 5th Edition API! This documentation should help you familiarize yourself with the resources available and how to consume them with HTTP requests. Read through the getting started section before you dive in. Most of your problems should be solved just by reading through it. ## Getting Started Let's make our first API request to the D&D 5th Edition API! Open up a terminal and use [curl](http://curl.haxx.se/) or [httpie](http://httpie.org/) to make an API request for a resource. You can also scroll through the definitions below and send requests directly from the endpoint documentation! For example, if you paste and run this `curl` command: ```bash curl -X GET "https://www.dnd5eapi.co/api/ability-scores/cha" -H "Accept: application/json" ``` We should see a result containing details about the Charisma ability score: ```bash { "index": "cha", "name": "CHA", "full_name": "Charisma", "desc": [ "Charisma measures your ability to interact effectively with others. It includes such factors as confidence and eloquence, and it can represent a charming or commanding personality.", "A Charisma check might arise when you try to influence or entertain others, when you try to make an impression or tell a convincing lie, or when you are navigating a tricky social situation. The Deception, Intimidation, Performance, and Persuasion skills reflect aptitude in certain kinds of Charisma checks." ], "skills": [ { "name": "Deception", "index": "deception", "url": "/api/skills/deception" }, { "name": "Intimidation", "index": "intimidation", "url": "/api/skills/intimidation" }, { "name": "Performance", "index": "performance", "url": "/api/skills/performance" }, { "name": "Persuasion", "index": "persuasion", "url": "/api/skills/persuasion" } ], "url": "/api/ability-scores/cha" } ``` ## Authentication The dnd5eapi is a completely open API. No authentication is required to query and get data. This also means that we've limited what you can do to just `GET`-ing the data. If you find a mistake in the data, feel free to [message us](https://discord.gg/TQuYTv7). ## GraphQL This API supports [GraphQL](https://graphql.org/). The GraphQL URL for this API is `https://www.dnd5eapi.co/graphql`. Most of your questions regarding the GraphQL schema can be answered by querying the endpoint with the Apollo sandbox explorer. ## Schemas Definitions of all schemas will be accessible in a future update. Two of the most common schemas are described here. ### `APIReference` Represents a minimal representation of a resource. The detailed representation of the referenced resource can be retrieved by making a request to the referenced `URL`. ``` APIReference { index string name string url string } ``` <hr> ### `DC` Represents a difficulty check. ``` DC { dc_type APIReference dc_value number success_type "none" | "half" | "other" } ``` <hr> ### `Damage` Represents damage. ``` Damage { damage_type APIReference damage_dice string } ``` <hr> ### `Choice` Represents a choice made by a player. Commonly seen related to decisions made during character creation or combat (e.g.: the description of the cleric class, under **Proficiencies**, states "Skills: Choose two from History, Insight, Medicine, Persuasion, and Religion" [[SRD p15]](https://media.wizards.com/2016/downloads/DND/SRD-OGL_V5.1.pdf#page=15)) ``` Choice { desc string choose number type string from OptionSet } ``` <hr> ### `OptionSet` The OptionSet structure provides the options to be chosen from, or sufficient data to fetch and interpret the options. All OptionSets have an `option_set_type` attribute that indicates the structure of the object that contains the options. The possible values are `options_array`, `equipment_category`, and `reference_list`. Other attributes on the OptionSet depend on the value of this attribute. - `options_array` - `options` (array): An array of Option objects. Each item in the array represents an option that can be chosen. - `equipmen
D&D 5e API is an open data API from dnd5eapi.co. It needs no API key. It is served over HTTPS. Its OpenAPI description documents 47 endpoints.
At a glance
- Authentication
- No auth
- HTTPS
- Yes
- CORS
- Unknown
- Category
- Open Data
- Base URL
https://www.dnd5eapi.co- Version
- 0.1
- Endpoints
- 47
- OpenAPI
- Specification ↗
- Spec updated
- 2023-02-23
Make a first request
Replace the placeholders; the documentation says exactly where credentials go.
curl -X GET "https://www.dnd5eapi.co/api" \
-H "Accept: application/json"const response = await fetch("https://www.dnd5eapi.co/api", {
method: "GET",
headers: {
"Accept": "application/json",
},
});
const data = await response.json();
console.log(data);import requests
response = requests.request(
"GET",
"https://www.dnd5eapi.co/api",
headers={
"Accept": "application/json",
},
timeout=30,
)
print(response.json())Endpoints
| Method | Path | What it does |
|---|---|---|
| GET | /api | Get all resource URLs. |
| GET | /api/ability-scores/{index} | Get an ability score by index. |
| GET | /api/alignments/{index} | Get an alignment by index. |
| GET | /api/backgrounds/{index} | Get a background by index. |
| GET | /api/classes/{index} | Get a class by index. |
| GET | /api/classes/{index}/features | Get features available for a class. |
| GET | /api/classes/{index}/levels | Get all level resources for a class. |
| GET | /api/classes/{index}/levels/{class_level} | Get level resource for a class and level. |
| GET | /api/classes/{index}/levels/{class_level}/features | Get features available to a class at the requested level. |
| GET | /api/classes/{index}/levels/{spell_level}/spells | Get spells of the requested level available to the class. |
| GET | /api/classes/{index}/multi-classing | Get multiclassing resource for a class. |
| GET | /api/classes/{index}/proficiencies | Get proficiencies available for a class. |
| GET | /api/classes/{index}/spellcasting | Get spellcasting info for a class. |
| GET | /api/classes/{index}/spells | Get spells available for a class. |
| GET | /api/classes/{index}/subclasses | Get subclasses available for a class. |
| GET | /api/conditions/{index} | Get a condition by index. |
| GET | /api/damage-types/{index} | Get a damage type by index. |
| GET | /api/equipment-categories/{index} | Get an equipment category by index. |
| GET | /api/equipment/{index} | Get an equipment item by index. |
| GET | /api/feats/{index} | Get a feat by index. |
| GET | /api/features/{index} | Get a feature by index. |
| GET | /api/languages/{index} | Get a language by index. |
| GET | /api/magic-items/{index} | Get a magic item by index. |
| GET | /api/magic-schools/{index} | Get a magic school by index. |
| GET | /api/monsters | Get list of monsters with optional filtering |
| GET | /api/monsters/{index} | Get monster by index. |
| GET | /api/proficiencies/{index} | Get a proficiency by index. |
| GET | /api/races/{index} | Get a race by index. |
| GET | /api/races/{index}/proficiencies | Get proficiencies available for a race. |
| GET | /api/races/{index}/subraces | Get subraces available for a race. |
| GET | /api/races/{index}/traits | Get traits available for a race. |
| GET | /api/rule-sections/{index} | Get a rule section by index. |
| GET | /api/rules/{index} | Get a rule by index. |
| GET | /api/skills/{index} | Get a skill by index. |
| GET | /api/spells | Get list of spells with optional filtering. |
| GET | /api/spells/{index} | Get a spell by index. |
| GET | /api/subclasses/{index} | Get a subclass by index. |
| GET | /api/subclasses/{index}/features | Get features available for a subclass. |
| GET | /api/subclasses/{index}/levels | Get all level resources for a subclass. |
| GET | /api/subclasses/{index}/levels/{subclass_level} | Get level resources for a subclass and level. |
| GET | /api/subclasses/{index}/levels/{subclass_level}/features | Get features of the requested spell level available to the class. |
| GET | /api/subraces/{index} | Get a subrace by index. |
| GET | /api/subraces/{index}/proficiencies | Get proficiences available for a subrace. |
| GET | /api/subraces/{index}/traits | Get traits available for a subrace. |
| GET | /api/traits/{index} | Get a trait by index. |
| GET | /api/weapon-properties/{index} | Get a weapon property by index. |
| GET | /api/{endpoint} | Get list of all available resources for an endpoint. |
Questions
Does the D&D 5e API API need an API key?
No. The D&D 5e API API can be called without an API key or sign-up, which makes it handy for prototypes and front-end demos.
Does the D&D 5e API API support HTTPS?
Yes, the D&D 5e API API is served over HTTPS.
How many endpoints does the D&D 5e API API have?
Its OpenAPI description lists 47 endpoints in version 0.1. All of them are shown on this page.
What are alternatives to the D&D 5e API API?
Other Open Data APIs include Search Services, Wayback API, Wikipedia, Nasdaq Data Link, University of Oslo.
Similar open data APIs
Compare alternatives →Search Services
Open DataAPI for Internet Archive's Search-related services
Wayback API
Open DataAPI for Internet Archive's Wayback Machine
Wikipedia
Open DataMediawiki Encyclopedia
Nasdaq Data Link
Open DataThe source for financial, economic, and alternative datasets, serving investment professionals.
University of Oslo
Open DataCourses, lecture videos, detailed information for courses etc. for the University of Oslo (Norway)
Data API
Open DataServes the Clever Data API
Listed from APIs.guru (CC0).