Deadlock Research

Deadlock API

Community API, not Valve. Everything below is run by the community and is neither affiliated with nor endorsed by Valve. It broke for weeks in September 2024 when Valve tightened rate limits, and can break again without notice. Provenance and caveats: note 0010, note 0011.

OpenAPI 3.1.0 spec version 0.1.0 116 paths 117 endpoints license MIT snapshot 2026-08-16

Base URL https://api.deadlock-api.com · upstream interactive docs · source · spec https://api.deadlock-api.com/openapi.json

117 endpoints

Patches 3

Endpoints that return data about game patches.

GET /v1/patches Notes deprecated

Deprecated: Use /v2/patches instead, which returns a unified feed combining the Forum changelog and the Steam news feed.

Returns the parsed result of the RSS Feed from the official Forum.

RSS-Feed: https://forums.playdeadlock.com/forums/changelog.10/index.rss

Returns Patch[]

  • author string
  • category PatchCategory
  • content_encoded string
  • dc_creator string
  • guid PatchGuid
  • link string
  • pub_date string
  • slash_comments string
  • title string
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/patches"
GET /v1/patches/big-days Big Days

Returns a list of dates where Deadlock's "big" patch days were, usually bi-weekly. The exact date is the time when the announcement forum post was published.

This list is manually maintained, and so new patch dates may be delayed by a few hours.

Returns string[]

Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/patches/big-days"
GET /v2/patches Notes

Returns a unified feed combining patch notes from the official Forum changelog and the Steam news feed.

Each entry is tagged with a source field (forum or steam).

  • Forum RSS: https://forums.playdeadlock.com/forums/changelog.10/index.rss
  • Steam News RSS: https://store.steampowered.com/feeds/news/app/1422450/

Returns FeedItem[]

Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v2/patches"

Matches 10

Comprehensive match data endpoints for retrieving detailed information about games.

GET /v1/matches/active Active

Returns active matches that are currently being played.

Fetched from the watch tab in game, which is limited to the top 200 matches.

nameintyperequired
account_idqueryint32no
account_idsqueryint32[]no

Returns ActiveMatch[]

  • compat_version? int32
  • duration_s? int32
  • game_mode? int32
  • game_mode_parsed? ActiveMatchGameMode
  • game_mode_version? int32
  • lobby_id? int64
  • match_id? int64
  • match_mode? int32
  • match_mode_parsed? ActiveMatchMode
  • match_score? int32
  • net_worth_team_0? int32
  • net_worth_team_1? int32
  • objectives_mask_team0? int64
  • objectives_mask_team1? int64
  • open_spectator_slots? int32
  • players ActiveMatchPlayer[]
  • region_mode? int32
  • region_mode_parsed? RegionMode
  • spectators? int32
  • start_time? int32
  • winning_team? int32
  • winning_team_parsed? ActiveMatchTeam
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/matches/active"
GET /v1/matches/active/raw Active as Protobuf

Returns active matches that are currently being played, serialized as protobuf message.

Fetched from the watch tab in game, which is limited to the top 200 matches.

You have to decode the protobuf message.

Protobuf definitions can be found here: https://github.com/SteamDatabase/Protobufs

Relevant Protobuf Message:

  • CMsgClientToGcGetActiveMatchesResponse

Returns int32[]

Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/matches/active/raw"
GET /v1/matches/live/urls Live Broadcast URLs

Returns a list of all currently available live broadcast URLs.

These can be used in any demofile broadcast parser:

Returns LiveUrl[]

  • broadcast_url string
  • lobby_id? int64
  • match_id int64
  • started_at? int64
  • updated_at? int64
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/matches/live/urls"
POST /v1/matches/live/urls Ingest Live Broadcast URLs

Submit one or more live broadcast URLs so they show up in the GET /live/urls listing.

Each submitted URL is stored for 15 minutes; re-submit periodically to keep a match listed while it is still live. Existing entries for the same match_id are overwritten.

These URLs can be used in any demofile broadcast parser:

Rate limits
IP
100req/s
Key
-
Global
-
curl -X POST "https://api.deadlock-api.com/v1/matches/live/urls"
GET /v1/matches/metadata Bulk Metadata

This endpoints lets you fetch multiple match metadata at once. The response is a JSON array of match metadata.

When player info is included, each player object contains a hero_build_id field (if available) from demo analysis.

> Note: The hero_build_id represents the first build the player had selected when the game started. It does not reflect any build changes made during the match.

nameintyperequired
include_infoquerybooleanno
include_more_infoquerybooleanno
include_objectivesquerybooleanno
include_mid_bossquerybooleanno
include_player_infoquerybooleanno
include_player_kdaquerybooleanno
include_player_itemsquerybooleanno
include_player_statsquerybooleanno
include_player_final_statsquerybooleanno
include_player_death_detailsquerybooleanno
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
match_idsqueryint64[]no
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
is_high_skill_range_partiesquerybooleanno
is_low_pri_poolquerybooleanno
is_new_player_poolquerybooleanno
account_idsqueryint32[]no
hero_idsquerystringno
item_filter_hero_idqueryint32no
include_item_idsquerystringno
exclude_item_idsquerystringno
extra_match_columnsquerystringno
extra_player_columnsquerystringno
order_byqueryenum(match_id, start_time, average_badge)no
order_directionqueryenum(desc, asc)no
limitqueryint32no
formatqueryenum(json, ndjson)no

Returns int32[]

Rate limits
IP
10req/min
Key
10req/10s
Global
100req/min
curl "https://api.deadlock-api.com/v1/matches/metadata"
GET /v1/matches/recently-fetched Recently Fetched

This endpoint returns a list of match ids that have been fetched within the last 10 minutes.

Returns ClickhouseMatchInfo[]

  • average_badge? int32
  • average_badge_team0? int32
  • average_badge_team1? int32
  • duration_s int32
  • game_mode int32
  • match_id int64
  • match_mode int32
  • players MatchPlayer[]
  • start_time int32
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/matches/recently-fetched"
GET /v1/matches/{match_id}/live/url Live Broadcast URL

This endpoints spectates a match and returns the live URL to be used in any demofile broadcast parser.

Example Parsers:

nameintyperequired
match_idpathint64yes

Returns MatchSpectateResponse

  • broadcast_url string
  • lobby_id? int64
Rate limits
IP
6req/h
Key
20req/10m, 100req/h
Global
100req/10m, 500req/h
curl "https://api.deadlock-api.com/v1/matches/{match_id}/live/url"
GET /v1/matches/{match_id}/metadata Metadata

This endpoint returns the match metadata for the given match_id parsed into JSON.

Each player object is enriched with a hero_build_id field (if available) from demo analysis.

> Note: The hero_build_id represents the first build the player had selected when the game started. It does not reflect any build changes made during the match.

Protobuf definitions can be found here: https://github.com/SteamDatabase/Protobufs

Relevant Protobuf Messages:

  • CMsgMatchMetaData
  • CMsgMatchMetaDataContents
nameintyperequired
match_idpathint64yes
is_customquerybooleanno
disable_steamquerybooleanno
Rate limits
IP
From Cache: 100req/s · From S3: 100req/10s · From Steam: 3req/h
Key
From Cache: 100req/s · From S3: 100req/s · From Steam: 300req/h
Global
From Cache: 100req/s · From S3: 700req/s · From Steam: 1500req/h
curl "https://api.deadlock-api.com/v1/matches/{match_id}/metadata"
GET /v1/matches/{match_id}/metadata/raw Metadata as Protobuf

This endpoints returns the raw .meta.bz2 file for the given match_id.

You have to decompress it and decode the protobuf message.

Protobuf definitions can be found here: https://github.com/SteamDatabase/Protobufs

Relevant Protobuf Messages:

  • CMsgMatchMetaData
  • CMsgMatchMetaDataContents
nameintyperequired
match_idpathint64yes
is_customquerybooleanno
disable_steamquerybooleanno

Returns int32[]

Rate limits
IP
From Cache: 100req/s · From S3: 100req/10s · From Steam: 3req/h
Key
From Cache: 100req/s · From S3: 100req/s · From Steam: 300req/h
Global
From Cache: 100req/s · From S3: 700req/s · From Steam: 1500req/h
curl "https://api.deadlock-api.com/v1/matches/{match_id}/metadata/raw"
GET /v1/matches/{match_id}/salts Salts

This endpoints returns salts that can be used to fetch metadata and demofile for a match.

Note: We currently fetch many matches without salts, so for these matches we do not have salts stored.

nameintyperequired
match_idpathint64yes
disable_steamquerybooleanno

Returns MatchSaltsResponse

  • cluster_id? int32
  • demo_url? string
  • match_id int64
  • metadata_salt? int32
  • metadata_url? string
  • replay_salt? int32
Rate limits
IP
From DB: 100req/s · From Steam: 10req/30mins
Key
From DB: - · From Steam: 10req/min
Global
From DB: - · From Steam: 10req/10s
curl "https://api.deadlock-api.com/v1/matches/{match_id}/salts"

Custom Matches 6

Custom Match related endpoints

POST /v1/matches/custom/create Create Match

This endpoint creates a custom match using a bot account.

Process: 1. A party is created with your provided settings. 2. The system waits for the party code to be generated. 3. The party code is returned in the response. 4. The bot switches to spectator mode. 5. The bot marks itself as ready. 6. You and other players join, ready up, and start the match.

Callbacks: If a callback URL is provided, POST requests will be sent to it:

  • settings: When lobby settings change, a POST is sent to {callback_url}/settings with the CsoCitadelParty protobuf message as JSON.
  • match start: When the match starts, a POST is sent to {callback_url} with the match ID.

_Protobuf definitions: https://github.com/SteamDatabase/Protobufs_

Note: The bot will leave the match 15 minutes after creation, regardless of match state.

Returns CreateCustomResponse

  • callback_secret? string
  • party_code string
  • party_id string
Rate limits
IP
10req/h
Key
100req/30min
Global
1000req/h
curl -X POST "https://api.deadlock-api.com/v1/matches/custom/create"
POST /v1/matches/custom/{lobby_id}/leave Leave Lobby

