Not possible to get reputation and cost required to get a WoW mount?

I see that I can hit /data/wow/mount/{mountId} to get information about a specific mount, and it says how you get it (vendor), but it’s missing several crucial things: Which faction you can buy it from, what the required reputation is with that faction (it isn’t always Exalted), and how much it costs.

For example, I can look up the Voldunai Dunescraper and get this:
{ "_links": { "self": { "href": "https://us.api.blizzard.com/data/wow/mount/1060?namespace=static-9.0.2_36532-us" } }, "id": 1060, "name": "Voldunai Dunescraper", "creature_displays": [ { "key": { "href": "https://us.api.blizzard.com/data/wow/media/creature-display/80972?namespace=static-9.0.2_36532-us" }, "id": 80972 } ], "description": "These brightly-colored fliers are rarely captured in the wild due to their naturally untrusting natures.", "source": { "type": "VENDOR", "name": "Vendor" }, "faction": { "type": "HORDE", "name": "Horde" }, "requirements": { "faction": { "type": "HORDE", "name": "Horde" } } }

It doesn’t tell me that the faction required to get that mount is Voldunai. In this case, the faction is in the name, but it isn’t always in the name! In any case, I don’t have the gold required or reputation required.

And if I look up the Voldunai faction:
{ "_links": { "self": { "href": "https://us.api.blizzard.com/data/wow/reputation-faction/2158?namespace=static-9.0.2_36532-us" } }, "id": 2158, "name": "Voldunai", "description": "Comprised of exiles and scavengers, the Voldunai use their knowledge of the sands to thrive where others would wither and die.", "can_paragon": true, "reputation_tiers": { "key": { "href": "https://us.api.blizzard.com/data/wow/reputation-tiers/0?namespace=static-9.0.2_36532-us" }, "id": 0 }, "player_faction": { "type": "HORDE", "name": "Horde" } }

I know it uses the tier id 0, and I can look up information about that tier, but I still don’t know which tier is required to buy Voldunai mounts or how much they cost.

As a result, in an app I’m building that includes all mounts that can be obtained by reputation, the reputation required, and the cost, I’m having to create a self-maintained, hardcoded JSON dictionary with this information.

An excerpt:
,
“Alabaster Hyena”: {
“expansion”: “Battle for Azeroth”,
“faction”: “Voldunai”,
“reputation”: “Exalted”,
“side”: “Horde”,
“cost”: 10000
},
“Voldunai Dunescraper”: {
“expansion”: “Battle for Azeroth”,
“faction”: “Voldunai”,
“reputation”: “Exalted”,
“side”: “Horde”,
“cost”: 90000
},

Am I missing something or am I going to have to stick with this manually-created and maintained dictionary?

I’d love for there to be a way to, say:

  1. Look up all reputations for an expansion
  2. For each reputation, find out if they sell a mount
  3. For each mount, find out the cost and reputation required.

I have no idea if this will cover every scenario (most likely won’t) but at last for some of them you can check the reputation_requirements from the mount item.

I didn’t have time to properly update wow-query’s database yet and the current one is partially broken, I guess you can get the actual amount of reputation required from the item API.

Right, I see where you’re going with this. Before you “have” the mount, you buy an item from the vendor, like “Reins of the Voldunai Dunescraper” - which has an actual cost.

Been there, tried that. If you get the item JSON for Voldunai Dunescraper, you’ll see the purchase_price is 1 (it costs 90,000 gold). And it doesn’t say the reputation required :frowning:

Sorry - I took a look at wow-query.dev and clicked around a bit but have no idea how to use this. I’m fairly new to development, and I don’t understand the structure of this site or how to search or return information… I’m a novice at Python and Javascript, and my intention is to have a web application where a user selects their region, realm, and name. Then Python on the server gets mount reputation data and return it to the user, probably using Flask. My current development is at github willquill/wow-toons/blob/main/get.py.

I have a long way to go!

Some mounts don’t cost gold. Some have a cost of a certain number of “Apexis Crystals” or other items. And some require both gold and other items!! That’s why I’ve created a manual JSON with an entry like this:

“Dusty Rockhide”: {
“expansion”: “Warlords of Draenor”,
“faction”: “Council of Exarchs”,
“reputation”: “Exalted”,
“side”: “Alliance”,
“cost”: 5000,
“cost_special”: 5000,
“cost_special_currency”: “Apexis Crystal”
},

Just hoping to avoid creating an entry like this for every single reputation mount in the game.

