- Game events API
Please read the overwolf.games.events documentation page to learn how to use Overwolf game events.
Due to a recent update in Dota 2 for Overwolf apps to work correctly, you will need to inform your users to add under Launch Options the following command line:
-gamestateintegration
- More details here
To know which user is already using this command line parameter, you should use the overwolf.games.getGameInfo()
API, where you will get this parameter in the response under gameInfo --> GameInfo --> ProcessCommandLine.
Sample Apps
Available Features
- gep_internal
- game_state
- game_state_changed
- match_state_changed
- match_detected
- daytime_changed
- clock_time_changed
- ward_purchase_cooldown_changed
- match_ended
- kill
- assist
- death
- cs
- xpm
- gpm
- gold
- hero_leveled_up
- hero_respawned
- hero_buyback_info_changed
- hero_boughtback
- hero_health_mana_info
- hero_status_effect_changed
- hero_attributes_skilled
- hero_ability_skilled
- hero_ability_used
- hero_ability_cooldown_changed
- hero_ability_changed
- hero_item_cooldown_changed
- hero_item_changed
- hero_item_used
- hero_item_consumed
- hero_item_charged
- match_info
- roster
- party
- hero_pool
- me
- game
- damage
Game events status
It is highly recommended to communicate errors and warnings to your app users.
Check here the game events status. OR - easily check the game events status from your app, using our API.
gep_internal
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
gep_internal | gep_internal | Local + Public version number | See notes | 143.0 |
gep_internal note
Data Example:
{"info":{"gep_internal":{"version_info":"{"local_version":"157.0.1","public_version":"157.0.1","is_updated":true}"}},"feature":"gep_internal"}
game_state
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
new_game | null | Match started | See notes | 77.3 |
game_over | null | Match ended | See notes | 77.3 |
new_game note
Data Example:
{"events":[{"name":"new_game","data":""}]}
game_over note
Data Example:
{"events":[{"name":"game_over","data":""}]}
game_state_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
game_state_changed |
| See notes | 77.3 |
game_state_changed note
- game_state – Can be ‘playing’, ‘idle’ or ‘spectating’. Idle is when there isn’t a game being played or spectated.
- match_state – The internal match state. See ‘match_state_changed’ event for more info.
- match_id (not available for ‘idle’): The id of the match.
- player_steam_id (not available for ‘idle’): Steam id of the local player.
Fired when:
The user starts playing, begins spectating or stops playing. Note that simply bringing up the menu is not enough to trigger the ‘idle’ event – an active game (played or spectated) must be closed.
Data Example:
{"events":[{"name":"game_state_changed","data":"{"game_state": "playing", "match_state": "DOTA_GAMERULES_STATE_INIT", "match_id": "0", "player_steam_id": "76561197971316549", "player_team": "radiant"}"}]}
match_state_changed
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
match_state_changed | game | Current match state | See notes | 77.3 |
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
match_state_changed | Check notes | See notes | 77.3 |
match_state note
List of possible values:
match_state – One of the following:
- DOTA_GAMERULES_STATE_WAIT_FOR_PLAYERS_TO_LOAD
- DOTA_GAMERULES_STATE_HERO_SELECTION
- DOTA_GAMERULES_STATE_STRATEGY_TIME
- DOTA_GAMERULES_STATE_PRE_GAME
- DOTA_GAMERULES_STATE_GAME_IN_PROGRESS
- DOTA_GAMERULES_STATE_POST_GAME
- DOTA_GAMERULES_STATE_TEAM_SHOWCASE
Event example:
{"events":[{"name":"match_state_changed","data":"{ "match_state": "DOTA_GAMERULES_STATE_HERO_SELECTION"}"}]}
Info example:
{"feature":"match_state_changed","category":"game","key":"match_state","value":"DOTA_GAMERULES_STATE_HERO_SELECTION"}
Fired when:
The internal game match state has changed.
- DOTA_GAMERULES_STATE_WAIT_FOR_PLAYERS_TO_LOAD – Shown during the pre-game “Waiting for loaders” screen.
- DOTA_GAMERULES_STATE_HERO_SELECTION – Shown during the hero selection screen.
- DOTA_GAMERULES_STATE_PRE_GAME – Shown when the game begins, before the battle horn is heard.
- DOTA_GAMERULES_STATE_GAME_IN_PROGRESS – Shown when the horn sounds to open the match.
- DOTA_GAMERULES_STATE_POST_GAME – Shown during the post-game screen.
- DOTA_GAMERULES_STATE_TEAM_SHOWCASE
match_detected
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
match_detected | Check notes | See notes | 77.3 |
match_detected note
This feature is not available at the momentEvent Data:
- gameMode – One of the supported game modes.
- playersInfo – An array of 10 players' information with the following fields:
- faction – Radiant/Dire
- isLocalPlayer – True if this is the local player's information, false otherwise.
- playerIndex – The index of this player (0 – 9, left to right).
- steamId – Steam Id of the player.
Fired when:
As soon as 10 players have accepted a match, right after the 'accept' button is clicked by all. Supported game modes:
- AllPick
- AllPickRanked
- SingleDraft
- RandomDraft
- AllRandom
- LeastPlayed
- LimitedHeroes
- CaptainsMode
- CaptainsDraft
daytime_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
daytime_changed | Check notes | See notes | 77.3 |
daytime_changed note
Event Data:
- daytime – True if it is current daytime, false otherwise.
- clock_time – The number of seconds from when the game clocked shows (0:00). It can be negative during the Pre-Game phase.
- nightstalker_night – True if it is currently a Night Stalker ultimate night.
Fired when:
The game transitions between daytime and night time.
Data Example:
{"events":[{"name":"daytime_changed","data":"{ "daytime": true, "clock_time": -89, "nightstalker_night": false}"}]}
clock_time_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
clock_time_changed | Same as ‘map_daytime_changed’. | Fired every second | 77.3 |
clock_time_changed note
{"events":[{"name":"clock_time_changed","data":"{ "daytime": true, "clock_time": -89, "nightstalker_night": false}"}]}
ward_purchase_cooldown_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
ward_purchase_cooldown_changed | Check notes | Fired every second where wards are on cooldown. | See notes | 77.3 |
ward_purchase_cooldown_changed note
Event Data:
- ward_purchase_cooldown – The remaining store cooldown in seconds before a ward is available for purchase again.
Data Example:
{"events":[{"name":"ward_purchase_cooldown_changed","data":"{"ward_purchase_cooldown":128}"}]}
match_ended
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
match_ended | radiant/dire | When an ancient is destroyed and the game ends. | See notes | 77.3 |
match_ended note
{"events":[{"name":"match_ended","data":"{ "winner": "radiant"}"}]}
kill
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
kill | Check notes | Whenever the player kills an enemy hero. | See notes | 77.3 |
kill note
Event Data:
{"events":[{"name":"kill","data":"{ "kills": 10, "kill_streak": 7, "label": "kill"}"}]}
- kills – The total number of kills the player has.
- kill_streak – The current number of hero kills without dying, denying oneself to neutral creeps does not reset this counter.
- label – the type of kill (kill/double_kill/triple_kill/ultra_kill/rampage)
assist
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
assist | assists – The total number of assists the player has. | Whenever the player assists in a kill of an enemy champion. | See notes | 77.3 |
assist note
Data Example:
{"events":[{"name":"assist","data":"{"assists": 1}"}]}
death
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
death | deaths – The total number of deaths the player has. | Whenever the player dies. | See notes | 77.3 |
death note
Data Example:
{"events":[{"name":"death","data":"{"deaths":1}"}]}
cs
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
cs | Check notes | Whenever the player last hits/denies non-champion units that grant creep score. | See notes | 77.3 |
cs note
Event Data:
- last_hits – The total amount of last hits (not denies) the player has.
- denies – The total amount of denies the player has.
- type – last_hits/deny.
Data Example:
{"events":[{"name":"cs","data":"{"last_hits": 1,"denies":0,"type":"last_hit"}"}]}
xpm
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
xpm | xpm – The current Experience Per Minute value. | Whenever the XPM changes. | See notes | 77.3 |
xpm note
Data Example:
{"events":[{"name":"xpm","data":"{ "xpm": 250}"}]}
gpm
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
gpm | gpm – The current Gold Per Minute value. | Whenever the GPM changes. | 77.3 |
gpm note
Data Example:
{"events":[{"name":"gpm","data":"{ "gpm": 363605184}"}]}
gold
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
gold | Check notes | Whenever gold changes. | See notes | 77.3 |
gold note
- gold – Total current gold.
- gold_reliable – Reliable gold part.
- gold_unreliable – Unreliable gold part.
Data Example:
{"events":[{"name":"gold","data":"{ "gold": 10599, "gold_reliable": 0, "gold_unreliable": 10599}"}]}
hero_leveled_up
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_leveled_up | hero_level – The current hero level. | Whenever the player levels up. | See notes | 77.3 |
hero_leveled_up note
Data Example:
{"events":[{"name":"hero_leveled_up","data":"{ "hero_level": 30}"}]}
hero_respawned
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_respawned | N/A | Whenever the player respawns. This is also true when buying back. | See notes | 77.3 |
hero_respawned note
Currently this event is NOT supported.hero_buyback_info_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_buyback_info_changed | Check notes | See notes | 77.3 |
hero_buyback_info_changed note
Event Data:
- buyback_cost – Gold cost to buyback
- buyback_cooldown – Cooldown remaining for buyback to become available
Fired when:
Every 4 seconds and every level-up, since buyback cost is affected by game time and player level. It will also be called every second when buyback is on cooldown.
Data Example:
{"events":[{"name":"hero_buyback_info_changed","data":"{ "buyback_cost": 8541, "buyback_cooldown": 0}"}]}
hero_boughtback
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_boughtback | buyback_cooldown – The cooldown remaining for buyback to become available. | Whenever the player buys back. | See notes | 77.3 |
hero_boughtback note
Data Example:
{"events":[{"name":"hero_boughtback","data":"{}"}]}
hero_health_mana_info
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_health_mana_info | Check notes | Whenever either of the player's mana, health, max mana or max health changes. | See notes | 77.3 |
hero_health_mana_info note
Event Data:
- health – Current health.
- max_health – Current maximum health.
- mana – Current mana.
- max_mana – Current maximum mana.
Data Example:
{"events":[{"name":"hero_health_mana_info","data":"{ "health": 2620, "max_health": 2620, "mana": 711, "max_mana": 711}"}]}
hero_status_effect_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_status_effect_changed | Check notes | Whenever any of these effects changes. | See notes | 77.3 |
hero_status_effect_changed note
Event Data:
- silenced – True if the player is silenced, false otherwise.
- stunned – True if the player is stunned, false otherwise.
- disarmed – True if the player is disarmed, false otherwise.
- magicimmune – True if the player is magic immune, false otherwise.
- hexed – True if the player is hexed, false otherwise.
- muted – True if the player is muted, false otherwise.
- break – True if the player is broken, false otherwise.
- has_debuff – True if the player is affected by any debuff, false otherwise.
Data Example:
{"events":[{"name":"hero_status_effect_changed","data":"{ "silenced": true, "stunned": false, "disarmed": false, "magicimmune": false, "hexed": false, "muted": false, "break": false, "has_debuff": false}"}]}
hero_attributes_skilled
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_attributes_skilled | attributes_level – The current level of the player’s attributes. | Whenever the player skills up his attributes. | 77.3 |
hero_attributes_skilled note
hero_ability_skilled
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_ability_skilled | Check notes | Whenever the player skills up an ability. | See notes | 77.3 |
hero_ability_skilled note
- slot – The index of the ability slot (0 – 5, left to right)
- name – The name of the ability.
- level – The current level of the ability.
- can_cast – True unless the ability is not skilled, there’s not enough mana to cast it, the player is silenced, or is on cooldown.
- passive – True if the ability is passive.
- ability_active – Unknown, TBD.
- cooldown – Remaining cooldown until the ability is ready to cast.
- ultimate – True if the ability is an ultimate ability.
Data Example:
{"events":[{"name":"hero_ability_skilled","data":"{ "slot": 1, "name": "sven_great_cleave", "level": 1, "can_cast": false, "passive": true, "ability_active": true, "cooldown": 0, "ultimate": false}"}]}
hero_ability_used
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_ability_used | Same as ‘hero_ability_skilled’ | Whenever the player uses an ability. | See notes | 77.3 |
hero_ability_used note
Data Example:
{"events":[{"name":"hero_ability_used","data":"{"slot":0,"name":"sven_storm_bolt","level":4, "can_cast":false,"passive":false,"ability_active":true,"cooldown":7,"ultimate":false}"}]}
hero_ability_cooldown_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_ability_cooldown_changed | Same as ‘hero_ability_skilled’ | Whenever an ability’s remaining cooldown is changed. | See notes | 77.3 |
hero_ability_cooldown_changed note
Data Example:
{"events":[{"name":"hero_ability_cooldown_changed","data":"{ "slot": 3, "name": "sven_gods_strength", "level": 3, "can_cast": false, "passive": false, "ability_active": true, "cooldown": 59, "ultimate": true}"}]}
hero_ability_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_ability_changed | Same as ‘hero_ability_skilled’ | Whenever an ability’s name changes. | See notes | 77.3 |
hero_ability_changed note
Currently this event is NOT supported.hero_item_cooldown_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_item_cooldown_changed | Check notes | Whenever an item’s remaining cooldown is changed. | See notes | 77.3 |
hero_item_cooldown_changed note
Event Data:
- slot – The index of the item slot (0 – 5, top row from the left to bottom row from the right)
- location – hero/stash
- name – The name of the item
- passive – True if the item is passive
- can_cast – True unless there’s not enough mana to use the item, the player is muted, or when the item is on cooldown. (only when passive = false)
- cooldown – The remaining cooldown until the item is ready to be used. (only when passive = false)
- charges – The remaining charges of the item (only when passive = false and where item can be charged)
Data Example:
{"events":[{"name":"hero_item_cooldown_changed","data":"{ "slot": 3, "location": "hero", "name": "item_mask_of_madness", "can_cast": false, "passive": false, "cooldown": 16, "charges": null}"}]}
hero_item_changed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_item_changed | Check notes | See notes | 77.3 |
hero_item_changed note
Currently this event is NOT supported.Event Data:
- slot – The index of the item slot (0 – 5, top row from the left to bottom row from the right)
- location – hero/stash
- name – The name of the item.
- passive – True if the item is passive.
- can_cast – True unless there’s not enough mana to use the item, the player is muted, or when the item is on cooldown. (only when passive = false)
- cooldown – Remaining cooldown until the item is ready to be used again (only when passive = false)
- charges – Remaining charges of the item (only when passive = false and where item can be charged)
Fired when:
Whenever the item name in some hero/stash slot changes. This would mean that swapping items will trigger 2 events, one for each item.
hero_item_used
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_item_used | Same as ‘hero_item_changed’ | Whenever an item is used – Essentially this is when the item goes on cooldown. | See notes | 77.3 |
hero_item_used note
Data Example:
{"events":[{"name":"hero_item_used","data":"{ "slot": 0, "location": "hero", "name": "item_blink", "can_cast": false, "passive": false, "cooldown": 15, "charges": null}"}]}
hero_item_consumed
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_item_consumed | Same as ‘hero_item_changed’ | Whenever an item’s charges decreases. | See notes | 77.3 |
hero_item_consumed note
Data Example:
{"events":[{"name":"hero_item_consumed","data":"{ "slot": 1, "location": "hero", "name": "item_tango", "can_cast": true, "passive": false, "cooldown": 0, "charges": 4}"}]}
hero_item_charged
Events
Event | Event Data | Fired When | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_item_charged | Same as ‘hero_item_changed’ | Whenever an item’s charges increases. | See notes | 77.3 |
hero_item_charged note
Data Example:
{"events":[{"name":"hero_item_charged","data":"{ "slot": 0, "location": "hero", "name": "item_ward_observer", "can_cast": true, "passive": false, "cooldown": 0, "charges": 2}"}]}
match_info
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
pseudo_match_id | match_info | The current match’s ID code. | See notes | 130.0 |
game_mode | match_info | Type of mode that is currently played | See notes | 171.1 |
team_score | team_score | Score of each team during the game | See notes | 198.1 |
pseudo_match_id note
Data Example:
0c0ea3df-97ea-4d3a-b1f6-f8e34042251f
game_mode note
Data Example:
{"info":{"match_info":{"game_mode":"{"lobby_type": "DOTA_lobby_type_name_custom_lobby" , "game_mode" : "NONE"}"}},"feature":"match_info"}
{"info":{"match_info":{"game_mode":"{"lobby_type": "DOTA_lobby_type_name_custom_lobby" , "game_mode" : "GameMode_AllPick"}"}},"feature":"match_info"}
{"info":{"match_info":{"game_mode":"{"lobby_type": "DOTA_lobby_type_name_custom_lobby" , "game_mode" : "GameMode_Turbo"}"}},"feature":"match_info"}
team_score note
Data Example:
{"feature":"match_info","category":"team_score","key":"{\"radiant\":12,\"dire\":13}"}
roster
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
players | roster | A string holding a JSON array of player objects. | See notes | 114.1 |
bans | roster | A string holding a JSON array of bans objects. | See notes | 114.1 |
draft | roster | A string holding a JSON array of draft objects. | See notes | 114.1 |
players note
Dota 2 has disabled some functionality used by third-party tools. This includes disabling a large number of console commands during matchmaking games and limiting access to player profiles during the pregame phase As a result 'steamId' and 'name' in the roster will return empty values until the game state changes to DOTA_GAMERULES_STATE_STRATEGY_TIME, then we can show the full roster again with all the details
Data Example:
Full roster:
{
"info": {
"roster": {
"players": "[{\"steamId\":\"76571705014726854\",\"name\":\"overwolf1\",\"pickConfirmed\":true,\"hero\":\"slark\",\"team\":3,\"role\":1,\"rank\":25,\"team_slot\":3,\"player_index\":8},{\"steamId\":\"76559896196858058\",\"name\":\"overwolf2\",\"pickConfirmed\":true,\"hero\":\"juggernaut\",\"team\":2,\"role\":1,\"rank\":24,\"team_slot\":2,\"player_index\":2},{\"steamId\":\"76516781373985191\",\"name\":\"overwolf3\",\"pickConfirmed\":true,\"hero\":\"axe\",\"team\":2,\"role\":2,\"rank\":24,\"team_slot\":0,\"player_index\":0},{\"steamId\":\"76559052302997819\",\"name\":\"overwolf4\",\"pickConfirmed\":true,\"hero\":\"ogre_magi\",\"team\":3,\"role\":16,\"rank\":25,\"team_slot\":2,\"player_index\":7},{\"steamId\":\"76557265358930573\",\"name\":\"overwolf5\",\"pickConfirmed\":true,\"hero\":\"crystal_maiden\",\"team\":2,\"role\":8,\"rank\":0,\"team_slot\":4,\"player_index\":4},{\"steamId\":\"76593138238611347\",\"name\":\"overwolf6\",\"pickConfirmed\":true,\"hero\":\"riki\",\"team\":3,\"role\":4,\"rank\":0,\"team_slot\":4,\"player_index\":9},{\"steamId\":\"76533974583630266\",\"name\":\"overwolf7\",\"pickConfirmed\":true,\"hero\":\"queenofpain\",\"team\":3,\"role\":8,\"rank\":0,\"team_slot\":1,\"player_index\":6},{\"steamId\":\"76557378292767269\",\"name\":\"overwolf8\",\"pickConfirmed\":true,\"hero\":\"necrolyte\",\"team\":2,\"role\":4,\"rank\":24,\"team_slot\":3,\"player_index\":3},{\"steamId\":\"76568133097132933\",\"name\":\"overwolf9\",\"pickConfirmed\":true,\"hero\":\"shadow_shaman\",\"team\":2,\"role\":16,\"rank\":0,\"team_slot\":1,\"player_index\":1},{\"steamId\":\"76573600244111888\",\"name\":\"overwolf10\",\"pickConfirmed\":true,\"hero\":\"bristleback\",\"team\":3,\"role\":2,\"rank\":0,\"team_slot\":0,\"player_index\":5}]"
}
},
"feature": "roster"
}
Pregame phase roster:
{
"info": {
"roster": {
"players": "[{\"steamId\":\"76571705014726854\",\"name\":\"overwolf1\",\"pickConfirmed\":false,\"hero\":\"\",\"team\":3,\"role\":1,\"rank\":25,\"team_slot\":3,\"player_index\":8},{\"steamId\":\"0\",\"name\":\"\",\"pickConfirmed\":false,\"hero\":\"\",\"team\":2,\"role\":1,\"rank\":24,\"team_slot\":2,\"player_index\":2},{\"steamId\":\"0\",\"name\":\"\",\"pickConfirmed\":false,\"hero\":\"\",\"team\":2,\"role\":2,\"rank\":24,\"team_slot\":0,\"player_index\":0},{\"steamId\":\"0\",\"name\":\"\",\"pickConfirmed\":false,\"hero\":\"\",\"team\":3,\"role\":16,\"rank\":25,\"team_slot\":2,\"player_index\":7},{\"steamId\":\"0\",\"name\":\"\",\"pickConfirmed\":false,\"hero\":\"\",\"team\":2,\"role\":8,\"rank\":0,\"team_slot\":4,\"player_index\":4},{\"steamId\":\"0\",\"name\":\"\",\"pickConfirmed\":false,\"hero\":\"\",\"team\":3,\"role\":4,\"rank\":0,\"team_slot\":4,\"player_index\":9},{\"steamId\":\"0\",\"name\":\"\",\"pickConfirmed\":false,\"hero\":\"\",\"team\":3,\"role\":8,\"rank\":0,\"team_slot\":1,\"player_index\":6},{\"steamId\":\"0\",\"name\":\"\",\"pickConfirmed\":false,\"hero\":\"\",\"team\":2,\"role\":4,\"rank\":24,\"team_slot\":3,\"player_index\":3},{\"steamId\":\"0\",\"name\":\"\",\"pickConfirmed\":false,\"hero\":\"\",\"team\":2,\"role\":16,\"rank\":0,\"team_slot\":1,\"player_index\":1},{\"steamId\":\"0\",\"name\":\"\",\"pickConfirmed\":false,\"hero\":\"\",\"team\":3,\"role\":2,\"rank\":0,\"team_slot\":0,\"player_index\":5}]"
}
},
"feature": "roster"
}
Player object structure:
- "steamId" - steamId string
- "name" - player name in-game
- “teamId”
- 2 – Radiant
- 3 – Dire
- 0 – Not in a team
- “heroId” – Heroes IDs (0 if still not picked)
- "role" - role type. (1 - Safelane, 2 - Offlane, 4 - Midlane, 8 - Other, 16 - HardSupport, 888\any other number - Can be received during bot matchups and should be ignored)
- "index" - player slot (int 0-9)
- "rank" - competitive rank
- "team_slot" - player slot (0-4) in each team
In Immortal Draft use "team_slot" instead of "index" to detect the accurate slot of all players
bans note
Data Example:
[{"heroId": "75" , "team" : "0"},{"heroId": "14" , "team" : "0"}]
Bans object structure:
- “heroId” – Heroes IDs (0 if still not picked)
- “teamId”
- 2 – Radiant
- 3 – Dire
- 0 – Not in a team
draft note
Data Example:
"[{"heroId": 56 , "team" : 3},{"heroId": 69 , "team" : 2},{"heroId": 101 , "team" : 2},{"heroId": 28 , "team" : 3}]"
Draft object structure:
- “heroId” – Heroes IDs (0 if still not picked)
- “teamId”
- 2 – Radiant
- 3 – Dire
- 0 – Not in a team
party
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
party | party | A string holding a JSON array of player objects. | See notes | 130.0 |
party note
Data Example:
[{"steamId":"76561198059980868","isLeader":false,"isCoach":false}]
- steamId – the player’s Steam ID
- isLeader – (bool) whether the player is the leader of the party
- isCoach – (bool) whether the player is the coach of the party
Important note:
- The leader can be the coach as well
- There’s exactly one leader
- There’s at most one coach (it’s optional)
- This info-update is being updated for every party change
hero_pool
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
hero_pool | game_info | The numerical ids of heroes that are available for picking. | See notes | 139.0 |
hero_pool note
This data is available only in "Single Draft" & "Random Draft" modes in Dota.
You can find the Hero ID's in the following link
Data Example:
{"category":"game_info","key":"hero_pool","value":"[2,4,5,7,8,16,18,20,21,22,23,27,31,32,34,35,37,38,44,47,48,49,52,53,59,64,65,67,70,71,72,74,75,81,84,85,91,92,95,98,99,100,104,105,106,109,110,113,120,121]}
me
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
team | me | radiant / dire | See notes | 139.0 |
steam_id | me | ID number | See notes | 139.0 |
hero | me | Name of the hero you're playing | See notes | 139.0 |
mmr | me | MMR and confidence value of the player | See notes | 225.1.0 |
me note
Event data example:
{"info":{"me":{"team":"radiant"}},"feature":"me"}
{"info":{"me":{"steam_id":"7654654654"}},"feature":"me"}
{"info":{"me":{"hero":"keeper_of_the_light"}},"feature":"me"}
{"info":{"me":{"mmr":"{\"mmr\": 2865,\"confidence\" : 37}"}},"feature":"me"}
game
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
game_state | game | Playing | 139.0 | |
match_state | game | Current game-state | 139.0 |
Event data example:
{"info":{"game":{"game_state":"playing"}},"feature":"game"}
{"info":{"game":{"match_state":"DOTA_GAMERULES_STATE_INIT"}},"feature":"game"}
damage
Info Updates
key | Category | Values | Notes | Since GEP Ver. |
---|---|---|---|---|
damage_dealt_hero | damage | The total and current damage done to a hero by the local player | See notes | 250.0 |
damage_dealt_tower | damage | The total and current damage done to a tower by the local player | See notes | 250.0 |
damage_dealt_hero note
Event data example:
{"info":{"damage":{"damage_dealt_hero":{"total_damage": 922, "current_damage": 100}}},"feature":"damage"}
damage_dealt_tower note
Event data example:
{"info":{"damage":{"damage_dealt_tower":{"total_damage": 800, "current_damage": 50}}},"feature":"damage"}