This endpoint makes the bot leave the custom match lobby early. By default the bot leaves automatically after 15 minutes, but this endpoint allows you to trigger it sooner.

nameintyperequired
lobby_idpathstringyes
Rate limits
IP
10req/h
Key
100req/30min
Global
1000req/h
curl -X POST "https://api.deadlock-api.com/v1/matches/custom/{lobby_id}/leave"
POST /v1/matches/custom/{lobby_id}/ready Ready Up

This endpoint allows you to ready up for a custom match.

nameintyperequired
lobby_idpathstringyes
Rate limits
IP
10req/h
Key
100req/30min
Global
1000req/h
curl -X POST "https://api.deadlock-api.com/v1/matches/custom/{lobby_id}/ready"
POST /v1/matches/custom/{lobby_id}/start Start Match

This endpoint starts a custom match.

nameintyperequired
lobby_idpathstringyes
Rate limits
IP
10req/h
Key
100req/30min
Global
1000req/h
curl -X POST "https://api.deadlock-api.com/v1/matches/custom/{lobby_id}/start"
POST /v1/matches/custom/{lobby_id}/unready Unready

This endpoint allows you to unready for a custom match.

nameintyperequired
lobby_idpathstringyes
Rate limits
IP
10req/h
Key
100req/30min
Global
1000req/h
curl -X POST "https://api.deadlock-api.com/v1/matches/custom/{lobby_id}/unready"
GET /v1/matches/custom/{party_id}/match-id Get Match ID

This endpoint allows you to get the match id of a custom match.

nameintyperequired
party_idpathint64yes

Returns GetCustomMatchIdResponse

  • match_id int64
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/matches/custom/{party_id}/match-id"

Demo 4

Query and inspect match demo files: discover the queryable schema and run SQL extractions

GET /v1/matches/demo/live/query Live Demo Query (SSE)

Run a SQL query over a match's live broadcast and stream result rows over Server-Sent Events as the match plays, instead of waiting for the demo to finish (see the async /demo/query).

Provide either match_id (the server spectates the lobby to obtain the broadcast URL) or an explicit broadcast_url from /live/urls.

Projection/filter queries emit rows continuously as they are decoded. A whole-match aggregation (GROUP BY / ORDER BY) can only produce its final rows once the broadcast ends.

nameintyperequired
queryquerystringyes
match_idqueryint64no
broadcast_urlquerystringno
Rate limits
IP
With broadcast_url: 20req/m · With match_id: 6req/h
Key
With broadcast_url: - · With match_id: 20req/10m, 100req/h
Global
With broadcast_url: 100req/m · With match_id: 100req/10m, 500req/h
curl "https://api.deadlock-api.com/v1/matches/demo/live/query?query=<query>"
POST /v1/matches/demo/query Demo Query

Submit a SQL query against a match's demo file. The work (download + decompress + parse + query) takes ~55s, so this is asynchronous: the endpoint returns a job_id you poll via /demo/query/{job_id}. Once done, the status response carries a public URL to the result artifact (Parquet or NDJSON).

Identical (match_id, query, format) submissions are deduplicated and reuse a cached result.

Returns DemoQueryJobResponse

  • job_id string
  • status JobStatus
Rate limits
IP
20req/h
Key
200req/h
Global
400req/h
curl -X POST "https://api.deadlock-api.com/v1/matches/demo/query"
GET /v1/matches/demo/query/{job_id} Demo Query Status

Returns the status of a demo query job. While queued/running it includes a rough estimated_wait_seconds; when done it includes result_url (a public link to the Parquet artifact, or the zstd-compressed .ndjson.zst artifact); when failed it includes error.

nameintyperequired
job_idpathstringyes

Returns DemoQueryStatusResponse

  • error? string
  • estimated_wait_seconds? int64
  • format OutputFormat
  • job_id string
  • match_id int64
  • result_url? string
  • status JobStatus
curl "https://api.deadlock-api.com/v1/matches/demo/query/{job_id}"
GET /v1/matches/demo/schema Demo Schema

Returns the queryable schema of a match's demo file: every entity and event table with its columns and Arrow types.

By default this returns the schema of the most recent match we have a demo for. Optionally pass match_id to read the schema for a specific match; if we don't already have its salts, they are fetched from Steam (rate limited, see /{match_id}/salts).

nameintyperequired
match_idqueryint64no

Returns DemoSchemaResponse

  • demo_url string
  • match_id int64
  • tables TableSchemaResponse[]
curl "https://api.deadlock-api.com/v1/matches/demo/schema"

Players 12

Player related endpoints

GET /v1/players/hero-stats Hero Stats

This endpoint returns statistics for each hero played by a given player account.

nameintyperequired
account_idsqueryint32[]yes
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
hero_idsquerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_networthqueryint64no
max_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no

Returns HeroStats[]

  • account_id int32
  • accuracy number
  • assists int64
  • assists_per_min number
  • creeps_per_min number
  • crit_shot_rate number
  • damage_mitigated_per_min number
  • damage_per_min number
  • damage_per_soul number
  • damage_taken_per_min number
  • damage_taken_per_soul number
  • deaths int64
  • deaths_per_min number
  • denies_per_match number
  • denies_per_min number
  • ending_level number
  • hero_id int32
  • kills int64
  • kills_per_min number
  • last_hits_per_min number
  • last_played int32
  • matches int64[]
  • matches_played int64
  • networth_per_min number
  • obj_damage_per_min number
  • obj_damage_per_soul number
  • time_played int64
  • total_boss_damage int64
  • total_creep_damage int64
  • total_neutral_damage int64
  • total_player_damage int64
  • total_player_damage_taken int64
  • wins int64
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/players/hero-stats?account_ids=<account_ids>"
GET /v1/players/rank-predict/image Rank Predict Avg Image (Deprecated) deprecated

Deprecated alias of /v1/players/rank/image. The rank is no longer predicted, it is read from each player's latest ranked match.

nameintyperequired
account_idsqueryint32[]yes
formatqueryenum(png, webp)no

Returns int32[]

curl "https://api.deadlock-api.com/v1/players/rank-predict/image?account_ids=<account_ids>"
GET /v1/players/rank/image Rank Avg Image

Returns the average rank badge image (binary) for a comma-separated list of account IDs. Accounts without a rank are left out of the average; if none of them has one, the Obscurus image is returned. Use ?format=webp for WebP.

nameintyperequired
account_idsqueryint32[]yes
formatqueryenum(png, webp)no

Returns int32[]

curl "https://api.deadlock-api.com/v1/players/rank/image?account_ids=<account_ids>"
GET /v1/players/{account_id}/account-stats Account Stats

This endpoint returns the player account stats for the given account_id.

!THIS IS A PATREON ONLY ENDPOINT!

You have to be friend with one of the bots to use this endpoint. On first use this endpoint will return an error with a list of invite links to add the bot as friend. From then on you can use this endpoint.

Protobuf definitions can be found here: https://github.com/SteamDatabase/Protobufs

Relevant Protobuf Messages:

  • CMsgClientToGcGetAccountStats
  • CMsgAccountStats
nameintyperequired
account_idpathint32yes

Returns PlayerAccountStats

  • account_id int32
  • stats PlayerAccountHeroStats[]
Rate limits
IP
5req/min
Key
20req/min & 800req/h
Global
200req/min
curl "https://api.deadlock-api.com/v1/players/{account_id}/account-stats"
GET /v1/players/{account_id}/card Card

This endpoint returns the player card for the given account_id.

!THIS IS A PATREON ONLY ENDPOINT!

You have to be friend with one of the bots to use this endpoint. On first use this endpoint will return an error with a list of invite links to add the bot as friend. From then on you can use this endpoint.

Protobuf definitions can be found here: https://github.com/SteamDatabase/Protobufs

Relevant Protobuf Messages:

  • CMsgClientToGcGetProfileCard
  • CMsgCitadelProfileCard
nameintyperequired
account_idpathint32yes

Returns PlayerCard

  • account_id int32
  • ranked_badge_level? int32
  • ranked_rank? int32
  • ranked_subrank? int32
  • slots PlayerCardSlot[]
Rate limits
IP
5req/min
Key
20req/min & 800req/h
Global
200req/min
curl "https://api.deadlock-api.com/v1/players/{account_id}/card"
GET /v1/players/{account_id}/enemy-stats Enemy Stats

This endpoint returns the enemy stats.

nameintyperequired
account_idpathint32yes
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_match_idqueryint64no
max_match_idqueryint64no
min_matches_playedqueryint64no
max_matches_playedqueryint64no

Returns EnemyStats[]

  • enemy_id int32
  • matches int64[]
  • matches_played int64
  • wins int64
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/players/{account_id}/enemy-stats"
GET /v1/players/{account_id}/match-history Match History

This endpoint returns the player match history for the given account_id.

If the account is friends with one of our bots, the match history is a combination of the data from Steam and ClickHouse, so you always get the most up-to-date data and full history. If the account is not friends with a bot, only the stored match history from ClickHouse is returned.

Protobuf definitions can be found here: https://github.com/SteamDatabase/Protobufs

Relevant Protobuf Messages:

  • CMsgClientToGcGetMatchHistory
  • CMsgClientToGcGetMatchHistoryResponse
nameintyperequired
account_idpathint32yes
force_refetchquerybooleanno

Returns PlayerMatchHistoryEntry[]

  • abandoned_time_s? int32
  • account_id int32
  • brawl_avg_round_time_s? int32
  • brawl_score_team0? int32
  • brawl_score_team1? int32
  • denies int32
  • game_mode int32
  • hero_id int32
  • hero_level int32
  • last_hits int32
  • match_duration_s int32
  • match_id int64
  • match_mode int32
  • match_result int32
  • net_worth int32
  • objectives_mask_team0 int32
  • objectives_mask_team1 int32
  • player_assists int32
  • player_deaths int32
  • player_kills int32
  • player_match_outcome int32
  • player_team int32
  • ranked_calibration_match? int32
  • ranked_delta? int32
  • ranked_display_badge? int32
  • ranked_used_demotion_protection? boolean
  • start_time int32
  • team_abandoned? boolean
