Patches

Game patches are the time axis every static game-data endpoint hangs off. Each game patch the API has imported is one row here; every item, monster, map, loot table, spawner, etc. carries the patch id it was captured under, so the same id (e.g. id.item.longsword_5001) resolves to whatever stat block was live on the patch you ask for.

Endpoints

GET /v2/patches                                  list all imported patches
GET /v2/patches/current                          shorthand for the latest patch on the default branch
GET /v2/patches/{id}                             single patch by id, version, or "current"

List

curl 'https://api.darkerdb.com/v2/patches?branch=main'

Query parameters

NameTypeDefaultDescription
branchstringmaingit-style branch label. Most consumers want main.
versionstringexact-match filter on version (list endpoint only)
parent_patch_idintlist patches whose parent is this id
pageint11-indexed
limitint25max 250

Response

{
   "pagination": { "count": 4, "limit": 25, "page": 1, "num_pages": 1, "total": 4, "next": null },
   "body": [
      {
         "id":              9,
         "branch":          "main",
         "version":         "0.16.138.8712-2711",
         "version_raw":     "0.16.138.8712-2711",
         "display_name":    "Hotfix #115",
         "released_at":     null,
         "imported_at":     "2026-05-15T22:51:34+00:00",
         "parent_patch_id": 8,
         "changelog_url":   "/v2/patches/0.16.138.8712-2711/changelog",
         "notes":           null,
         "is_current":      true
      }
   ]
}

is_current is computed against the most-recently-imported row on the same branch — at most one row per branch has is_current: true.

Get

# by numeric id
curl 'https://api.darkerdb.com/v2/patches/9'

# by version string
curl 'https://api.darkerdb.com/v2/patches/0.16.138.8712-2711'

# latest on the default branch
curl 'https://api.darkerdb.com/v2/patches/current'

{id} accepts three forms:

  • numeric — the surrogate patch id (e.g. 9)
  • version — the canonical version string or version_raw (e.g. 0.16.138.8712-2711)
  • the literal current — resolves to the most-recently-imported row on the requested branch

Pass ?branch=<name> to scope the version-string and current lookups; numeric ids are global. 404 on unknown id.

Response

{
   "body": {
      "id":              9,
      "branch":          "main",
      "version":         "0.16.138.8712-2711",
      "version_raw":     "0.16.138.8712-2711",
      "display_name":    "Hotfix #115",
      "released_at":     null,
      "imported_at":     "2026-05-15T22:51:34+00:00",
      "parent_patch_id": 8,
      "changelog_url":   "/v2/patches/0.16.138.8712-2711/changelog",
      "notes":           null,
      "is_current":      true
   }
}

changelog_url is null for the very first imported patch on a branch (no parent to diff against). Null fields are stripped by default — pass ?condense=false to keep them.

Time-traveling other endpoints

Patch awareness is implicit across the static game-data surface. Two flavors:

Flat catalogs (items, maps, monsters, loot-tables, spawners)

Accept a ?patch= query parameter:

# items as they were on patch 7 (Hotfix #114)
curl 'https://api.darkerdb.com/v2/items?patch=7'

# same, by version string
curl 'https://api.darkerdb.com/v2/items?patch=0.16.135.8645-2663'

# explicit "current" (same as no parameter)
curl 'https://api.darkerdb.com/v2/items?patch=current'

?patch= accepts the numeric id, the version string, the version_raw string, or current. Omitting the parameter resolves to the current patch on main.

Versioned catalogs (classes, perks, spells, quests, skills, leaderboard ranks, ...)

Accept ?at_patch=<version> plus ?branch=<branch>:

# spell defs at the named version
curl 'https://api.darkerdb.com/v2/spells?at_patch=0.16.135.8645-2663'

# branch override (rare)
curl 'https://api.darkerdb.com/v2/spells?branch=staging'

Omitting ?at_patch= returns the latest resolved state on the chosen branch.

The two parameter names are intentional: ?patch= is a flat-table filter against a patch_id column; ?at_patch= is a time-travel against the versioned history. They aren't interchangeable on a given endpoint — see each endpoint's reference page for which it accepts.

Discovery flow

  1. Hit /v2/patches to enumerate what's imported.
  2. Pick a version (or id) from the response.
  3. Replay any game-data call with the matching query parameter.