This is a specification for the OpenDnD API (https://api.opendnd.org) which can be used to generate, save, modify resources for use in world building, storytelling and building campaigns. These tools are designed with the DM in mind but some may be useful to a player looking to build a character and provide a rich backstory. The goal is to provide you with a starting point for your creativity and help solve the "blank canvas problem" when coming up with content for your world.
Below are a list of API routes that are on the roadmap:
POST https://api.opendnd.org/v1/authPOST https://api.opendnd.org/v1/import
GET https://api.opendnd.org/v1/itemsPOST https://api.opendnd.org/v1/itemsGET https://api.opendnd.org/v1/items/:item_idPUT https://api.opendnd.org/v1/items/:item_idDELETE https://api.opendnd.org/v1/items/:item_id
GET https://api.opendnd.org/v1/toolsPOST https://api.opendnd.org/v1/toolsGET https://api.opendnd.org/v1/tools/:tool_idPUT https://api.opendnd.org/v1/tools/:tool_idDELETE https://api.opendnd.org/v1/tools/:tool_id
GET https://api.opendnd.org/v1/featuresPOST https://api.opendnd.org/v1/featuresGET https://api.opendnd.org/v1/features/:feature_idPUT https://api.opendnd.org/v1/features/:feature_idDELETE https://api.opendnd.org/v1/features/:feature_id
GET https://api.opendnd.org/v1/familiarsPOST https://api.opendnd.org/v1/familiarsGET https://api.opendnd.org/v1/familiars/:familiar_idPUT https://api.opendnd.org/v1/familiars/:familiar_idDELETE https://api.opendnd.org/v1/familiars/:familiar_id
GET https://api.opendnd.org/v1/racesPOST https://api.opendnd.org/v1/racesGET https://api.opendnd.org/v1/races/:race_idPUT https://api.opendnd.org/v1/races/:race_idDELETE https://api.opendnd.org/v1/races/:race_id
GET https://api.opendnd.org/v1/backgroundsPOST https://api.opendnd.org/v1/backgroundsGET https://api.opendnd.org/v1/backgrounds/:background_idPUT https://api.opendnd.org/v1/backgrounds/:background_idDELETE https://api.opendnd.org/v1/backgrounds/:background_id
GET https://api.opendnd.org/v1/klassesPOST https://api.opendnd.org/v1/klassesGET https://api.opendnd.org/v1/klasses/:klass_idPUT https://api.opendnd.org/v1/klasses/:klass_idDELETE https://api.opendnd.org/v1/klasses/:klass_id
GET https://api.opendnd.org/v1/domainsPOST https://api.opendnd.org/v1/domainsGET https://api.opendnd.org/v1/domains/:domain_idPOST https://api.opendnd.org/v1/domains/:domain_id/simulateGET https://api.opendnd.org/v1/domains/:domain_id/personsPOST https://api.opendnd.org/v1/domains/:domain_id/personsGET https://api.opendnd.org/v1/domains/:domain_id/mapPOST https://api.opendnd.org/v1/domains/:domain_id/mapPOST https://api.opendnd.org/v1/domains/:domain_id/export/:formatPUT https://api.opendnd.org/v1/domains/:domain_idDELETE https://api.opendnd.org/v1/domains/:domain_id
GET https://api.opendnd.org/v1/dynastiesPOST https://api.opendnd.org/v1/dynastiesGET https://api.opendnd.org/v1/dynasties/:dynasty_idPOST https://api.opendnd.org/v1/dynasties/:dynasty_id/simulateGET https://api.opendnd.org/v1/dynasties/:dynasty_id/factionGET https://api.opendnd.org/v1/dynasties/:dynasty_id/personsGET https://api.opendnd.org/v1/dynasties/:dynasty_id/buildingsGET https://api.opendnd.org/v1/dynasties/:dynasty_id/itemsPOST https://api.opendnd.org/v1/dynasties/:dynasty_id/export/:formatPUT https://api.opendnd.org/v1/dynasties/:dynasty_idDELETE https://api.opendnd.org/v1/dynasties/:dynasty_id
GET https://api.opendnd.org/v1/factionsPOST https://api.opendnd.org/v1/factionsGET https://api.opendnd.org/v1/factions/:faction_idPOST https://api.opendnd.org/v1/factions/:faction_id/simulateGET https://api.opendnd.org/v1/factions/:faction_id/personsPOST https://api.opendnd.org/v1/factions/:faction_id/personsGET https://api.opendnd.org/v1/factions/:faction_id/buildingsGET https://api.opendnd.org/v1/factions/:faction_id/itemsPOST https://api.opendnd.org/v1/factions/:faction_id/export/:formatPUT https://api.opendnd.org/v1/factions/:faction_idDELETE https://api.opendnd.org/v1/factions/:faction_id
GET https://api.opendnd.org/v1/personsPOST https://api.opendnd.org/v1/personsGET https://api.opendnd.org/v1/persons/:person_idGET https://api.opendnd.org/v1/persons/:person_id/avatarPOST https://api.opendnd.org/v1/persons/:person_id/avatarPOST https://api.opendnd.org/v1/persons/:person_id/simulatePOST https://api.opendnd.org/v1/persons/:person_id/export/:formatPUT https://api.opendnd.org/v1/persons/:person_idDELETE https://api.opendnd.org/v1/persons/:person_id
GET https://api.opendnd.org/v1/dnaPOST https://api.opendnd.org/v1/dnaGET https://api.opendnd.org/v1/dna/:dna_idPOST https://api.opendnd.org/v1/dna/:dna_id/export/:formatPUT https://api.opendnd.org/v1/dna/:dna_idDELETE https://api.opendnd.org/v1/dna/:dna_id
GET https://api.opendnd.org/v1/sigilsPOST https://api.opendnd.org/v1/sigilsGET https://api.opendnd.org/v1/sigils/:sigil_idPOST https://api.opendnd.org/v1/sigils/:sigil_id/export/:formatPUT https://api.opendnd.org/v1/sigils/:sigil_idDELETE https://api.opendnd.org/v1/sigils/:sigil_id
POST https://api.opendnd.org/v1/namesGET https://api.opendnd.org/v1/names/themesPOST https://api.opendnd.org/v1/names/themesGET https://api.opendnd.org/v1/names/themes/:theme_idPUT https://api.opendnd.org/v1/names/themes/:theme_idDELETE https://api.opendnd.org/v1/names/themes/:theme_id
GET https://api.opendnd.org/v1/buildingsPOST https://api.opendnd.org/v1/buildingsGET https://api.opendnd.org/v1/buildings/:building_idGET https://api.opendnd.org/v1/buildings/:building_id/mapPOST https://api.opendnd.org/v1/buildings/:building_id/mapPOST https://api.opendnd.org/v1/buildings/:building_id/export/:formatPUT https://api.opendnd.org/v1/buildings/:building_idDELETE https://api.opendnd.org/v1/buildings/:building_id
GET https://api.opendnd.org/v1/titlesPOST https://api.opendnd.org/v1/titlesGET https://api.opendnd.org/v1/titles/:title_idPUT https://api.opendnd.org/v1/titles/:title_idDELETE https://api.opendnd.org/v1/titles/:title_id
GET https://api.opendnd.org/v1/encountersPOST https://api.opendnd.org/v1/encountersGET https://api.opendnd.org/v1/encounters/:encounter_idPOST https://api.opendnd.org/v1/encounters/:encounter_id/export/:formatPUT https://api.opendnd.org/v1/encounters/:encounter_idDELETE https://api.opendnd.org/v1/encounters/:encounter_id
GET https://api.opendnd.org/v1/monstersPOST https://api.opendnd.org/v1/monstersGET https://api.opendnd.org/v1/monsters/:monster_idPOST https://api.opendnd.org/v1/monsters/:monster_id/export/:formatPUT https://api.opendnd.org/v1/monsters/:monster_idDELETE https://api.opendnd.org/v1/monsters/:monster_id
GET https://api.opendnd.org/v1/trapsPOST https://api.opendnd.org/v1/trapsGET https://api.opendnd.org/v1/traps/:trap_idPOST https://api.opendnd.org/v1/traps/:trap_id/export/:formatPUT https://api.opendnd.org/v1/traps/:trap_idDELETE https://api.opendnd.org/v1/traps/:trap_id
GET https://api.opendnd.org/v1/dungeonsPOST https://api.opendnd.org/v1/dungeonsGET https://api.opendnd.org/v1/dungeons/:dungeon_idPOST https://api.opendnd.org/v1/dungeons/:dungeon_id/export/:formatPUT https://api.opendnd.org/v1/dungeons/:dungeon_idDELETE https://api.opendnd.org/v1/dungeons/:dungeon_id
GET https://api.opendnd.org/v1/questsPOST https://api.opendnd.org/v1/questsGET https://api.opendnd.org/v1/quests/:quest_idPOST https://api.opendnd.org/v1/quests/:quest_id/export/:formatPUT https://api.opendnd.org/v1/quests/:quest_idDELETE https://api.opendnd.org/v1/quests/:quest_id
GET https://api.opendnd.org/v1/eventsPOST https://api.opendnd.org/v1/eventsGET https://api.opendnd.org/v1/events/:event_idPOST https://api.opendnd.org/v1/events/:event_id/export/:formatPUT https://api.opendnd.org/v1/events/:event_idDELETE https://api.opendnd.org/v1/events/:event_id
GET https://api.opendnd.org/v1/dialogsPOST https://api.opendnd.org/v1/dialogsGET https://api.opendnd.org/v1/dialogs/:dialog_idPOST https://api.opendnd.org/v1/dialogs/:dialog_id/export/:formatPUT https://api.opendnd.org/v1/dialogs/:dialog_idDELETE https://api.opendnd.org/v1/dialogs/:dialog_id
GET https://api.opendnd.org/v1/storiesPOST https://api.opendnd.org/v1/storiesGET https://api.opendnd.org/v1/stories/:story_idPOST https://api.opendnd.org/v1/stories/:story_id/export/:formatPUT https://api.opendnd.org/v1/stories/:story_idDELETE https://api.opendnd.org/v1/stories/:story_id
GET https://api.opendnd.org/v1/calendarsPOST https://api.opendnd.org/v1/calendarsGET https://api.opendnd.org/v1/calendars/:calendar_idPOST https://api.opendnd.org/v1/calendars/:calendar_id/export/:formatPUT https://api.opendnd.org/v1/calendars/:calendar_idDELETE https://api.opendnd.org/v1/calendars/:calendar_id
GET https://api.opendnd.org/v1/languagesPOST https://api.opendnd.org/v1/languagesGET https://api.opendnd.org/v1/languages/:language_idPOST https://api.opendnd.org/v1/languages/:language_id/export/:formatPUT https://api.opendnd.org/v1/languages/:language_idDELETE https://api.opendnd.org/v1/languages/:language_id
GET https://api.opendnd.org/v1/sayingsPOST https://api.opendnd.org/v1/sayingsGET https://api.opendnd.org/v1/sayings/:saying_idPOST https://api.opendnd.org/v1/sayings/:saying_id/export/:formatPUT https://api.opendnd.org/v1/sayings/:saying_idDELETE https://api.opendnd.org/v1/sayings/:saying_id
GET https://api.opendnd.org/v1/culturesPOST https://api.opendnd.org/v1/culturesGET https://api.opendnd.org/v1/cultures/:culture_idPOST https://api.opendnd.org/v1/cultures/:culture_id/export/:formatPUT https://api.opendnd.org/v1/cultures/:culture_idDELETE https://api.opendnd.org/v1/cultures/:culture_id
GET https://api.opendnd.org/v1/religionsPOST https://api.opendnd.org/v1/religionsGET https://api.opendnd.org/v1/religions/:religion_idPOST https://api.opendnd.org/v1/religions/:religion_id/export/:formatPUT https://api.opendnd.org/v1/religions/:religion_idDELETE https://api.opendnd.org/v1/religions/:religion_id
GET https://api.opendnd.org/v1/campaignsPOST https://api.opendnd.org/v1/campaignsGET https://api.opendnd.org/v1/campaigns/:campaign_idPOST https://api.opendnd.org/v1/campaigns/:campaign_id/export/:formatPUT https://api.opendnd.org/v1/campaigns/:campaign_idDELETE https://api.opendnd.org/v1/campaigns/:campaign_id
GET https://api.opendnd.org/v1/spellsPOST https://api.opendnd.org/v1/spellsGET https://api.opendnd.org/v1/spells/:spell_idPOST https://api.opendnd.org/v1/spells/:spell_id/export/:formatPUT https://api.opendnd.org/v1/spells/:spell_idDELETE https://api.opendnd.org/v1/spells/:spell_id
GET https://api.opendnd.org/v1/artworkPOST https://api.opendnd.org/v1/artworkGET https://api.opendnd.org/v1/artwork/:artwork_idPOST https://api.opendnd.org/v1/artwork/:artwork_id/export/:formatPUT https://api.opendnd.org/v1/artwork/:artwork_idDELETE https://api.opendnd.org/v1/artwork/:artwork_id
GET https://api.opendnd.org/v1/diseasesPOST https://api.opendnd.org/v1/diseasesGET https://api.opendnd.org/v1/diseases/:disease_idPOST https://api.opendnd.org/v1/diseases/:disease_id/export/:formatPUT https://api.opendnd.org/v1/diseases/:disease_idDELETE https://api.opendnd.org/v1/diseases/:disease_id
GET https://api.opendnd.org/v1/vehiclesPOST https://api.opendnd.org/v1/vehiclesGET https://api.opendnd.org/v1/vehicles/:vehicle_idPOST https://api.opendnd.org/v1/vehicles/:vehicle_id/export/:formatPUT https://api.opendnd.org/v1/vehicles/:vehicle_idDELETE https://api.opendnd.org/v1/vehicles/:vehicle_id
The software in this project is licensed under The MIT License (MIT). This project uses material licensed under the OPEN GAME LICENSE Version 1.0a. For more information please refer to the LICENSE.