Monsters

Monster stat blocks, abilities, drop tables, portraits, and 3D models. Patch-aware (see Patches).

Endpoints

GET /v2/monsters                          list with filters
GET /v2/monsters/{id}                     full stat block
GET /v2/monsters/{id}/abilities           ability list (cooldowns + conditions)
GET /v2/monsters/{id}/loot                loot table this monster drops (weights + probabilities)
GET /v2/monsters/{id}/portrait            portrait PNG (Content-Type: image/png)
GET /v2/monsters/{id}/model               binary glTF (Content-Type: model/gltf-binary)

Query parameters

NameModeDescription
idexactid.monster.<slug> or raw upstream key
namesubstringmatches the display name
familyexacte.g. beast, undead, demon
tierexactstandard, elite, boss, ...
loot_table_idexactid.loot_table.<slug>
min_hp, max_hprangehp
min_damage_min, max_damage_minrangeminimum damage
min_damage_max, max_damage_maxrangemaximum damage
has_modelboolonly monsters with (or without) a registered model
has_portraitboolonly monsters with (or without) a portrait
patchid|version|currentreplay against a different patch
page, limitpaginationdefault 25, max 250

Example: stat block

curl 'https://api.darkerdb.com/v2/monsters/id.monster.flameboar'

{
   "body": {
      "id":            "id.monster.flameboar",
      "name":          "Flame Boar",
      "family":        "beast",
      "tier":          "standard",
      "hp":            280,
      "damage_min":    22,
      "damage_max":    38,
      "resistances":   { "fire": 90, "physical": 0 },
      "behaviors":     [ "charge", "fire_aura" ],
      "loot_table_id": "id.loot_table.flameboar",
      "captured_at":   "2026-05-16T01:03:43+00:00",
      "patch_id":      9
   }
}

Loot

curl 'https://api.darkerdb.com/v2/monsters/id.monster.flameboar/loot'
{
   "loot_table": {
      "id":   "id.loot_table.flameboar",
      "name": "Flame Boar drops"
   },
   "entries": [
      {
         "item_id":      "id.item.hide_boarflame",
         "weight":       3,
         "probability":  1.0,
         "min_quantity": 1,
         "max_quantity": 2,
         "tier":         "uncommon"
      }
   ]
}

probability is the row's weight / sum(all weights). Empty loot_table: null when the monster has no registered table on the requested patch.

Abilities

curl 'https://api.darkerdb.com/v2/monsters/id.monster.flameboar/abilities'
{
   "abilities": [
      {
         "monster_id": "flameboar",
         "ability_id": "fire_charge",
         "cooldown":   8.0,
         "conditions": { "min_distance": 4, "max_distance": 12 }
      }
   ]
}

Rendering the 3D model

/model serves a binary glTF (.glb) file. Drop it into any glTF viewer or render inline with <model-viewer>:

<script type="module" src="https://unpkg.com/@google/model-viewer/dist/model-viewer.min.js"></script>
<model-viewer
   src="https://api.darkerdb.com/v2/monsters/id.monster.flameboar/model"
   alt="Flame Boar 3D model"
   auto-rotate
   camera-controls>
</model-viewer>

For more control, load with three.js's GLTFLoader. Animations live in the entity's animation_paths field (currently emits the static T-pose; animations land in a follow-up).