Items

GET /v2/items
GET /v2/items/{id}
GET /v2/items/{id}/tooltip

Item definitions — over 2,400 rows from the game's design data. Patch-aware (see Patches).

List

curl 'https://api.darkerdb.com/v2/items?limit=25&rarity=rare&archetype=helmetbarbuta'

Query parameters

Identity / categorization:

NameModeDescription
idexactid.item.<slug> or raw Id_Item_<Name>
archetypeexacte.g. helmetbarbuta, swordoldlong
namesubstringmatches anywhere in the display name
rarityexactpoor, common, uncommon, rare, epic, legendary, unique, artifact
typeexacttop-level item category
armor_typeexactfor armor pieces
hand_typeexactfor weapons
misc_typeexactfor utility / misc
slot_typeexactequipment slot
utility_typeexactfor utility items
required_classexactclass gate

Range filters (integer):

NameDescription
min_required_knowledge, max_required_knowledgeknowledge gate
min_gear_score, max_gear_scoregear score
min_vendor_price, max_vendor_pricebase merchant price
min_adventure_points, max_adventure_pointsAP yield
min_experience, max_experienceXP yield
min_max_stack_size, max_max_stack_sizestack cap
min_primary_attributes, max_primary_attributesprimary attribute slot count
min_secondary_attributes, max_secondary_attributessecondary attribute slot count

Behavior toggles:

NameTypeDescription
has_effectboolitem has an on-use effect (true/false)
patchid|version|currentreplay against a different patch

Pagination: page (default 1), limit (default 25, max 250).

Response

{
   "pagination": { "count": 25, "limit": 25, "page": 1, "num_pages": 14, "total": 342, "next": "..." },
   "body": [
      {
         "id":        "id.item.helmet_barbutashade",
         "cursor":    1,
         "archetype": "helmetbarbuta",
         "name":      "Barbuta Shade Helmet",
         "rarity":    "rare",
         "patch_id":  9
      }
   ]
}

Null fields are stripped from each row — the underlying table has 350+ columns, most are null for any given item.

Get

curl 'https://api.darkerdb.com/v2/items/id.item.helmet_barbutashade'

Same per-item shape, returned at body. Accepts the canonical envelope or the raw upstream key (Id_Item_Helmet_BarbutaShade). 404 on unknown id.

Tooltip

curl 'https://api.darkerdb.com/v2/items/id.item.helmet_barbutashade/tooltip?secondary[strength]=3:Ruby&found_by=Skullee' \
   -H 'X-Api-Key: kf_xxxx_xxxxxxxxxxxxxxxxxxxx'

Display-shaped payload for the DDB tooltip library. Same id resolution as GET /v2/items/{id}, but the response is narrowed to just the columns the renderer needs — and the primary / secondary attribute ranges are pre-formatted as display strings ("Armor Rating 75", "+3 Strength").

Requires an API key (X-Api-Key header) with the tooltips scope. Origin-restricted keys check the caller's Origin against the allow-list registered on the dashboard.

Query parameters — instance overrides

Every parameter is optional. Use them to render a specific instance of an item rather than the base template.

NameDescription
primary[<attr>]Override the displayed value for a primary attribute. <attr> is the snake-case attribute field (strength, armor_rating, move_speed, cooldown_reduction_bonus, …).
secondary[<attr>]Override the secondary roll. Append :GemName to attach a gem socket (e.g. secondary[strength]=3:Ruby).
quantityStack size; rendered as ×N next to the name when greater than 1.
found_byCharacter who looted this instance.
loot_stateLooted, Identified, Handled, …
classClass currently equipping the item.
is_tradeabletrue / false — toggles Tradeable / Bound footer.
amountGold value for coin-pouch items.
at_patchPatch version to read the item template at.
branchCodex branch (default main).

Response

{
   "id": "id.item.helmet_barbutashade",
   "name": "Barbuta Shade Helmet",
   "rarity": "rare",
   "archetype": "helmetbarbuta",
   "slot_type": "Chest",
   "armor_type": "Plate",
   "gear_score": 224,
   "description": "...",
   "required_class": [ "Fighter", "Cleric" ],
   "primary": [ "Armor Rating 75", "Magic Resistance 20", "Will 6" ],
   "secondary": [
      [ "+3 Strength", "Ruby" ],
      [ "+2 Resourcefulness" ]
   ],
   "found_by": "Skullee",
   "is_tradeable": true
}

401 / 403 if the API key is missing, invalid, or its origins allow-list doesn't include the caller's Origin. 404 on unknown id.