Rate limits
IP
100req/s · Bot-Friend: 10req/h · With `force_refetch=true`: 1req/h
Key
- · Bot-Friend: 300req/h · With `force_refetch=true`: 5req/h
Global
- · Bot-Friend: 1500req/h · With `force_refetch=true`: 10req/h
curl "https://api.deadlock-api.com/v1/players/{account_id}/match-history"
GET /v1/players/{account_id}/mate-stats Mate Stats

This endpoint returns the mate stats.

nameintyperequired
account_idpathint32yes
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_match_idqueryint64no
max_match_idqueryint64no
min_matches_playedqueryint64no
max_matches_playedqueryint64no
same_partyquerybooleanno

Returns MateStats[]

  • matches int64[]
  • matches_played int64
  • mate_id int32
  • wins int64
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/players/{account_id}/mate-stats"
GET /v1/players/{account_id}/rank Rank

Returns the player's rank at the end of their latest ranked match, i.e. the rank they entered that match with plus the progress the match awarded. A subrank spans 1000 progress points, so a single match can move the badge.

Only ranked matches carry a rank, and it stays unset while the player is in placement games. When none of the player's recent ranked matches reports a rank, badge, rank and subrank are all 0, which is the Obscurus (unranked) tier, and last_match is null.

last_match carries the rank metadata Valve reported on that match, e.g. rank progress, remaining placement games and demotion protection.

nameintyperequired
account_idpathint32yes

Returns RankResponse

  • badge int32
  • last_match? LastRankedMatch
  • rank int32
  • subrank int32
curl "https://api.deadlock-api.com/v1/players/{account_id}/rank"
GET /v1/players/{account_id}/rank-predict Rank Predict (Deprecated) deprecated

Deprecated alias of /v1/players/{account_id}/rank. The rank is no longer predicted, it is read from the player's latest ranked match.

nameintyperequired
account_idpathint32yes

Returns RankResponse

  • badge int32
  • last_match? LastRankedMatch
  • rank int32
  • subrank int32
curl "https://api.deadlock-api.com/v1/players/{account_id}/rank-predict"
GET /v1/players/{account_id}/rank-predict/image Rank Predict Image (Deprecated) deprecated

Deprecated alias of /v1/players/{account_id}/rank/image. The rank is no longer predicted, it is read from the player's latest ranked match.

nameintyperequired
account_idpathint32yes
formatqueryenum(png, webp)no

Returns int32[]

curl "https://api.deadlock-api.com/v1/players/{account_id}/rank-predict/image"
GET /v1/players/{account_id}/rank/image Rank Image

Returns the rank badge image directly (binary), not a URL, with the player's I-VI division numeral drawn on it. Players whose recent ranked matches carry no rank, and players still in placement, get the plain tier badge. Use ?format=webp for WebP.

nameintyperequired
account_idpathint32yes
formatqueryenum(png, webp)no

Returns int32[]

curl "https://api.deadlock-api.com/v1/players/{account_id}/rank/image"

MMR 6

# DEPRECATED! READ THIS FIRST!

GET /v1/players/mmr Batch MMR (Deprecated) deprecated

Deprecated. The MMR estimate is gone, this now returns the rank Valve reported for each player at the end of their latest ranked match. Players without a ranked match carrying a rank are left out.

Use /v1/players/{account_id}/rank instead.

nameintyperequired
account_idsqueryint32[]yes
max_match_idqueryint64no

Returns MMRHistory[]

  • account_id int32
  • division int32
  • division_tier int32
  • match_id int64
  • player_score number
  • rank int32
  • start_time int32
curl "https://api.deadlock-api.com/v1/players/mmr?account_ids=<account_ids>"
GET /v1/players/mmr/distribution MMR Distribution (Deprecated) deprecated

Deprecated. The MMR estimate is gone, this now counts players by the rank Valve reported at the end of their latest ranked match within the filtered range.

Use /v1/analytics/badge-distribution instead.

nameintyperequired
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
is_high_skill_range_partiesquerybooleanno
is_low_pri_poolquerybooleanno
is_new_player_poolquerybooleanno
min_match_idqueryint64no
max_match_idqueryint64no

Returns DistributionEntry[]

  • players int64
  • rank int32
curl "https://api.deadlock-api.com/v1/players/mmr/distribution"
GET /v1/players/mmr/distribution/{hero_id} Hero MMR Distribution (Deprecated) deprecated

Deprecated. Valve reports a single account-wide rank, not a per-hero one, so this counts players by the rank they had on their latest ranked match played on that hero.

Use /v1/analytics/badge-distribution instead.

nameintyperequired
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
is_high_skill_range_partiesquerybooleanno
is_low_pri_poolquerybooleanno
is_new_player_poolquerybooleanno
min_match_idqueryint64no
max_match_idqueryint64no
hero_idpathint32yes

Returns DistributionEntry[]

  • players int64
  • rank int32
curl "https://api.deadlock-api.com/v1/players/mmr/distribution/{hero_id}"
GET /v1/players/mmr/{hero_id} Batch Hero MMR (Deprecated) deprecated

Deprecated. Valve reports a single account-wide rank, not a per-hero one, so this returns each player's rank on their latest ranked match played on that hero.

Use /v1/players/{account_id}/rank instead.

nameintyperequired
account_idsqueryint32[]yes
max_match_idqueryint64no
hero_idpathint32yes

Returns MMRHistory[]

  • account_id int32
  • division int32
  • division_tier int32
  • match_id int64
  • player_score number
  • rank int32
  • start_time int32
curl "https://api.deadlock-api.com/v1/players/mmr/{hero_id}?account_ids=<account_ids>"
GET /v1/players/{account_id}/mmr-history MMR History (Deprecated) deprecated

Deprecated. The MMR estimate is gone, this now returns one entry per ranked match with the rank Valve reported for the player at the end of that match.

Use the ranked_display_badge and ranked_delta fields of /v1/players/{account_id}/match-history instead.

nameintyperequired
account_idpathint32yes

Returns MMRHistory[]

  • account_id int32
  • division int32
  • division_tier int32
  • match_id int64
  • player_score number
  • rank int32
  • start_time int32
curl "https://api.deadlock-api.com/v1/players/{account_id}/mmr-history"
GET /v1/players/{account_id}/mmr-history/{hero_id} Hero MMR History (Deprecated) deprecated

Deprecated. Valve reports a single account-wide rank, not a per-hero one, so this returns the player's rank at the end of each ranked match they played on that hero.

Use the ranked_display_badge and ranked_delta fields of /v1/players/{account_id}/match-history instead.

nameintyperequired
account_idpathint32yes
hero_idpathint32yes

Returns MMRHistory[]

  • account_id int32
  • division int32
  • division_tier int32
  • match_id int64
  • player_score number
  • rank int32
  • start_time int32
curl "https://api.deadlock-api.com/v1/players/{account_id}/mmr-history/{hero_id}"

Steam 2

Steam related endpoints

GET /v1/players/steam Batch Steam Profile

This endpoint returns Steam profiles of players.

Pass refresh=true to force a live refresh of the listed accounts from the Steam Web API (GetPlayerSummaries + GetFriendList) before returning. The refreshed rows are persisted to the steam_profiles table and returned in the response with last_updated set to the current time. Refresh requests are rate limited and capped at 100 account ids per call to stay inside the shared Steam Web API key budget.

See: https://developer.valvesoftware.com/wiki/Steam_Web_API#GetPlayerSummaries_(v0002)

nameintyperequired
account_idsqueryint64[]yes
refreshquerybooleanno

Returns SteamProfile[]

  • account_id int32
  • avatar string
  • avatarfull string
  • avatarmedium string
  • countrycode? string
  • friends SteamFriend[]
  • last_team_avg_badge? int32
  • last_updated string
  • matches_played_last_30d int64
  • personaname string
  • profileurl string
  • realname? string
Rate limits
IP
100req/s (read path), 3req/min + 15req/h (refresh)
Key
- (read path), 10req/min + 60req/h (refresh)
Global
- (read path), 30req/min + 200req/h (refresh)
curl "https://api.deadlock-api.com/v1/players/steam?account_ids=<account_ids>"

Leaderboard 4

Endpoints for retrieving global and hero-specific leaderboards.

GET /v1/leaderboard/{region} Leaderboard

Returns the leaderboard.

Valve updates the leaderboard once per hour.

nameintyperequired
regionpathenum(Europe, Asia, NAmerica, SAmerica, … +1)yes

Returns Leaderboard

  • entries LeaderboardEntry[]
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/leaderboard/{region}"
GET /v1/leaderboard/{region}/raw Leaderboard as Protobuf

Returns the leaderboard, serialized as protobuf message.

You have to decode the protobuf message.

Protobuf definitions can be found here: https://github.com/SteamDatabase/Protobufs

Relevant Protobuf Message:

  • CMsgClientToGcGetLeaderboardResponse

Valve updates the leaderboard once per hour.

nameintyperequired
regionpathenum(Europe, Asia, NAmerica, SAmerica, … +1)yes

Returns int32[]

Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/leaderboard/{region}/raw"
GET /v1/leaderboard/{region}/{hero_id} Hero Leaderboard

Returns the leaderboard for a specific hero.

Valve updates the leaderboard once per hour.

nameintyperequired
regionpathenum(Europe, Asia, NAmerica, SAmerica, … +1)yes
hero_idpathint32yes

Returns Leaderboard

  • entries LeaderboardEntry[]
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/leaderboard/{region}/{hero_id}"
GET /v1/leaderboard/{region}/{hero_id}/raw Hero Leaderboard as Protobuf

Returns the leaderboard for a specific hero, serialized as protobuf message.

You have to decode the protobuf message.

Protobuf definitions can be found here: https://github.com/SteamDatabase/Protobufs

Relevant Protobuf Message:

  • CMsgClientToGcGetLeaderboardResponse

Valve updates the leaderboard once per hour.

