Skip to main content
Loading...

Please read the overwolf.games.events documentation page to learn how to use Overwolf game events.

Game State Integration

Due to a recent update in Dota 2 in order 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](https://support.overwolf.com/en/support/solutions/articles/9000212745-how-to-enable-game-state-integration-for-dota-2) In order to know which user is already using this command line parameter, you should use getGameInfo API, there you will get this parameter in the response under gameInfo --> GameInfo --> ProcessCommandLine - [More details here](.games)

Sample Apps

Available Features

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

keyCategoryValuesNotesSince GEP Ver.
gep_internalgep_internalLocal + Public version numberSee notes143.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

EventEvent DataFired WhenNotesSince GEP Ver.
new_gamenullMatch startedSee notes77.3
game_overnullMatch endedSee notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
game_state_changed
  • game_state
  • match_state
  • match_id
  • player_steam_id
See notes77.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

Events

EventEvent DataFired WhenNotesSince GEP Ver.
match_state_changedCheck notesSee notes77.3

match_state note

Event Data:

match_state – One of the following:

  • DOTA_GAMERULES_STATE_WAIT_FOR_PLAYERS_TO_LOAD
  • DOTA_GAMERULES_STATE_HERO_SELECTION
  • DOTA_GAMERULES_STATE_PRE_GAME
  • DOTA_GAMERULES_STATE_GAME_IN_PROGRESS
  • DOTA_GAMERULES_STATE_POST_GAME
  • DOTA_GAMERULES_STATE_TEAM_SHOWCASE

Event data example:

{"events":[{"name":"match_state_changed","data":"{  "match_state": "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

EventEvent DataFired WhenNotesSince GEP Ver.
match_detectedCheck notesSee notes77.3

match_detected note

This feature is not available at the moment

Event 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

EventEvent DataFired WhenNotesSince GEP Ver.
daytime_changedCheck notesSee notes77.3

daytime_changed note

Event Data:

  • daytime – True if it is current day time, false otherwise.
  • clock_time – The amount 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 day time and night time.

Data Example:

{"events":[{"name":"daytime_changed","data":"{  "daytime": true,  "clock_time": -89,  "nightstalker_night": false}"}]}

clock_time_changed

Events

EventEvent DataFired WhenNotesSince GEP Ver.
clock_time_changedSame as ‘map_daytime_changed’.Fired every second77.3

clock_time_changed note

{"events":[{"name":"clock_time_changed","data":"{  "daytime": true,  "clock_time": -89,  "nightstalker_night": false}"}]}

ward_purchase_cooldown_changed

Events

EventEvent DataFired WhenNotesSince GEP Ver.
ward_purchase_cooldown_changedCheck notesFired every second where wards are on cooldown.See notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
match_endedradiant/direWhen an ancient is destroyed and the game ends.See notes77.3

match_ended note

{"events":[{"name":"match_ended","data":"{  "winner": "radiant"}"}]}

kill

Events

EventEvent DataFired WhenNotesSince GEP Ver.
killCheck notesWhenever the player kills an enemy hero.See notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
assistassists – The total number of assists the player has.Whenever the player assists in a kill of an enemy champion.See notes77.3

assist note

Data Example:

{"events":[{"name":"assist","data":"{"assists": 1}"}]}

death

Events

EventEvent DataFired WhenNotesSince GEP Ver.
deathdeaths – The total number of deaths the player has.Whenever the player dies.See notes77.3

death note

Data Example:

{"events":[{"name":"death","data":"{"deaths":1}"}]}

cs

Events

EventEvent DataFired WhenNotesSince GEP Ver.
csCheck notesWhenever the player last hits/denies non-champion units that grant creep score.See notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
xpmxpm – The current Experience Per Minute value.Whenever the XPM changes.See notes77.3

xpm note

Data Example:

{"events":[{"name":"xpm","data":"{  "xpm": 250}"}]}

gpm

Events

EventEvent DataFired WhenNotesSince GEP Ver.
gpmgpm – The current Gold Per Minute value.Whenever the GPM changes.77.3

gpm note

Data Example:

{"events":[{"name":"gpm","data":"{  "gpm": 363605184}"}]}

gold

Events

EventEvent DataFired WhenNotesSince GEP Ver.
goldCheck notesWhenever gold changes.See notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
hero_leveled_uphero_level – The current hero level.Whenever the player levels up.See notes77.3

hero_leveled_up note

Data Example:

{"events":[{"name":"hero_leveled_up","data":"{  "hero_level": 30}"}]}

hero_respawned

Events

EventEvent DataFired WhenNotesSince GEP Ver.
hero_respawnedN/AWhenever the player respawns. This is also true when buying back.See notes77.3

hero_respawned note

Currently this event is NOT supported.

hero_buyback_info_changed

Events

EventEvent DataFired WhenNotesSince GEP Ver.
hero_buyback_info_changedCheck notesSee notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
hero_boughtbackbuyback_cooldown – The cooldown remaining for buyback to become available.Whenever the player buys back.See notes77.3

hero_boughtback note

Data Example:

{"events":[{"name":"hero_boughtback","data":"{}"}]}

hero_health_mana_info

Events

EventEvent DataFired WhenNotesSince GEP Ver.
hero_health_mana_infoCheck notesWhenever either of the players mana, health, max mana or max health changes.See notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
hero_status_effect_changedCheck notesWhenever any of these effects changes.See notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
hero_attributes_skilledattributes_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

EventEvent DataFired WhenNotesSince GEP Ver.
hero_ability_skilledCheck notesWhenever the player skills up an ability.See notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
hero_ability_usedSame as ‘hero_ability_skilled’Whenever the player uses an ability.See notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
hero_ability_cooldown_changedSame as ‘hero_ability_skilled’Whenever an ability’s remaining cooldown is changed.See notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
hero_ability_changedSame as ‘hero_ability_skilled’Whenever an ability’s name changes.See notes77.3

hero_ability_changed note

Currently this event is NOT supported.

hero_item_cooldown_changed

Events

EventEvent DataFired WhenNotesSince GEP Ver.
hero_item_cooldown_changedCheck notesWhenever an item’s remaining cooldown is changed.See notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
hero_item_changedCheck notesSee notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
hero_item_usedSame as ‘hero_item_changed’Whenever an item is used – Essentially this is when the item goes on cooldown.See notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
hero_item_consumedSame as ‘hero_item_changed’Whenever an item’s charges decreases.See notes77.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

EventEvent DataFired WhenNotesSince GEP Ver.
hero_item_chargedSame as ‘hero_item_changed’Whenever an item’s charges increases.See notes77.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

keyCategoryValuesNotesSince GEP Ver.
pseudo_match_idmatch_infoThe current match’s ID code.See notes130.0
game_modematch_infoType of mode that is currently playedSee notes171.1
team_scoreteam_scoreScore of each team during the gameSee notes198.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

keyCategoryValuesNotesSince GEP Ver.
playersrosterA string holding a JSON array of player objects.See notes114.1
bansrosterA string holding a JSON array of bans objects.See notes114.1
draftrosterA string holding a JSON array of draft objects.See notes114.1

players note

info

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:

{"steamId":"76561198095792069","name":"mladen90","pickConfirmed":false,"hero":"","team":2,"role":1,"player_index":4}

Pregame phase roster:

{"steamId":"","name":"","pickConfirmed":false,"hero":"","team":2,"role":1,"player_index":4}

Player object structure:

  • "steamId" - steamId string
  • "name" - player name in game
  • “teamId”
    • 2 – Radiant
    • 3 – Dire
    • 0 – Not in 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)

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 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 team

party

Info Updates

keyCategoryValuesNotesSince GEP Ver.
partypartyA string holding a JSON array of player objects.See notes130.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

error

Info Updates

keyCategoryValuesNotesSince GEP Ver.
plugin_errorerrorThis info update fires when the plugin is not initializing for some reason.See notes133.8

plugin_error note

OBSOLETE

This event is currently NOT supported.

Data Example:

{"feature":"error","category":"error","key":"plugin_error","value":"failed_initializing_monitor"}

hero_pool

Info Updates

keyCategoryValuesNotesSince GEP Ver.
hero_poolgame_infoThe numberical ID's of heroes that are available for picking.See notes139.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

keyCategoryValuesNotesSince GEP Ver.
teammeradiant / direSee notes139.0
steam_idmeID numberSee notes139.0
heromeName of the hero you're playingSee notes139.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"}

game

Info Updates

keyCategoryValuesNotesSince GEP Ver.
game_stategamePlaying139.0
match_stategameCurrent game-state139.0

Event data example:

{"info":{"game":{"game_state":"playing"}},"feature":"game"}
{"info":{"game":{"match_state":"DOTA_GAMERULES_STATE_INIT"}},"feature":"game"}