Battlegrounds Hero Power not linked as Child ID?

Hi everyone,

I was working on a small personal project that pulls data from the Hearthstone Battlegrounds API —specifically looking for hero data—when I discovered a discrepancy : the number of heroes returned by the API doesn’t match the number of hero powers.

Upon investigation, I found three heroes whose heroPowerId is not included as a childId of the hero itself.


For reference, here is the raw API data:

A. F. Kay → heroPowerId: 59891 | childIds: [59891, 77774]

Mocri → heroPowerId: 129174 | childIds: None

Rakanishu → heroPowerId: 122960 | childIds: [77823]

Yogg-Saron, End of Hope → heroPowerId: 122958 | childIds: [77853]


Breakdown of each case:

Hero heroPowerId childIds Status Notes
A.F. Kay 59891 [59891, 77774] :white_check_mark: Correct Hero power + Buddy included
Mocri 129174 None :cross_mark: Error No Buddy, but hero power should be here
Rakanishu 122960 [77823] :cross_mark: Error Only Buddy shown, hero power missing
Yogg-Saron 122958 [77853] :cross_mark: Error Only Buddy shown, hero power missing

Key observations:

  • A.F. Kay → Works as expected. heroPowerId appears in childIds .
  • Mocri → childIds is None . Since Mocri has no Buddy, childIds should at least contain 129174 .
  • Rakanishu → childIds only contains the Buddy (77823 ). Hero power 122960 is missing.
  • Yogg-Saron → childIds only contains the Buddy (77853 ). Hero power 122958 is missing.

This creates problems when programmatically mapping heroes to their hero powers using childIds as the reference.


My questions are:

  1. Is this an intentional design choice , or is it a bug in the API response?
  2. What is the recommended way to reliably map a hero to its hero power? Should I always fall back to heroPowerId directly, or is there another field or endpoint I should be using?

I’d prefer to avoid hardcoding exceptions , but I’m happy to do so if this is expected behavior.

Any clarification or official guidance would be much appreciated.


Thanks in advance!