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!
Items
Item definitions — over 2,400 rows from the game's design data. Every item carries a canonical envelope id (id.item.<slug>) and a wide column set (over 350 columns); null fields are stripped from each row so payloads stay compact. Always reflects the current patch.
GET /v2/items
GET /v2/items/{id}
Accepts either the canonical envelope (id.item.rondel_dagger_1001) or the raw upstream key (Rondel_Dagger_1001) for back-compat.
The detail shape adds primary_attributes and secondary_attributes (roll ranges, with enchanted bounds), and — for consumables and artifact gear with a passive — a plain effect line (plus effect_range where it scales). For the colour-coded HTML variant (ddb-c-* spans, same palette as the tooltip widget), call GET /v2/items/{id}/tooltip and read content.
GET /v2/items/{id}/icon
GET /v2/items/{id}/sources
Everything that answers "where do I get this, and what is it for": monsters that drop the item (drops), containers that drop it — chests, hoards, ore nodes (containers), merchants that sell / craft / buy it back, craft recipes that consume it as a material (used_in), and quests that reward (quests.rewarded_by) or require it (quests.required_by — fetch turn-ins and use_item objectives, matched on the item's archetype). Names resolve through the active locale.
Each entry in drops[] represents one monster family (variant rows like summoned or elite are folded onto the archetype). Fields:
- monster_id — canonical (base variant) id of the family.
- drop_rate — best-case per-roll probability across all rarities and the dungeon tiers below. Always equal to the best of tiers[], so every rate here is one a tier filter can reproduce. Adventure and Adventure High Roller are excluded — they carry their own rate rows but no tier entry to attribute them to; read them from GET /v2/monsters/{id}/loot or GET /v2/containers/{id} with ?dungeon_grade=.
- luck_grade — the loot-tier the best-case rarity draws from.
- dungeon_grades — sorted list of dungeon tiers this family drops the item in.
- rarities — array of { rarity, drop_rate } objects, one per rarity variant the family can drop, sorted poorest → rarest. Use this to know whether the family can drop an artifact copy, and at what rate.
- badges — non-grade variant descriptors folded in (e.g. ["summoned"]) — empty array for plain families.
Each entry in containers[] is one container type — a chest, treasure hoard, or ore node — folded the same way GET /v2/containers folds its spawners by name. Rates share the loot graph with GET /v2/containers/{id}, so the two agree to the digit. Sorted hottest-first. Fields:
- container_id — canonical id.container.<slug> the container page resolves.
- slug — the name-slug (treasure_hoard).
- name — resolved container name in the active locale.
- icon / icon_url — the container's prop-mesh render (bare hash + absolute CDN url); null when it places no prop.
- drop_rate — best-case per-roll probability across all rarities and the dungeon tiers below. Always equal to the best of tiers[], so every rate here is one a tier filter can reproduce. Adventure and Adventure High Roller are excluded — they carry their own rate rows but no tier entry to attribute them to; read them from GET /v2/monsters/{id}/loot or GET /v2/containers/{id} with ?dungeon_grade=.
- rarities — array of { rarity, drop_rate } objects, one per rarity variant this container can yield, sorted poorest → rarest.
Both arrays carry a tiers[] breakdown — Normal, High Roller, Squire to Riches — on the row itself and on every rarities[] entry. active: false means the source cannot drop it at that tier at all, which is a different statement from a rate of 0. With a rarity pinned, read that rarity's own tiers: a family that drops at Normal via a common variant but whose artifact only rolls at High Roller is not a Normal source of the artifact. Tiers respect the subject's real spawn placement, so a chest that only stands in the Goblin Caves never reports an Ice Abyss rate.
?luck_terms=1 adds the closed-form coefficients behind every rate: a top-level luck.tables (deduped rate-table weight vectors, dense over grades 0-8) plus a terms array of [ tableIndex, grade, k ] triples on each rarities[].tiers[] entry. Evaluate k · mult[grade] / Σ(table · mult) per triple and take the largest, with mult read from GET /v2/luck at the luck you want. That re-rates the whole payload locally, so a luck slider never has to refetch.
Want to embed live item cards on your own site? See the Tooltips page for the drop-in widget powered by GET /v2/items/{id}/tooltip.