Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

WebApi - IDOTA2Match_570/GetMatchDetails returning 500 Internal Server Error after 7.36 release #2715

Open
nlavalle opened this issue May 24, 2024 · 34 comments

Comments

@nlavalle
Copy link

Your system information

this feels irrelevant to the issue but I'm running on fedora 39

Please describe your issue in as much detail as possible:

Describe what you expected should happen and what did happen. Please link any large pastes as a Github Gist.

I've been fetching match details for a hobby project trying to do some fantasy stuff because I really liked the TI2023 fantasy and wanted to do it for other leagues, anyway I do the /GetMatchHistory and /GetMatchDetails calls for the league ID and trying to pull DreamLeague 23 games after 7.36 I'm receiving 500 Internal Server errors, here's an example curl for a game in the last 24hr:

curl --location 'https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/v1?match_id=7754090781&key={{SteamKey}}'

The equivalent get match history works, and the last match detail I was able to pull with that previous curl format was 7750258646 which was 2 days ago so the timing feels related to the 7.36 patch.

I double checked the https://api.steampowered.com/ISteamWebAPIUtil/GetSupportedAPIList/v0001 endpoint and confirmed the GetMatchDetails is still listed there with the same parameters, but if there's a different endpoint/request I should be passing to that call now I'm happy to make the update.

@mburst
Copy link

mburst commented May 26, 2024

+1 Same issue here since the 7.36 patch. Let me know if there is a different endpoint to switch to

@adexp01
Copy link

adexp01 commented May 27, 2024

  • 1 Same issue appeared.

@JRybicki
Copy link

+1 Also have this issue, can someone post if they know of a new endpoint?

@LuddeFro
Copy link

LuddeFro commented May 28, 2024

I can't see GetMatchDetails on https://api.steampowered.com/ISteamWebAPIUtil/GetSupportedAPIList/v0001. Am I missing it or has it disappeared? maybe you could confirm @nlavalle

@ikonduktor
Copy link

It doesn't work 5 days already

@YatsynychRoman
Copy link

I can't see GetMatchDetails on https://api.steampowered.com/ISteamWebAPIUtil/GetSupportedAPIList/v0001. Am I missing it or has it disappeared? maybe you could confirm @nlavalle

There is GetMatchDetails in this list, but you need to pass the API key as a query parameter for protected endpoints to show up.

@b3lowster
Copy link

Does anybody know when the API comes back? 😢

@atomupgrader

This comment was marked as duplicate.

@eremenko1
Copy link

fix this pls

@wdunlap
Copy link

wdunlap commented May 29, 2024

Same issue here.

@yukinorong
Copy link

same problem +1

@amandladev
Copy link

same 😢

@snudel
Copy link

snudel commented Jun 4, 2024