nameintyperequired
regionpathenum(Europe, Asia, NAmerica, SAmerica, … +1)yes
hero_idpathint32yes

Returns int32[]

Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/leaderboard/{region}/{hero_id}/raw"

Analytics 20

Comprehensive game statistics and analysis endpoints.

GET /v1/analytics/ability-order-stats Ability Order Stats

Retrieves statistics for the ability order of a hero.

nameintyperequired
hero_idqueryint32yes
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_ability_upgradesqueryint64no
max_ability_upgradesqueryint64no
min_networthqueryint64no
max_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
min_matchesqueryint32no
account_idqueryint32no
account_idsqueryint32[]no
include_item_idsqueryint32[]no
exclude_item_idsqueryint32[]no

Returns AnalyticsAbilityOrderStats[]

  • abilities int32[]
  • losses int64
  • matches int64
  • players int64
  • total_assists int64
  • total_deaths int64
  • total_kills int64
  • wins int64
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/ability-order-stats?hero_id=<hero_id>"
GET /v1/analytics/badge-distribution Badge Distribution

This endpoint returns the player badge distribution.

total_matches counts matches by their average badge, while unique_players counts players by the rank Valve reported at the end of their latest ranked match within the filtered range. Since only ranked matches carry a rank, unique_players ignores the match_mode filter and always looks at ranked matches.

Ranks exist only from the first ranked season on, so min_unix_timestamp is clamped to its start.

nameintyperequired
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
is_high_skill_range_partiesquerybooleanno
is_low_pri_poolquerybooleanno
is_new_player_poolquerybooleanno
min_match_idqueryint64no
max_match_idqueryint64no

Returns BadgeDistribution[]

  • badge_level int32
  • total_matches int64
  • unique_players int64
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/badge-distribution"
GET /v1/analytics/build-item-stats Build Item Stats

Retrieves item statistics from hero builds.

Results are cached for 1 hour based on the unique combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.

nameintyperequired
hero_idqueryint32no
min_last_updated_unix_timestampqueryint64no
max_last_updated_unix_timestampqueryint64no

Returns BuildItemStats[]

  • builds int64
  • item_id int64
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/build-item-stats"
GET /v1/analytics/game-stats Game Stats

Retrieves aggregate game-level statistics.

nameintyperequired
bucketqueryenum(no_bucket, avg_badge, start_time_hour, start_time_day, … +2)no
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
min_networthqueryint64no
max_networthqueryint64no
hero_idsqueryint32[]no
include_item_idsqueryint32[]no
exclude_item_idsqueryint32[]no
account_idsqueryint32[]no

Returns AnalyticsGameStats[]

  • abandon_rate number
  • avg_accuracy number
  • avg_assists number
  • avg_boss_damage number
  • avg_creep_damage number
  • avg_creep_kills number
  • avg_crit_rate number
  • avg_damage_absorbed number
  • avg_damage_mitigated number
  • avg_deaths number
  • avg_denies number
  • avg_duration_s number
  • avg_ending_level number
  • avg_first_mid_boss_time_s number
  • avg_first_objective_destroyed_time_s number
  • avg_gold_boss number
  • avg_gold_boss_orb number
  • avg_gold_death_loss number
  • avg_gold_denied number
  • avg_gold_lane_creep number
  • avg_gold_lane_creep_orbs number
  • avg_gold_neutral_creep number
  • avg_gold_neutral_creep_orbs number
  • avg_gold_player number
  • avg_gold_player_orbs number
  • avg_gold_treasure number
  • avg_heal_prevented number
  • avg_kd_ratio number
  • avg_kills number
  • avg_last_hits number
  • avg_max_health number
  • avg_net_worth number
  • avg_neutral_damage number
  • avg_neutral_kills number
  • avg_player_damage number
  • avg_player_damage_taken number
  • avg_player_healing number
  • avg_possible_creeps number
  • avg_self_healing number
  • avg_tech_power number
  • … 7 more fields
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/game-stats"
GET /v1/analytics/hero-ban-stats Hero Ban Stats

Retrieves ban statistics for each hero based on historical match data from demo analysis.

Only matches with successfully extracted ban data are included. Matches where ban extraction failed (empty banned_hero_ids) are excluded entirely.

Results are cached for 1 hour based on the combination of query parameters provided.

nameintyperequired
match_modequerystringno
bucketqueryenum(no_bucket, avg_badge, start_time_hour, start_time_day, … +2)no
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no

Returns HeroBanStats[]

  • bans int64
  • bucket int32
  • hero_id int32
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/hero-ban-stats"
GET /v1/analytics/hero-build-stats/{hero_id} Hero Build Stats

Retrieves performance statistics for hero builds based on historical match data from demo analysis.

Only includes builds that exist in the hero builds database.

The hero_build_id is the first build the player had selected when the game started. It does not reflect any build changes made during the match.

Results are cached for 1 hour based on the combination of query parameters provided.

nameintyperequired
hero_idpathint32yes
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
hero_build_idqueryint64no
min_matchesqueryint64no
account_idqueryint32no
account_idsqueryint32[]no

Returns HeroBuildStats[]

  • hero_build_id int64
  • hero_id int32
  • losses int64
  • matches int64
  • players int64
  • wins int64
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/hero-build-stats/{hero_id}"
GET /v1/analytics/hero-comb-stats Hero Comb Stats

Retrieves overall statistics for each hero combination.

Results are cached for 1 hour. The cache key is determined by the specific combination of filter parameters used in the query. Subsequent requests using the exact same filters within this timeframe will receive the cached response.

nameintyperequired
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_networthqueryint64no
max_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
include_hero_idsqueryint32[]no
exclude_hero_idsqueryint32[]no
include_enemy_hero_idsqueryint32[]no
exclude_enemy_hero_idsqueryint32[]no
min_matchesqueryint32no
max_matchesqueryint32no
comb_sizequeryint32no
account_idqueryint32no
account_idsqueryint32[]no

Returns HeroCombStats[]

  • hero_ids int32[]
  • losses int64
  • matches int64
  • wins int64
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/hero-comb-stats"
GET /v1/analytics/hero-counter-stats Hero Counter Stats

Retrieves hero-versus-hero matchup statistics based on historical match data.

This endpoint analyzes completed matches to calculate how often a specific hero (hero_id) wins against an enemy hero (enemy_hero_id) and the total number of times they have faced each other under the specified filter conditions.

Results are cached for 1 hour based on the combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.

nameintyperequired
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_networthqueryint64no
max_networthqueryint64no
min_enemy_networthqueryint64no
max_enemy_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
same_lane_filterquerybooleanno
min_matchesqueryint64no
max_matchesqueryint32no
account_idqueryint32no
account_idsqueryint32[]no

Returns HeroCounterStats[]

  • assists int64
  • creeps int64
  • deaths int64
  • denies int64
  • enemy_assists int64
  • enemy_creeps int64
  • enemy_deaths int64
  • enemy_denies int64
  • enemy_hero_id int32
  • enemy_kills int64
  • enemy_last_hits int64
  • enemy_networth int64
  • enemy_obj_damage int64
  • hero_id int32
  • kills int64
  • last_hits int64
  • matches_played int64
  • networth int64
  • obj_damage int64
  • wins int64
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/hero-counter-stats"
GET /v1/analytics/hero-stats Hero Stats

Retrieves performance statistics for each hero based on historical match data.

nameintyperequired
bucketqueryenum(no_bucket, avg_badge, start_time_hour, start_time_day, … +2)no
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_networthqueryint64no
max_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
min_hero_matchesqueryint64no
max_hero_matchesqueryint64no
min_hero_matches_totalqueryint64no
max_hero_matches_totalqueryint64no
include_item_idsqueryint32[]no
exclude_item_idsqueryint32[]no
account_idqueryint32no
account_idsqueryint32[]no

Returns AnalyticsHeroStats[]

  • bucket int32
  • hero_id int32
  • losses int64
  • matches int64
  • matches_per_bucket int64
  • total_assists int64
  • total_boss_damage int64
  • total_creep_damage int64
  • total_deaths int64
  • total_denies int64
  • total_kills int64
  • total_last_hits int64
  • total_max_health int64
  • total_net_worth int64
  • total_neutral_damage int64
  • total_player_damage int64
  • total_player_damage_taken int64
  • total_shots_hit int64
  • total_shots_missed int64
  • wins int64
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/hero-stats"
GET /v1/analytics/hero-synergy-stats Hero Synergy Stats

Retrieves hero pair synergy statistics based on historical match data.

This endpoint analyzes completed matches to calculate how often a specific pair of heroes (hero_id1 and hero_id2) won when playing *together on the same team*, and the total number of times they have played together under the specified filter conditions.

Results are cached for 1 hour based on the combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.

nameintyperequired
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_networthqueryint64no
max_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
same_lane_filterquerybooleanno
min_matchesqueryint64no
max_matchesqueryint32no
account_idqueryint32no
account_idsqueryint32[]no

Returns HeroSynergyStats[]

  • assists1 int64
  • assists2 int64
  • creeps1 int64
  • creeps2 int64
  • deaths1 int64
  • deaths2 int64
  • denies1 int64
  • denies2 int64
  • hero_id1 int32
  • hero_id2 int32
  • kills1 int64
  • kills2 int64
  • last_hits1 int64
  • last_hits2 int64
  • matches_played int64
  • networth1 int64
  • networth2 int64
  • obj_damage1 int64
  • obj_damage2 int64
  • wins int64
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/hero-synergy-stats"
GET /v1/analytics/item-flow-stats Item Flow Stats

Retrieves item build-flow statistics: per-phase item win/pick rates and the transitions between them.

Items are grouped into columns by the in-match phase they were bought in (controlled by phase_interval_s and phase_count). The response contains nodes (items aggregated within a phase) and edges (transitions between an item and items in the next phase). A locked build path can be supplied via locked_item_ids / locked_columns to restrict the population to players who bought those items in the given stage columns.