Here’s the sample item where I would expect it to show a purchase_price of 90000 and a purchase_currency of “gold”

 {
      "key": {
        "href": "https://us.api.blizzard.com/data/wow/item/161667?namespace=static-9.0.2_36532-us"
      },
      "data": {
        "level": 50,
        "required_level": 10,
        "sell_price": 0,
        "item_subclass": {
          "name": {
            "it_IT": "Cavalcatura",
            "ru_RU": "Транспорт",
            "en_GB": "Mount",
            "zh_TW": "坐騎",
            "ko_KR": "탈것",
            "en_US": "Mount",
            "es_MX": "Montura",
            "pt_BR": "Montaria",
            "es_ES": "Montura",
            "zh_CN": "坐骑",
            "fr_FR": "Monture",
            "de_DE": "Reittier"
          },
          "id": 5
        },
        "is_equippable": false,
        "purchase_quantity": 1,
        "media": {
          "id": 161667
        },
        "item_class": {
          "name": {
            "it_IT": "Varie",
            "ru_RU": "Разное",
            "en_GB": "Miscellaneous",
            "zh_TW": "雜項",
            "ko_KR": "기타",
            "en_US": "Miscellaneous",
            "es_MX": "Miscelánea",
            "pt_BR": "Diversos",
            "es_ES": "Miscelánea",
            "zh_CN": "杂项",
            "fr_FR": "Divers",
            "de_DE": "Verschiedenes"
          },
          "id": 15
        },
        "quality": {
          "name": {
            "it_IT": "Epico",
            "ru_RU": "Эпическое",
            "en_GB": "Epic",
            "zh_TW": "史詩",
            "ko_KR": "영웅",
            "en_US": "Epic",
            "es_MX": "Épico",
            "pt_BR": "Épico",
            "es_ES": "Épico",
            "zh_CN": "史诗",
            "fr_FR": "Épique",
            "de_DE": "Episch"
          },
          "type": "EPIC"
        },
        "max_count": 1,
        "is_stackable": false,
        "name": {
          "it_IT": "Redini del Graffiadune Voldunai",
          "ru_RU": "Поводья вол'дунского дюнобрюха",
          "en_GB": "Reins of the Voldunai Dunescraper",
          "zh_TW": "沃魯敦掠沙翼手龍韁繩",
          "ko_KR": "볼두나이 모래박박이 고삐",
          "en_US": "Reins of the Voldunai Dunescraper",
          "es_MX": "Riendas del Raspadunas voldunai",
          "pt_BR": "Rédeas do Raspadunas Voldunai",
          "es_ES": "Riendas del rascadunas Voldunai",
          "zh_CN": "沃顿奈破沙者的缰绳",
          "fr_FR": "Rênes de rase-dunes volduni",
          "de_DE": "Zügel des Dünenreißers der Voldunai"
        },
        "purchase_price": 1,
        "id": 161667,
        "inventory_type": {
          "name": {
            "it_IT": "Non equipaggiabile",
            "ru_RU": "Неэкипируемое",
            "en_GB": "Non-equippable",
            "zh_TW": "無法裝備",
            "ko_KR": "착용 불가",
            "en_US": "Non-equippable",
            "es_MX": "No equipable",
            "pt_BR": "Não equipável",
            "es_ES": "No se puede equipar",
            "zh_CN": "无法装备",
            "fr_FR": "Objet hors équipement",
            "de_DE": "Nicht anlegbar"
          },
          "type": "NON_EQUIP"
        }
      }
    },

If we get the payload for the actual item we receive something like this:

https://us.api.blizzard.com/data/wow/item/161667?namespace=static-us&locale=en_US&access_token=<YOUR TOKEN>
{
  "id": 161667,
  "name": "Reins of the Voldunai Dunescraper",
  "purchase_price": 1,
  "sell_price": 0,
  "max_count": 1,
  "description": "Teaches you how to summon a Voldunai Dunescraper.",
  "preview_item": {
    "requirements": {
      "level": {
        "value": 10,
        "display_string": "Requires Level 10"
      },
      "reputation": {
        "faction": {
          "key": {
            "href": "https://us.api.blizzard.com/data/wow/reputation-faction/2158?namespace=static-9.0.2_36532-us"
          },
          "name": "Voldunai",
          "id": 2158
        },
        "min_reputation_level": 7,
        "display_string": "Requires Voldunai - Exalted"
      }
    }
  }
}

Reputation you can get at preview_item.requirements.reputation however the purchase_price is wrong, this I believe is a bug and we could report over the API bug report forum.

However I’m afraid even with that information you still need more data than the API currently provide. Some mounts you learn directly from the NPC and might not even have an item representation.

1 Like

You are totally blowing my mind right now. That first URL you just posted appears to be the same URL I used in my API call but I got a totally different JSON as a response.

I’m on my phone and away from my PC right now, but I’ll have a chance tomorrow to try again. I’m really curious to see what I did wrong in getting that item.

EDIT next day:
Thank you Schiller! I see what I did wrong. I used item search, which has a different result for the item than hitting the item API with the actual item ID. Rookie move.

Here’s what I’m thinking now…

# New version
mount_dict = {
    "Voldunai Dunescraper": {
        "cost": 90000,
        "item": "Reins of the Voldunai Dunescraper"
    },
}

# Old version
mount_dict = {
    "Voldunai Dunescraper": {
        "expansion": "Battle for Azeroth",
        "faction": "Voldunai",
        "reputation": "Exalted",
        "side": "Horde",
        "cost": 90000
    },
}

I can grab whether it’s usable or not, reputation required, and faction from the item API. And I will have a separate dictionary where the keys are expansions and the values are the reputation factions within that explain.