Documentation

The Deadlock Data API serves item, hero and build-version data for Deadlock, extracted nightly from the game's files. This page covers the pipeline, the data shapes, and a full endpoint reference generated from the OpenAPI spec.

Getting started

Every endpoint returns JSON and requires no authentication:

curl https://deadlock-data-api.iainfox.dev/items/5

Grab the whole dataset with GET /items or GET /heroes, or look things up individually with GET /items/:id and GET /heroes/:id. Responses are cached at the edge for 5 minutes.

Lookups accept the numeric id, the numeric hero_id, or a url-slugged display name (/heroes/seven). Every dataset carries a _metadata object with the build_id it was captured from, so you always know exactly which game version you're looking at.

How it works

Data flows from the game itself to a JSON API with no manual steps. A scheduled GitHub Actions workflow runs daily:

SteamCMD (check manifests)
		│  changed?
		▼
DepotDownloader (fetch windows depots 1422451/52/56)
		│
		▼
Source2Viewer-CLI (decompile VPKs to text)
		│
		▼
custom KV3 parser (items / heroes / abilities)
		│
		▼
JSON + versioned archive → Cloudflare R2 → this API

If the depot manifests are unchanged, the pipeline skips the download and just confirms the previous data is still current. When they do change, the new build is uploaded as the live dataset and archived under archive/<build_id>, so you can diff any two versions.

Data model

Two top-level datasets are served:

  • items_data.json: items keyed by their numeric id, with tier, soul cost, slot, activation, availability and all ability stats.
  • heroes_data.json: heroes keyed by their numeric id, with starting stats, per-level scaling, tags, primary weapon and signature abilities.

Tier is 0-5 and maps to soul costs [0, 800, 1600, 3200, 6400, 9999]. Stats are keyed by the game's internal property names; promoted keys such as cooldown, duration, cast_range and charges are lifted to the top level of each record.

Loading API reference from /openapi.json

Playground

The playground reads the same OpenAPI spec this page uses, so every endpoint listed above is available as a live, clickable request.

Open the playground →