same here :(

@eremenko1
Copy link

Help

@playcat
Copy link

playcat commented Jun 8, 2024

guys, it looks like this repo is a bit of a miss - ths is not about the web api

@playcat
Copy link

playcat commented Jun 8, 2024

also, I've found solution here: ValveSoftware/Dota2-Gameplay#17910
you can use GetMatchHistoryBySequenceNum - with some tweaking, it does the same. You just send make sure you know your match sequence number

@atomupgrader
Copy link

also, I've found solution here: ValveSoftware/Dota2-Gameplay#17910 you can use GetMatchHistoryBySequenceNum - with some tweaking, it does the same. You just send make sure you know your match sequence number

It is not always possible to know that number. If I parse 'GetLiveLeagueGames' or similar endpoints, I would not want to parse all matches using 'GetMatchHistoryBySequenceNum' to find the match I am interested in.

@playcat
Copy link

playcat commented Jun 10, 2024

I have a simple updater which keeps track of games for me and my friends. It keeps our steam ids in a db, pulls most recent games for each of us, grabs details where available. It also does a bit or "merging" for games we play together.

Anyway, we first call getMatchHistory and then grab details with the problematic request. But when you get history (https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001/), you also get a field 'match_seq_num', which you can send to GetMatchHistoryBySequenceNum and set number of results to return to 1. Then it's just a matter of accessing the proper array element (because GetMatchHistoryBySequenceNum returns same data as GetMatchDetails, but an array of them).

# from this:   return data['result']
# to this:  return data['result']['matches'][0]

@Noxville
Copy link

@playcat that endpoint doesn't have all the data in it that was in GetMatchHistory. It's not a suitable replacement for all cases.

@JRybicki
Copy link

JRybicki commented Jun 14, 2024

Replying to #2715 (comment)

This did work for me since I'm only grabbing some basic game data, sounds like we have pretty similar apps. Thanks for sharing.

@iAMD1ver
Copy link

Any fix?

1 similar comment
@golangman
Copy link

Any fix?

@Dmytro4
Copy link

Dmytro4 commented Jun 24, 2024

Over a month with no fix. How will tournament organizers and broadcast studios track stats to show during the tournaments? Imagine having TI with no info because the API just does not work

@atomupgrader
Copy link

Over a month with no fix. Sure, Valve does not really care about us, but how will tournament organizers and broadcast studios track stats to show during the tournaments? Imagine having TI with no info because the API just does not work

by another labels in api that works

@Dmytro4
Copy link

Dmytro4 commented Jun 24, 2024

Over a month with no fix. Sure, Valve does not really care about us, but how will tournament organizers and broadcast studios track stats to show during the tournaments? Imagine having TI with no info because the API just does not work

by another labels in api that works

what works? You were already told that those endpoints does not have enough data and this requires to constantly tracking another endpoint in attempt to catch the needed match which means much more queries and time than simply receiving the info about match by id

@atomupgrader
Copy link

what works? You were already told that those endpoints does not have enough data and this requires to constantly tracking another endpoint in attempt to catch the needed match which means much more queries and time than simply receiving the info about match by id

if you grab all data by that working endpoints you needn't some narrow endpopints like one-match-data

@Dmytro4
Copy link

Dmytro4 commented Jun 24, 2024

what works? You were already told that those endpoints does not have enough data and this requires to constantly tracking another endpoint in attempt to catch the needed match which means much more queries and time than simply receiving the info about match by id

if you grab all data by that working endpoints you needn't some narrow endpopints like one-match-data

this is the key issue. Good luck collecting up to 1kk matches every day just to be able to track main data for a specific match. This also will not work for any match that will be played before you start to track matches so you will need a specific algorithm to continuously make queries with different SequenceNum until you catch a needed match

@atomupgrader
Copy link

atomupgrader commented Jun 24, 2024

Replying to #2715 (comment)

but "tournament organizers and broadcast studios" just doing it...

@Noxville
Copy link

@atomupgrader Tournament organizers are in lobbies, so they can just get the final snapshots from GSI to power their graphics.

@nlavalle
Copy link
Author

this is the key issue. Good luck collecting up to 1kk matches every day just to be able to track main data for a specific match. This also will not work for any match that will be played before you start to track matches so you will need a specific algorithm to continuously make queries with different SequenceNum until you catch a needed match

I'm not sure I'm fully following you, but if you use the /GetMatchHistory endpoint you can request a specific match ID with start_at_match_id={{matchId}}&matches_requested=1, then that response gives you a match_seq_num that you can pass into the GetMatchHistoryBySeqNum to get the match details for that ID

more generally I don't know valve's situation but my guess is their backlog of things to fix before TI is huge with facet interactions. an exploit in some in-game interaction will significantly impact the TI experience more than this endpoint being down, so my personal expectation is this might not get fixed until after TI because it's flagged as lower priority on some giant ticket board they have

@Noxville
Copy link

Noxville commented Jun 25, 2024

@nlavalle the GetMatchHistoryBySeqNum is more heavily rate-limited than the other endpoints (1 per 7 seconds) so you're really limited in your ability to get data this way (~12k matches a day if you're only getting 1 match per request).

Your only alternative is just to keep up with the sequence, which in itself is very difficult to do on a single IP address.

@nlavalle
Copy link
Author

oh wow that's painful, I didn't realize, my apologies

@Simon1093
Copy link

At first I was thinking that Valve are extending data for GetMatchDetails endpoint, but now I realized that they just broke this endpoint and forgot about it =0

@sepehr500
Copy link

I am also having this issue. Kind of crazy it has been broken this long.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests