Game ID / name pairing not consistent / correct across helix and v5


#1

This is happening frequently with niche games that usually have 1 channel / 1 viewer, games that are often not being streamed at all.

~12:20 PST on Sept 5
Endpoint https://api.twitch.tv/kraken/games/top?offset=1900&limit=100
Response:

{
    "_total": 2187,
    "top": [
        ...
        {
            "game": {
                "name": "Buoyancy",
                "popularity": 0,
                "_id": 514178,
                "giantbomb_id": 74989,
                "box": {
                    "large": "https://static-cdn.jtvnw.net/ttv-boxart/Buoyancy-272x380.jpg",
                    "medium": "https://static-cdn.jtvnw.net/ttv-boxart/Buoyancy-136x190.jpg",
                    "small": "https://static-cdn.jtvnw.net/ttv-boxart/Buoyancy-52x72.jpg",
                    "template": "https://static-cdn.jtvnw.net/ttv-boxart/Buoyancy-{width}x{height}.jpg"
                },
                "logo": {
                    "large": "https://static-cdn.jtvnw.net/ttv-logoart/Buoyancy-240x144.jpg",
                    "medium": "https://static-cdn.jtvnw.net/ttv-logoart/Buoyancy-120x72.jpg",
                    "small": "https://static-cdn.jtvnw.net/ttv-logoart/Buoyancy-60x36.jpg",
                    "template": "https://static-cdn.jtvnw.net/ttv-logoart/Buoyancy-{width}x{height}.jpg"
                },
                "localized_name": "Buoyancy",
                "locale": "en-us"
            },
            "viewers": 1,
            "channels": 1
        },
    ...
    ]
}

Great, right? Let’s see what helix has to say about this…
Endpoint: https://api.twitch.tv/helix/games?name=Buoyancy
Response:

{
    "data": [
        {
            "id": "513800",
            "name": "Buoyancy",
            "box_art_url": "https://static-cdn.jtvnw.net/ttv-boxart/Buoyancy-{width}x{height}.jpg"
        }
    ]
}

Odd, let’s try calling using the ID then
Endpoint: https://api.twitch.tv/helix/games?id=514178
Response:

{
    "data": [
        {
            "id": "514178",
            "name": "Buoyancy",
            "box_art_url": "https://static-cdn.jtvnw.net/ttv-boxart/Buoyancy-{width}x{height}.jpg"
        }
    ]
}

So using the ID seems to match what top_games is saying, let’s see what this 513800 is all about.
Endpoint: https://api.twitch.tv/helix/games?id=513800
Response:

{
    "data": [
        {
            "id": "513800",
            "name": "The Welkin World: Rebels",
            "box_art_url": "https://static-cdn.jtvnw.net/ttv-boxart/./The%20Welkin%20World:%20Rebels-{width}x{height}.jpg"
        }
    ]
}

Well that’s not good, looks like there is some inconsistency with the data that helix is returning.

Another quick scan using offset=1600 yielded

{
            "game": {
                "name": "TFM: The First Men",
                "popularity": 0,
                "_id": 513633,
                "giantbomb_id": 74821,
                "box": {
                    "large": "https://static-cdn.jtvnw.net/ttv-boxart/./TFM:%20The%20First%20Men-272x380.jpg",
                    "medium": "https://static-cdn.jtvnw.net/ttv-boxart/./TFM:%20The%20First%20Men-136x190.jpg",
                    "small": "https://static-cdn.jtvnw.net/ttv-boxart/./TFM:%20The%20First%20Men-52x72.jpg",
                    "template": "https://static-cdn.jtvnw.net/ttv-boxart/./TFM:%20The%20First%20Men-{width}x{height}.jpg"
                },
                "logo": {
                    "large": "https://static-cdn.jtvnw.net/ttv-logoart/./TFM:%20The%20First%20Men-240x144.jpg",
                    "medium": "https://static-cdn.jtvnw.net/ttv-logoart/./TFM:%20The%20First%20Men-120x72.jpg",
                    "small": "https://static-cdn.jtvnw.net/ttv-logoart/./TFM:%20The%20First%20Men-60x36.jpg",
                    "template": "https://static-cdn.jtvnw.net/ttv-logoart/./TFM:%20The%20First%20Men-{width}x{height}.jpg"
                },
                "localized_name": "TFM: The First Men",
                "locale": "en-us"
            },
            "viewers": 2,
            "channels": 1
        }

Where passing the ID to helix is consistent, but using the name "TFM: The First Men" returns an ID of 514004, but unlike the previous example passing the ID back into helix at least returns the same name.

I have around 10 examples of this happening over the last 3-5 days so something must have happened recently to cause such a widespread discrepancy with the games endpoint.


#2

A slightly different example involving the top_games endpoint returning a ID/name mismatch:

Time called: "2019-08-29T21:30:02+00:00" (GMT)
Endpoint: https://api.twitch.tv/kraken/games/top? (offset not recorded)
Response at the point of interest (JSON turned into ruby hash):

    {
      "game" => {
        "name" => "Star Trek Trexels",
        "popularity" => 0,
        "_id" => 511981,
        "giantbomb_id" => 73202,
        "box" => {
          "large" => "https://static-cdn.jtvnw.net/ttv-boxart/Star%20Trek%20Trexels-272x380.jpg",
          "medium" => "https://static-cdn.jtvnw.net/ttv-boxart/Star%20Trek%20Trexels-136x190.jpg",
          "small" => "https://static-cdn.jtvnw.net/ttv-boxart/Star%20Trek%20Trexels-52x72.jpg",
          "template" => "https://static-cdn.jtvnw.net/ttv-boxart/Star%20Trek%20Trexels-{width}x{height}.jpg" },
        "logo" => {
          "large" => "https://static-cdn.jtvnw.net/ttv-logoart/Star%20Trek%20Trexels-240x144.jpg",
          "medium" => "https://static-cdn.jtvnw.net/ttv-logoart/Star%20Trek%20Trexels-120x72.jpg",
          "small" => "https://static-cdn.jtvnw.net/ttv-logoart/Star%20Trek%20Trexels-60x36.jpg",
          "template" => "https://static-cdn.jtvnw.net/ttv-logoart/Star%20Trek%20Trexels-{width}x{height}.jpg"
        },
        "localized_name" => "Star Trek Trexels",
        "locale" => "en-us"
      }, 
      "viewers"=>8, 
      "channels"=>1
    } 

Except that
https://api.twitch.tv/helix/games?name=Star Trek Trexels returns

{
    "data": [
        {
            "id": "512421",
            "name": "Star Trek Trexels",
            "box_art_url": "https://static-cdn.jtvnw.net/ttv-boxart/Star%20Trek%20Trexels-{width}x{height}.jpg"
        }
    ]
}

and https://api.twitch.tv/helix/games?id=511981 returns

{
    "data": [
        {
            "id": "511981",
            "name": "Drunken Wrestlers 2",
            "box_art_url": "https://static-cdn.jtvnw.net/ttv-boxart/Drunken%20Wrestlers%202-{width}x{height}.jpg"
        }
    ]
}

So looking at the top_games response, I have no idea whether the game that was being played was "Star Trek Trexels" or "Drunken Wrestlers 2". Typically in the past with v3 and v5, the "name" field was more reliable and other endpoints relied on passing the game name. But I’ve never seen a complete mismatch like this before recently.


#3

Confirming that it’s still happening
https://api.twitch.tv/kraken/games/top?

  {
    "game" => {
      "name" => "Pyramid Magic III",
      "popularity" => 0,
      "_id" => 513670,
      "giantbomb_id" => 74913,
      "box" => { "large" => "https://static-cdn.jtvnw.net/ttv-boxart/Pyramid%20Magic%20III-272x380.jpg",
                 "medium" => "https://static-cdn.jtvnw.net/ttv-boxart/Pyramid%20Magic%20III-136x190.jpg",
                 "small" => "https://static-cdn.jtvnw.net/ttv-boxart/Pyramid%20Magic%20III-52x72.jpg",
                 "template" => "https://static-cdn.jtvnw.net/ttv-boxart/Pyramid%20Magic%20III-{width}x{height}.jpg" },
      "logo" => { "large" => "https://static-cdn.jtvnw.net/ttv-logoart/Pyramid%20Magic%20III-240x144.jpg",
                  "medium" => "https://static-cdn.jtvnw.net/ttv-logoart/Pyramid%20Magic%20III-120x72.jpg",
                  "small" => "https://static-cdn.jtvnw.net/ttv-logoart/Pyramid%20Magic%20III-60x36.jpg",
                  "template" => "https://static-cdn.jtvnw.net/ttv-logoart/Pyramid%20Magic%20III-{width}x{height}.jpg" },
      "localized_name" => "Pyramid Magic III",
      "locale" => "en-us" },
    "viewers" => 3,
    "channels" => 1
  }

https://api.twitch.tv/helix/games?id=513670

{"data":[{"id":"513670","name":"Dance Dance Revolution A20","box_art_url":"https://static-cdn.jtvnw.net/ttv-boxart/Dance%20Dance%20Revolution%20A20-{width}x{height}.jpg"}]}

https://api.twitch.tv/helix/games?name=Pyramid Magic III

{"data":[{"id":"514049","name":"Pyramid Magic III","box_art_url":"https://static-cdn.jtvnw.net/ttv-boxart/Pyramid%20Magic%20III-{width}x{height}.jpg"}]}

These are the incorrect ID/game pairs that I’ve found over the last week and a half, along with the actual game ID for the game string.

512520 / "Just Dance 2020" (512927)
512812 / "LAst WEEK" (513214)
513633 / "TFM: The First Men" (514004)
513414 / "Wonder Blade" (513801)
512255 / "Dusk Diver" (511477)
513703 / "Game Boy Advance Video Movie: DreamWorks Shrek & Shark Tale" (514082)
511820 / "Artificer: Science of Magic" (512262)
512545 / "Captain Starshot" (512954)
512966 / "Material Girl" (513363)
511981 / "Star Trek Trexels" (512421)
513575 / "Bomber Barn" (513957)
513670 / "Pyramid Magic III" (514049)
513747 / "Nyanco Project" (514126)
512250 / "Arena of Evolution: Red Tides" (512668)
511641 / "MayhemCars" (512105)

closed #4

#5

Closed as duplicate post of