Explore the DarkerDB API documentation, your gateway to harnessing Dark and Darker game data. Use our APIs to track in-game market trends, analyze live player stats, and access detailed item data, including stats, descriptions, and market data. Download game assets like item icons to enhance your apps or generate interactive tooltips. Feel free to get in touch with us in our Discord for support or to request new features or data!

Monsters

Monster stat blocks, abilities, drop tables, spawn locations, portraits, and 3D models. Always reflects the current patch. Drops are resolved for you by /v2/monsters/{id}/loot; spawn locations by /v2/monsters/{id}/locations; portraits by /v2/monsters/{id}/icon; meshes by /v2/monsters/{id}/model.

GET /v2/monsters

Pass archetypes=1 for the catalog view — one row per creature (the base variant at its lowest grade) instead of one per grade, each carrying its grades array and any extra_variants (unique / fake_death spawn-states). Cursor pagination keys on the archetype id in that mode.

&archetypes = Collapse grade variants to one row per creature
&class_type = Monster class
&grade_type = Encounter grade
&character_type = Creature type tag (demon, skeleton, beast, …)
&locale = Resolve Text_* keys to translated strings (names, flavor, enum labels)
Default: en
&sort = `field:order` or `asc|desc` (default field per endpoint)
&cursor = Opaque cursor from the previous response's `pagination.next`; omit for the first page.
&limit = Pagination
Options: 1 - 200
Default: 50

GET /v2/monsters/{id}

&id = Pick any monster id from the list

Accepts a bare archetype id (id.monster.wraith) or any grade variant (…_common / …_elite / …_nightmare); an archetype id resolves to the base creature at its lowest grade. The response lists every sibling in variants — grades plus unique / fake_death spawn-states, each with its grade_type, variant label, and localized name — plus the hydrated abilities list (cast order, with derived name, icon, damage hits, and applied statuses) and has_portrait / has_model flags.

GET /v2/monsters/{id}/locations

&id = Pick any monster id from the list

Where the creature spawns: the dungeon modules that place it, grouped by dungeon (ice_cavern, goblin_cave, crypt, …). Each module carries its localized name and a spawn_count — placement totals across the module's variants, a relative "how common here" signal. Archetype-level: any grade variant returns the same set.

GET /v2/monsters/{id}/loot

&id = Pick any monster id from the list

Everything the monster can drop, as a bare list of drops. The body is the array. Each entry is an item_id, archetype, localized name, rarity, rarity_grade, drop_rate (the per-roll probability, 0–1, of that specific item), count, category (gear / quest / event), and a resolved map_tier (id, name, mode, floor). So "which rarities can drop" (artifacts included) reads straight off the list. Sorted by drop_rate descending. Loot is family-level, so a bare archetype id or any grade variant returns the same table.

A rate table is a categorical draw over rarity grades (grade 0 = nothing): a grade is picked in proportion to its weight, then one item uniformly within it, so a drop's rate is its grade weight over the table's total, split across the items sharing that grade. luck scales each grade's weight by its CT_LuckGrade multiplier before the draw and the distribution renormalizes (rarer grades climb, nothing/poor/common fall). Within one pool the item chances plus the nothing outcome sum to 1; a monster rolls several pools per kill, so the whole list sums to the expected number of items dropped, which routinely exceeds 1.

By default each item's drop_rate is its best across all dungeon tiers, and map_tier reports which tier that was; pass the dungeon_grade query param (numeric code) to pin one tier.

&dungeon_grade = Report odds at one dungeon tier instead of best-across
Example: 0
&category = Keep only these categories (csv)

GET /v2/monsters/{id}/icon

&id = Pick any monster id from the list

Monster portrait, served through the shared /icon route. Elite and nightmare variants carry the game's tinted grade portraits when one ships, falling back to the base portrait; a bare archetype id serves the lowest grade's.

&size = Icon transforms — resize to N (square) or WxH. 1–512 per axis.
Example: 64 or 64x96
&dpr = Icon transforms — pixel-density multiplier (1, 2, or 3). Combine with size for retina renders.
&format = Icon transforms — re-encode. Omit to keep the source format.
&trim = Icon transforms — auto-strip transparent margin (1% fuzz).
&bg = Icon transforms — background fill (#RRGGBB, #RRGGBBAA, or transparent).
Example: #000000 or transparent

GET /v2/monsters/{id}/model

&id = Pick any monster id from the list

The monster's 3D mesh (model/gltf-binary), rendered inline below — drag to orbit. 302s to the shared codex asset bytes. Family-resolved; 404s with no model until a mesh is extracted and indexed for the family.

texturize=false serves the flat-grey, textureless variant (the model's shape on its own); the default applies the game textures.

&texturize = Apply game textures (true) or show the bare grey model (false)
Default: true