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
| Name | Mode | Description |
|---|---|---|
id | exact | id.monster.<slug> or raw upstream key |
name | substring | matches the display name |
family | exact | e.g. beast, undead, demon |
tier | exact | standard, elite, boss, ... |
loot_table_id | exact | id.loot_table.<slug> |
min_hp, max_hp | range | hp |
min_damage_min, max_damage_min | range | minimum damage |
min_damage_max, max_damage_max | range | maximum damage |
has_model | bool | only monsters with (or without) a registered model |
has_portrait | bool | only monsters with (or without) a portrait |
patch | id|version|current | replay against a different patch |
page, limit | pagination | default 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).