Each node also carries adjusted_win_rate: the item's win rate standardized to the stage's net-worth-at-buy distribution. Because players who are already ahead have more souls and buy items sooner, raw win rate is heavily confounded by wealth; the adjusted figure re-weights each item's win rate across net-worth buckets to the stage-wide distribution, isolating the item's contribution from the buyer's lead. It is still observational, not a controlled/causal estimate. reached_per_column gives the distinct baseline games that bought any upgrade in each column, so consumers can show how survivorship-selected (e.g. long-game-only) a late stage is.

Results are cached for 1 hour based on the unique combination of query parameters provided.

nameintyperequired
phase_interval_squeryint32no
phase_countqueryint32no
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
hero_idsquerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_networthqueryint64no
max_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
min_matchesqueryint32no
account_idsqueryint32[]no
include_item_idsqueryint32[]no
exclude_item_idsqueryint32[]no
locked_item_idsqueryint32[]no
locked_columnsqueryint32[]no

Returns ItemFlowStats

  • baseline ItemFlowSummary
  • edges ItemFlowEdge[]
  • nodes ItemFlowNode[]
  • reached_per_column int64[]
  • summary ItemFlowSummary
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/item-flow-stats"
GET /v1/analytics/item-permutation-stats Item Permutation Stats

Retrieves item permutation statistics based on historical match data.

Results are cached for 1 hour based on the unique combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.

nameintyperequired
item_idsqueryint32[]no
comb_sizequeryint32no
min_matchesqueryint32no
max_matchesqueryint32no
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
hero_idsquerystringno
hero_idqueryint32no
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_networthqueryint64no
max_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
account_idqueryint32no
account_idsqueryint32[]no

Returns ItemPermutationStats[]

  • item_ids int32[]
  • losses int64
  • matches int64
  • wins int64
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/item-permutation-stats"
GET /v1/analytics/item-stats Item Stats

Retrieves item statistics based on historical match data.

Results are cached for 6 hours based on the unique combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.

nameintyperequired
bucketqueryenum(no_bucket, hero, team, start_time_hour, … +10)no
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
hero_idsquerystringno
hero_idqueryint32no
enemy_hero_idsquerystringno
enemy_hero_ids_all_matchquerybooleanno
min_enemy_networthqueryint64no
max_enemy_networthqueryint64no
same_lane_filterquerybooleanno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_networthqueryint64no
max_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
include_item_idsqueryint32[]no
exclude_item_idsqueryint32[]no
min_matchesqueryint32no
max_matchesqueryint32no
account_idqueryint32no
account_idsqueryint32[]no
min_bought_at_squeryint32no
max_bought_at_squeryint32no
item_orderquerystring[]no

Returns ItemStats[]

  • avg_buy_time_relative number
  • avg_buy_time_s number
  • avg_sell_time_relative number
  • avg_sell_time_s number
  • bucket int32
  • item_id int32
  • losses int64
  • matches int64
  • players int64
  • wins int64
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/item-stats"
GET /v1/analytics/kill-death-stats Kill Death Stats

This endpoint returns the kill-death statistics across a 128x128 pixel raster.

nameintyperequired
teamqueryint32no
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
account_idsqueryint32[]no
hero_idsquerystringno
min_networthqueryint64no
max_networthqueryint64no
is_high_skill_range_partiesquerybooleanno
is_low_pri_poolquerybooleanno
is_new_player_poolquerybooleanno
min_match_idqueryint64no
max_match_idqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_kills_per_rasterqueryint32no
max_kills_per_rasterqueryint32no
min_deaths_per_rasterqueryint32no
max_deaths_per_rasterqueryint32no
min_game_time_squeryint32no
max_game_time_squeryint32no

Returns KillDeathStats[]

  • deaths int64
  • killer_team int32
  • kills int64
  • position_x int32
  • position_y int32
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/kill-death-stats"
GET /v1/analytics/lane-matchup-stats Lane Matchup Stats (Subject to Change)

> ⚠️ Subject to change: This endpoint is newly added and not yet stable. Its parameters, response fields and semantics may change or be removed without notice.

Retrieves duo-versus-duo lane statistics: how a pair of heroes sharing a lane performed against the pair of heroes they laned against.

Win rate covers the whole match. Everything else is read at sample_time_s (900 by default, the last sample before the game's recording cadence coarsens) off the matchups that lasted that long, counted by sample_matches. Souls are always reported, in net_worth_diff; pass stats for any other per-tick stat the game records — kills, denies, player damage, healing, level and so on — each as the duo's own combined value *and* as its lead over the enemy duo.

Only lanes where *both* sides fielded exactly two players are counted, and each lane contributes one row per side, so every matchup appears twice with the two sides swapped.

group_by chooses what a row stands for. The default groups all three dimensions, giving one row per duo-versus-duo matchup per lane. Dropping enemy_hero_ids gives a duo's record across every opponent, dropping hero_ids gives what a duo is up against, and dropping assigned_lane merges the lanes. Folded dimensions come back as 0 / an empty array.

Pass hero_ids and enemy_hero_ids to scope the response to the duos you care about. Without them the full duo-versus-duo matrix is computed, which is a considerably more expensive query.

Results are cached for 1 hour. The cache key is determined by the specific combination of filter parameters used in the query. Subsequent requests using the exact same filters within this timeframe will receive the cached response.

nameintyperequired
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
sample_time_squeryint32no
assigned_lanesquerystringno
hero_idsqueryint32[]no
enemy_hero_idsqueryint32[]no
statsquerystringno
group_byquerystringno
min_matchesqueryint64no
max_matchesqueryint64no
account_idsqueryint32[]no

Returns LaneMatchupStats[]

  • assigned_lane int32
  • enemy_hero_ids int32[]
  • hero_ids int32[]
  • matches_played int64
  • net_worth_diff number
  • sample_matches int64
  • sample_time_s int32
  • stats object
  • wins int64
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/lane-matchup-stats"
GET /v1/analytics/lane-soul-curve Lane Soul Curve (Subject to Change)

> ⚠️ Subject to change: This endpoint is newly added and not yet stable. Its parameters, response fields and semantics may change or be removed without notice.

Retrieves how a duo's lead over the duo they laned against develops over the course of the match.

The curve is not interpolated: it carries exactly the samples the game records, which are every 180 seconds up to the 15 minute mark and every 300 seconds after that. It runs from min_time_s (180 by default) to max_time_s, which is open by default, so a matchup is followed until its matches end. sample_matches reports how many matchups were still running at each point, and thins out towards the end of the curve.

Only lanes where *both* sides fielded exactly two players are counted, and each lane contributes one row per side, so every matchup appears twice with the two sides swapped.

Souls are always reported, in net_worth_diff. Pass stats for curves of any other per-tick stat the game records — kills, denies, player damage, healing, level and so on — each as the duo's own combined value *and* as its lead over the enemy duo.

group_by chooses what a row stands for. The default groups all three dimensions, giving one row per duo-versus-duo matchup per lane. Dropping enemy_hero_ids gives a duo's curve across every opponent, dropping hero_ids gives what a duo is up against, and dropping assigned_lane merges the lanes. Folded dimensions come back as 0 / an empty array.

Pass hero_ids and enemy_hero_ids to scope the response to the duos you care about. Without them the full duo-versus-duo matrix is computed, which is a considerably more expensive query.

Results are cached for 1 hour based on the combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.

nameintyperequired
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
min_time_squeryint32no
max_time_squeryint32no
assigned_lanesquerystringno
hero_idsqueryint32[]no
enemy_hero_idsqueryint32[]no
statsquerystringno
group_byquerystringno
min_matchesqueryint64no
max_matchesqueryint64no
account_idsqueryint32[]no

Returns LaneSoulCurve[]

  • assigned_lane int32
  • enemy_hero_ids int32[]
  • hero_ids int32[]
  • matches_played int64
  • net_worth_diff number[]
  • net_worth_diff_std number[]
  • sample_matches int64[]
  • sample_times_s int32[]
  • stats object
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/lane-soul-curve"
GET /v1/analytics/player-performance-curve Player Performance Curve

Retrieves player performance statistics (net worth, kills, deaths, assists) over time throughout matches.

Results are cached for 1 hour based on the unique combination of query parameters provided.

nameintyperequired
resolutionqueryint32no
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_networthqueryint64no
max_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
hero_idsquerystringno
include_item_idsqueryint32[]no
exclude_item_idsqueryint32[]no
account_idsqueryint32[]no

Returns PlayerPerformanceCurvePoint[]

  • assists_avg number
  • assists_std number
  • deaths_avg number
  • deaths_std number
  • game_time int32
  • gold_boss_avg number
  • gold_boss_orb_avg number
  • gold_death_loss_avg number
  • gold_denied_avg number
  • gold_lane_creep_avg number
  • gold_lane_creep_orbs_avg number
  • gold_neutral_creep_avg number
  • gold_neutral_creep_orbs_avg number
  • gold_player_avg number
  • gold_player_orbs_avg number
  • gold_treasure_avg number
  • kills_avg number
  • kills_std number
  • net_worth_avg number
  • net_worth_std number
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/player-performance-curve"
GET /v1/analytics/player-stats/metrics Player Stats Metrics

Returns comprehensive statistical analysis of player performance.

Results are cached for 1 hour based on the unique combination of query parameters provided. Subsequent identical requests within this timeframe will receive the cached response.

> Note: Quantiles are calculated using the DDSketch algorithm, so they are not exact but have a maximum relative error of 0.01.

nameintyperequired
hero_idsquerystringno
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_networthqueryint64no
max_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
max_matchesqueryint32no
include_item_idsqueryint32[]no
exclude_item_idsqueryint32[]no
account_idsqueryint32[]no

Returns HashMap

Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/player-stats/metrics"
GET /v1/analytics/scoreboards/heroes Hero Scoreboard

This endpoint returns the hero scoreboard.

nameintyperequired
sort_byqueryenum(matches, wins, losses, winrate, … +57)yes
sort_directionqueryenum(desc, asc)no
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
min_matchesqueryint32no
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_networthqueryint64no
max_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
account_idqueryint32no
account_idsqueryint32[]no

Returns HeroEntry[]

  • hero_id int32
  • matches int64
  • rank int64
  • value number
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/scoreboards/heroes?sort_by=<sort_by>"
GET /v1/analytics/scoreboards/players Player Scoreboard

This endpoint returns the player scoreboard.

nameintyperequired
sort_byqueryenum(matches, wins, losses, winrate, … +57)yes
sort_directionqueryenum(desc, asc)no
game_modequeryenum(normal, street_brawl, explore_n_y_c, internal)no
match_modequerystringno
hero_idqueryint32no
min_matchesqueryint32no
max_matchesqueryint32no
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_duration_squeryint64no
max_duration_squeryint64no
min_networthqueryint64no
max_networthqueryint64no
min_average_badgequeryint32no
max_average_badgequeryint32no
min_match_idqueryint64no
max_match_idqueryint64no
startqueryint32no
limitqueryint32no
account_idsqueryint32[]no

Returns PlayerEntry[]

  • account_id int32
  • matches int64
  • rank int64
  • value number
Rate limits
IP
200req/min
Key
400req/min
Global
2000req/min
curl "https://api.deadlock-api.com/v1/analytics/scoreboards/players?sort_by=<sort_by>"

Builds 1

Search and retrieve hero builds with comprehensive filtering options.

GET /v1/builds Search

Search for builds based on various criteria.

nameintyperequired
min_unix_timestampqueryint64no
max_unix_timestampqueryint64no
min_published_unix_timestampqueryint64no
max_published_unix_timestampqueryint64no
sort_byqueryenum(weekly_favorites, favorites, ignores, reports, … +3)no
startqueryint32no
limitqueryint32no
sort_directionqueryenum(desc, asc)no
search_namequerystringno
search_descriptionquerystringno
only_latestquerybooleanno
languagequeryint32no
build_languagequeryenum(English, German, French, Italian, … +14)no
build_idqueryint32no
versionqueryint32no
hero_idqueryint32no
tagqueryint32no
rollup_categoryqueryint32no
author_idqueryint32no

Returns Build[]

  • hero_build BuildHero
  • num_favorites? int32
  • num_ignores? int32
  • num_reports? int32
  • num_weekly_favorites? int32
  • rollup_category? int32
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/builds"

Commands 4

Integration endpoints for the Deadlock Streamkit.

GET /v1/commands/resolve Resolve Command

Resolves a command and returns the resolved command.

nameintyperequired
regionqueryenum(Europe, Asia, NAmerica, SAmerica, … +1)no
account_idqueryint32yes
templatequerystringno
hero_namequerystringno

Returns string

Rate limits
IP
60req/60s
Key
-
Global
300req/60s
curl "https://api.deadlock-api.com/v1/commands/resolve?account_id=<account_id>"
GET /v1/commands/variables/available Available Variables

Returns a list of available variables that can be used in the command endpoint.

Returns VariableDescription[]

  • category VariableCategory
  • default_label? string
  • description string
  • extra_args string[]
  • name string
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/commands/variables/available"
GET /v1/commands/variables/resolve Resolve Variables

Resolves variables and returns a map of variable name to resolved value.

nameintyperequired
regionqueryenum(Europe, Asia, NAmerica, SAmerica, … +1)no
account_idqueryint32yes
variablesquerystringno
hero_namequerystringno

Returns object

Rate limits
IP
60req/min
Key
-
Global
300req/min
curl "https://api.deadlock-api.com/v1/commands/variables/resolve?account_id=<account_id>"
GET /v1/commands/widgets/versions Widget Versions

Returns a map of str->int of widget versions.

Returns object

Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/commands/widgets/versions"

Info 2

System status and info endpoints.

GET /v1/info API Info

Returns information about the API.

Returns APIInfo

  • fetched_matches_per_day? int64
  • table_sizes? object
  • user_ingested_matches_last24h? int64
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/info"
GET /v1/info/health Health Check

Checks the health of the services.

Returns Status

  • services StatusServices
Rate limits
IP
100req/s
Key
-
Global
-
curl "https://api.deadlock-api.com/v1/info/health"

SQL 3

Database exploration endpoints for direct SQL access.

GET /v1/sql Query

Executes a SQL query on the database.

nameintyperequired
queryquerystringyes
formatqueryenum(json, ndjson)no

Returns string

Rate limits
IP
2req/min, 20req/hr
Key
10req/min
Global
30req/min
curl "https://api.deadlock-api.com/v1/sql?query=<query>"
GET /v1/sql/tables List Tables

Lists all tables in the database.

Returns string[]

Rate limits
IP
10req/min
Key
-
Global
60req/min
curl "https://api.deadlock-api.com/v1/sql/tables"
GET /v1/sql/tables/{table}/schema Table Schema

Returns the schema of a table.

nameintyperequired
tablepathstringyes

Returns object

Rate limits
IP
10req/min
Key
-
Global
60req/min
curl "https://api.deadlock-api.com/v1/sql/tables/{table}/schema"

Servers 4

Game server status and listing endpoints.

GET /v1/servers List Game Servers

Returns all currently active game servers.

Returns ListServersResponse

  • servers GameServerInfo[]
curl "https://api.deadlock-api.com/v1/servers"
POST /v1/servers/metrics Game Server Metric Ingest

Ingests a single metric event reported by a game server. The schema is intentionally flexible: metric_value carries the primary numeric measurement and metadata holds arbitrary key/value context that varies per game mode or metric. Optional map and game_mode_version let callers segment leaderboards per map or per ruleset revision. Requires a valid game server secret as a Bearer token.

curl -X POST "https://api.deadlock-api.com/v1/servers/metrics"
POST /v1/servers/status Game Server Status

Reports the current status of a game server. Game servers must call this endpoint at least once every 30 seconds to remain active. Requires a valid game server secret as a Bearer token.

Returns ServerStatusResponse

  • server_id string
  • ttl_secs int64
curl -X POST "https://api.deadlock-api.com/v1/servers/status"
GET /v1/servers/steam List Steam Game Servers

Returns the list of Deadlock game servers registered with the Steam master server (IGameServersService/GetServerList), filtered to Deadlock's appid.

Returns SteamServer[]

  • addr string
  • appid int32
  • bots int32
  • dedicated boolean
  • gamedir string
  • gameport int32
  • gametype string
  • map string
  • max_players int32
  • name string
  • os string
  • players int32
  • product string
  • region int32
  • secure boolean
  • steamid string
  • version string
curl "https://api.deadlock-api.com/v1/servers/steam"

Accolades 3

Accolade definitions derived from per-version game data files.

GET /v1/assets/accolades List Accolades

Returns the per-accolade metadata used by the game client, parsed from the patch's KV3 source files.

nameintyperequired
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns Accolade[]

  • class_name string
  • description string
  • enabled_game_modes? string[]
  • flavor_name string
  • id int32
  • threshold_type string
  • tracked_stat_name string
curl "https://api.deadlock-api.com/v1/assets/accolades"
GET /v1/assets/accolades/by-name/{name} Get Accolade By Name

Returns a single accolade by class_name or tracked_stat_name (case-insensitive).

nameintyperequired
namepathstringyes
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns Accolade

  • class_name string
  • description string
  • enabled_game_modes? string[]
  • flavor_name string
  • id int32
  • threshold_type string
  • tracked_stat_name string
curl "https://api.deadlock-api.com/v1/assets/accolades/by-name/{name}"
GET /v1/assets/accolades/{accolade_id} Get Accolade

Returns a single accolade by id.

nameintyperequired
accolade_idpathint32yes
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns Accolade

  • class_name string
  • description string
  • enabled_game_modes? string[]
  • flavor_name string
  • id int32
  • threshold_type string
  • tracked_stat_name string
curl "https://api.deadlock-api.com/v1/assets/accolades/{accolade_id}"

Build Tags 3

Build tag definitions derived from per-version localization keys.

GET /v1/assets/build-tags List Build Tags

Returns the build tag taxonomy used by the game client, derived from per-version localization keys.

nameintyperequired
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns BuildTag[]

  • class_name string
  • icon string
  • id int32
  • label string
curl "https://api.deadlock-api.com/v1/assets/build-tags"
GET /v1/assets/build-tags/by-name/{name} Get Build Tag By Name

Returns a single build tag by class_name (case-insensitive).

nameintyperequired
namepathstringyes
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns BuildTag

  • class_name string
  • icon string
  • id int32
  • label string
curl "https://api.deadlock-api.com/v1/assets/build-tags/by-name/{name}"
GET /v1/assets/build-tags/{build_tag_id} Get Build Tag

Returns a single build tag by id.

nameintyperequired
build_tag_idpathint32yes
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns BuildTag

  • class_name string
  • icon string
  • id int32
  • label string
curl "https://api.deadlock-api.com/v1/assets/build-tags/{build_tag_id}"

Client Versions 1

Known Deadlock client/game versions with versioned assets available.

GET /v1/assets/client-versions List Client Versions

Returns all known Deadlock client/game versions for which versioned assets are available, sorted ascending (oldest first).

Returns int32[]

curl "https://api.deadlock-api.com/v1/assets/client-versions"

Colors 1

Panorama color palette from per-version citadel_base_styles.css.

GET /v1/assets/colors List Colors

Panorama color palette (@define <name>: #RRGGBB[AA]; declarations from citadel_base_styles.css), keyed by snake_case name.

nameintyperequired
client_versionqueryint32no

Returns object

curl "https://api.deadlock-api.com/v1/assets/colors"

Generic Data 1

Game-wide generic configuration derived from per-version generic_data.vdata.

GET /v1/assets/generic-data Get Generic Data

Returns the game-wide generic configuration (street brawl, lane info, glitch settings, damage flash, item draft, etc.) parsed from the patch's generic_data.vdata KV3 source file.

nameintyperequired
client_versionqueryint32no

Returns GenericData

  • aim_spring_strength number[]
  • armor_groups ItemGroup[]
  • damage_flash DamageFlash
  • enemy_objectives_and_zipline_color? Color
  • enemy_objectives_color? Color
  • enemy_zipline_color? Color
  • glitch_settings GlitchSettings
  • hero_kill_gold_share_frac number[]
  • item_price_per_tier int64[]
  • lane_info LaneInfo[]
  • mini_map_offsets MiniMapOffsets[]
  • minimap_team_combine_color? Color
  • minimap_team_rebels_color? Color
  • new_player_metrics NewPlayerMetrics[]
  • objective_params ObjectiveParams
  • rejuv_params RejuvParams
  • spirit_groups ItemGroup[]
  • street_brawl? StreetBrawl
  • targeting_spring_strength number[]
  • trooper_kill_gold_share_frac number[]
  • weapon_groups ItemGroup[]
curl "https://api.deadlock-api.com/v1/assets/generic-data"

Heroes 3

Hero metadata derived from per-version game data files.

GET /v1/assets/heroes List Heroes

Returns the per-hero metadata used by the game client, parsed from the patch's KV3 source files.

nameintyperequired
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no
only_activequerybooleanno

Returns Hero[]

  • assigned_players_only boolean
  • class_name string
  • colors HeroColors
  • complexity int64
  • cost_bonuses? HashMap_ItemSlotType_Vec_MapModCostBonus
  • description HeroDescription
  • disabled boolean
  • gun_tag? string
  • hero_stats_ui HeroStatsUI
  • hero_type? HeroType
  • hideout_rich_presence? string
  • id int32
  • images HeroImages
  • in_development boolean
  • item_draft_bucketing? HashMap_String_Option_DraftBucketing
  • item_draft_weights? HashMap_String_f64
  • item_slot_info HashMap_ItemSlotType_ItemSlotInfo
  • items HashMap_HeroItemType_String
  • level_info HashMap_String_LevelInfo
  • limited_testing boolean
  • name string
  • needs_testing boolean
  • physics HeroPhysics
  • player_selectable boolean
  • prerelease_only? boolean
  • purchase_bonuses HashMap_ItemSlotType_Vec_PurchaseBonus
  • scaling_stats HashMap_String_ScalingStat
  • shop_stat_display ShopStatDisplay
  • skin int64
  • standard_level_up_upgrades HashMap_String_f64
  • starting_stats StartingStats
  • stats_display StatsDisplay
  • tags string[]
curl "https://api.deadlock-api.com/v1/assets/heroes"
GET /v1/assets/heroes/by-name/{name} Get Hero By Name

Returns a single hero by class_name or display name. Matches the bare value as well as the hero_-prefixed form.

nameintyperequired
namepathstringyes
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns Hero

  • assigned_players_only boolean
  • class_name string
  • colors HeroColors
  • complexity int64
  • cost_bonuses? HashMap_ItemSlotType_Vec_MapModCostBonus
  • description HeroDescription
  • disabled boolean
  • gun_tag? string
  • hero_stats_ui HeroStatsUI
  • hero_type? HeroType
  • hideout_rich_presence? string
  • id int32
  • images HeroImages
  • in_development boolean
  • item_draft_bucketing? HashMap_String_Option_DraftBucketing
  • item_draft_weights? HashMap_String_f64
  • item_slot_info HashMap_ItemSlotType_ItemSlotInfo
  • items HashMap_HeroItemType_String
  • level_info HashMap_String_LevelInfo
  • limited_testing boolean
  • name string
  • needs_testing boolean
  • physics HeroPhysics
  • player_selectable boolean
  • prerelease_only? boolean
  • purchase_bonuses HashMap_ItemSlotType_Vec_PurchaseBonus
  • scaling_stats HashMap_String_ScalingStat
  • shop_stat_display ShopStatDisplay
  • skin int64
  • standard_level_up_upgrades HashMap_String_f64
  • starting_stats StartingStats
  • stats_display StatsDisplay
  • tags string[]
curl "https://api.deadlock-api.com/v1/assets/heroes/by-name/{name}"
GET /v1/assets/heroes/{hero_id} Get Hero

Returns a single hero by id.

nameintyperequired
hero_idpathint32yes
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns Hero

  • assigned_players_only boolean
  • class_name string
  • colors HeroColors
  • complexity int64
  • cost_bonuses? HashMap_ItemSlotType_Vec_MapModCostBonus
  • description HeroDescription
  • disabled boolean
  • gun_tag? string
  • hero_stats_ui HeroStatsUI
  • hero_type? HeroType
  • hideout_rich_presence? string
  • id int32
  • images HeroImages
  • in_development boolean
  • item_draft_bucketing? HashMap_String_Option_DraftBucketing
  • item_draft_weights? HashMap_String_f64
  • item_slot_info HashMap_ItemSlotType_ItemSlotInfo
  • items HashMap_HeroItemType_String
  • level_info HashMap_String_LevelInfo
  • limited_testing boolean
  • name string
  • needs_testing boolean
  • physics HeroPhysics
  • player_selectable boolean
  • prerelease_only? boolean
  • purchase_bonuses HashMap_ItemSlotType_Vec_PurchaseBonus
  • scaling_stats HashMap_String_ScalingStat
  • shop_stat_display ShopStatDisplay
  • skin int64
  • standard_level_up_upgrades HashMap_String_f64
  • starting_stats StartingStats
  • stats_display StatsDisplay
  • tags string[]
curl "https://api.deadlock-api.com/v1/assets/heroes/{hero_id}"

Items 5

Item, ability, and weapon definitions parsed from the patch's KV3 source files. Mirrors the previous Python /v2/items endpoint.

GET /v1/assets/items List Items

Returns the full per-patch item list — abilities, weapons, and upgrades.

nameintyperequired
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns Item[]

curl "https://api.deadlock-api.com/v1/assets/items"
GET /v1/assets/items/by-hero-id/{id} List Items By Hero

Hero-bound abilities, excluding the generic movement abilities.

nameintyperequired
idpathint32yes
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns Item[]

curl "https://api.deadlock-api.com/v1/assets/items/by-hero-id/{id}"
GET /v1/assets/items/by-slot-type/{slot_type} List Items By Slot Type
nameintyperequired
slot_typepathItemSlotTypeyes
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns Item[]

curl "https://api.deadlock-api.com/v1/assets/items/by-slot-type/{slot_type}"
GET /v1/assets/items/by-type/{type} List Items By Type
nameintyperequired
typepathItemTypeyes
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns Item[]

curl "https://api.deadlock-api.com/v1/assets/items/by-type/{type}"
GET /v1/assets/items/{id_or_class_name} Get Item
nameintyperequired
id_or_class_namepathstringyes
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns Item

curl "https://api.deadlock-api.com/v1/assets/items/{id_or_class_name}"

Loot Tables 1

Loot table definitions derived from per-version game data files.

GET /v1/assets/loot-tables List Loot Tables

Returns the per-table loot definitions used by the game client, parsed from the patch's KV3 source files. Keyed by table class_name.

nameintyperequired
client_versionqueryint32no

Returns object

curl "https://api.deadlock-api.com/v1/assets/loot-tables"

Map 1

Map metadata: minimap radius, image-layer URLs, objective marker positions (from per-version objectives_map.css), and the zip-line lane splines.

GET /v1/assets/map Map

Map metadata for a client version: the minimap radius, image-layer CDN URLs, the relative positions of every objective/tower marker, and the three zip-line lane cubic splines. Defaults to the latest known client version.

nameintyperequired
client_versionqueryint32no

Returns MapData

  • images MapImages
  • objective_positions object
  • radius int32
  • zipline_paths ZiplanePath[]
curl "https://api.deadlock-api.com/v1/assets/map"

Misc Entities 2

Misc entity definitions (powerup spawners, breakable props, neutral camps, capture points, …) derived from per-version game data files.

GET /v1/assets/misc-entities List Misc Entities

Returns the per-misc-entity metadata used by the game client, parsed from the patch's KV3 source files.

nameintyperequired
client_versionqueryint32no

Returns MiscEntity[]

  • break_on_dodge_touch? boolean
  • class_name string
  • collision_radius? number
  • color? Color
  • damaged_by_abilities? boolean
  • damaged_by_bullets? boolean
  • damaged_by_melee? boolean
  • expiration_duration? CurveOrFloat
  • gold_amount? number
  • gold_per_minute_amount? number
  • health? int64
  • id int32
  • initial_spawn_delay_in_seconds? int64
  • initial_spawn_delay_seconds? int64
  • initial_spawn_time? number
  • is_mantleable? boolean
  • lifetime? number
  • loot_list_deck_size? int64
  • m_vecPickups_lv2? Pickup[]
  • m_vecPickups_lv3? Pickup[]
  • match_time_mins_for_level2_pickups? int64
  • match_time_mins_for_level3_pickups? int64
  • modifier? Subclass_ModifierDefinition
  • orb_spawn_delay_max? number
  • orb_spawn_delay_min? number
  • pickup_radius? CurveOrFloat
  • primary_drop_chance? number
  • primary_pickups? Pickup[]
  • render_after_death? boolean
  • respawn_time? number
  • roll_type? RollType
  • show_on_minimap? boolean
  • solid_after_death? boolean
  • spawn_interval? number
  • spawn_interval_in_seconds? int64
curl "https://api.deadlock-api.com/v1/assets/misc-entities"
GET /v1/assets/misc-entities/{id_or_classname} Get Misc Entity

Returns a single misc entity by numeric id or by class_name (case-insensitive).

nameintyperequired
id_or_classnamepathstringyes
client_versionqueryint32no

Returns MiscEntity

  • break_on_dodge_touch? boolean
  • class_name string
  • collision_radius? number
  • color? Color
  • damaged_by_abilities? boolean
  • damaged_by_bullets? boolean
  • damaged_by_melee? boolean
  • expiration_duration? CurveOrFloat
  • gold_amount? number
  • gold_per_minute_amount? number
  • health? int64
  • id int32
  • initial_spawn_delay_in_seconds? int64
  • initial_spawn_delay_seconds? int64
  • initial_spawn_time? number
  • is_mantleable? boolean
  • lifetime? number
  • loot_list_deck_size? int64
  • m_vecPickups_lv2? Pickup[]
  • m_vecPickups_lv3? Pickup[]
  • match_time_mins_for_level2_pickups? int64
  • match_time_mins_for_level3_pickups? int64
  • modifier? Subclass_ModifierDefinition
  • orb_spawn_delay_max? number
  • orb_spawn_delay_min? number
  • pickup_radius? CurveOrFloat
  • primary_drop_chance? number
  • primary_pickups? Pickup[]
  • render_after_death? boolean
  • respawn_time? number
  • roll_type? RollType
  • show_on_minimap? boolean
  • solid_after_death? boolean
  • spawn_interval? number
  • spawn_interval_in_seconds? int64
curl "https://api.deadlock-api.com/v1/assets/misc-entities/{id_or_classname}"

NPC Units 2

NPC unit definitions derived from per-version game data files.

GET /v1/assets/npc-units List NPC Units

Returns the per-NPC-unit metadata used by the game client, parsed from the patch's KV3 source files.

nameintyperequired
client_versionqueryint32no

Returns NpcUnit[]

  • acceleration? number
  • attack_t1_boss_max_range? number
  • attack_t3_boss_max_range? number
  • attack_t3_boss_phase2_max_range? number
  • attack_trooper_max_range? number
  • backdoor_bullet_resist_modifier? Subclass_BulletResistModifier
  • barrack_boss_dps? number
  • barrack_guardian_damage_resist_pct? number
  • bound_abilities? object
  • class_name string
  • empowered_modifier_level1? Subclass_EmpoweredModifierLevel
  • empowered_modifier_level2? Subclass_EmpoweredModifierLevel
  • enemy_trooper_damage_reduction? Subclass_TrooperDamageReduction
  • enemy_trooper_protection_range? number
  • generator_boss_dps? number
  • gold_reward? number
  • gold_reward_bonus_percent_per_minute? number
  • health_bar_color_enemy? Color
  • health_bar_color_friend? Color
  • health_bar_color_team1? Color
  • health_bar_color_team2? Color
  • health_bar_color_team_neutral? Color
  • id int32
  • intrinsic_modifiers? Subclass_IntrinsicModifiers[]
  • laser_dps_max_health? number
  • laser_dps_to_players? number
  • max_health? int64
  • max_health_final? int64
  • max_health_generator? int64
  • melee_attempt_range? number
  • melee_damage? number
  • melee_duration? number
  • melee_hit_range? number
  • near_death_duration? number
  • no_shield_laser_dps_to_players? number
  • objective_health_growth_phase1? Subclass_ObjectiveHealthGrowthPhase
  • objective_health_growth_phase2? Subclass_ObjectiveHealthGrowthPhase
  • objective_regen? Subclass_ObjectiveRegen
  • phase2_health? int64
  • player_damage_resist_pct? number
  • … 26 more fields
curl "https://api.deadlock-api.com/v1/assets/npc-units"
GET /v1/assets/npc-units/{id_or_classname} Get NPC Unit

Returns a single NPC unit by numeric id or by class_name (case-insensitive).

nameintyperequired
id_or_classnamepathstringyes
client_versionqueryint32no

Returns NpcUnit

  • acceleration? number
  • attack_t1_boss_max_range? number
  • attack_t3_boss_max_range? number
  • attack_t3_boss_phase2_max_range? number
  • attack_trooper_max_range? number
  • backdoor_bullet_resist_modifier? Subclass_BulletResistModifier
  • barrack_boss_dps? number
  • barrack_guardian_damage_resist_pct? number
  • bound_abilities? object
  • class_name string
  • empowered_modifier_level1? Subclass_EmpoweredModifierLevel
  • empowered_modifier_level2? Subclass_EmpoweredModifierLevel
  • enemy_trooper_damage_reduction? Subclass_TrooperDamageReduction
  • enemy_trooper_protection_range? number
  • generator_boss_dps? number
  • gold_reward? number
  • gold_reward_bonus_percent_per_minute? number
  • health_bar_color_enemy? Color
  • health_bar_color_friend? Color
  • health_bar_color_team1? Color
  • health_bar_color_team2? Color
  • health_bar_color_team_neutral? Color
  • id int32
  • intrinsic_modifiers? Subclass_IntrinsicModifiers[]
  • laser_dps_max_health? number
  • laser_dps_to_players? number
  • max_health? int64
  • max_health_final? int64
  • max_health_generator? int64
  • melee_attempt_range? number
  • melee_damage? number
  • melee_duration? number
  • melee_hit_range? number
  • near_death_duration? number
  • no_shield_laser_dps_to_players? number
  • objective_health_growth_phase1? Subclass_ObjectiveHealthGrowthPhase
  • objective_health_growth_phase2? Subclass_ObjectiveHealthGrowthPhase
  • objective_regen? Subclass_ObjectiveRegen
  • phase2_health? int64
  • player_damage_resist_pct? number
  • … 26 more fields
curl "https://api.deadlock-api.com/v1/assets/npc-units/{id_or_classname}"

Ranked Seasons 1

Ranked season definitions derived from per-version game data files.

GET /v1/assets/ranked-seasons List Ranked Seasons

Returns the ranked season definitions used by the game client, parsed from the patch's KV3 source files. Each season carries its eligibility requirements and the intervals it runs for, as unix timestamps in seconds.

nameintyperequired
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns RankedSeason[]

  • calibration_matches int32
  • class_name string
  • intervals SeasonInterval[]
  • min_hero_unlocks int32
  • min_hero_wins int32
  • min_wins int32
  • name string
  • ranked_type string
  • valid_party_sizes int32[]
curl "https://api.deadlock-api.com/v1/assets/ranked-seasons"

Ranks 3

Per-rank metadata (name, tier color, badge image URLs) derived from per-version game data files.

GET /v1/assets/ranks List Ranks

Returns the 12 player ranks (tier, localized name, badge image URLs, hex color).

nameintyperequired
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns Rank[]

  • color string
  • images RankImages
  • name string
  • tier int32
curl "https://api.deadlock-api.com/v1/assets/ranks"
GET /v1/assets/ranks/{tier} Get Rank

Returns a single rank by tier index.

nameintyperequired
tierpathint32yes
languagequeryenum(brazilian, bulgarian, czech, danish, … +25)no
client_versionqueryint32no

Returns Rank

  • color string
  • images RankImages
  • name string
  • tier int32
curl "https://api.deadlock-api.com/v1/assets/ranks/{tier}"
GET /v1/assets/ranks/{tier}/{subrank}/image Rank Subrank Image

Returns the tier badge with its I-VI division numeral drawn on it (binary, not a URL). Use ?format=webp for WebP.

nameintyperequired
tierpathint32yes
subrankpathint32yes
formatqueryenum(png, webp)no

Returns int32[]

curl "https://api.deadlock-api.com/v1/assets/ranks/{tier}/{subrank}/image"

Steam Info 2

Per-version steam.inf manifest (client/server version, app IDs, build timestamp).

GET /v1/assets/steam-info Get Steam Info

Returns the steam.inf manifest published with the patch (client/server version, app IDs, source revision, build timestamp).

nameintyperequired
client_versionqueryint32no

Returns SteamInfo

  • app_id int32
  • client_version int32
  • product_name string
  • server_app_id int32
  • server_version int32
  • source_revision int64
  • tools_app_id int32
  • version_date string
  • version_datetime string
  • version_time string
curl "https://api.deadlock-api.com/v1/assets/steam-info"
GET /v1/assets/steam-info/all Get All Steam Infos

Returns the steam.inf manifest for every known patch as a single array, newest version first. Replaces the legacy /v1/steam-info/all endpoint.

Returns SteamInfo[]

  • app_id int32
  • client_version int32
  • product_name string
  • server_app_id int32
  • server_version int32
  • source_revision int64
  • tools_app_id int32
  • version_date string
  • version_datetime string
  • version_time string
curl "https://api.deadlock-api.com/v1/assets/steam-info/all"

GraphQL 1

GraphQL API for flexible match and player queries.

GET /v1/graphql GraphQL Playground

Interactive GraphiQL playground for exploring the GraphQL API.

Open this endpoint in a browser to access the playground. Send GraphQL queries via POST /v1/graphql with a JSON body of the form { "query": "...", "variables": {...} }.

Rate limits
IP
10req/min
Key
10req/10s
Global
100req/min
curl "https://api.deadlock-api.com/v1/graphql"

Assets Bucket 4

GET /v1/assets/fonts Fonts Index

Nested file-tree of all hosted fonts, mapping each name to its public CDN URL.

Returns object

curl "https://api.deadlock-api.com/v1/assets/fonts"
GET /v1/assets/icons Icons Index

Nested file-tree of all hosted icons, mapping each name to its public CDN URL.

Returns object

curl "https://api.deadlock-api.com/v1/assets/icons"
GET /v1/assets/images Images Index

Nested file-tree of all hosted images, mapping each name to its public CDN URL.

Returns object

curl "https://api.deadlock-api.com/v1/assets/images"
GET /v1/assets/sounds Sounds Index

Nested file-tree of all hosted sounds, mapping each name to its public CDN URL.

Returns object

curl "https://api.deadlock-api.com/v1/assets/sounds"

Internal 2

POST /v1/feedback Submit Website Feedback

Stores a component annotation or general feedback submitted from deadlock-api.com.

Rate limits
IP
10req/min, 100req/h
Key
-
Global
2000req/h
curl -X POST "https://api.deadlock-api.com/v1/feedback"
POST /v1/matches/salts Match Salts Ingest

You can use this endpoint to help us collecting data.

The endpoint accepts a list of MatchSalts objects, which contain the following fields:

  • match_id: The match ID
  • cluster_id: The cluster ID
  • metadata_salt: The metadata salt
  • replay_salt: The replay salt
  • username: The username of the person who submitted the match
Rate limits
IP
100req/s
Key
-
Global
-
curl -X POST "https://api.deadlock-api.com/v1/matches/salts"