Search…
⌃K

Heroes

Queries

hero

Returns a single Hero according to its id.
hero(id: ID!): Hero

heroes

Returns multiple Heroes according to the arguments passed.
heroes(
skip: Int
first: Int
orderBy: HeroOrderBy
orderDirection: OrderDirection
where: HeroFilter
): [Hero]!

Object Types

Hero

The Hero object type contains the following fields:

Basic Information

  • id: ID - the Hero's ID. Crystalvale Hero IDs are padded by 1000000000000 (one trillion), and Serendale (Klaytn) IDs are padded by 2000000000000 (two trillion).
  • numberId: String - deprecated, as id now sorts as Int.
  • normalizedId: String - the ID that appears in-game without realm padding.
  • owner: Profile - the current owner of the Hero. Heroes held in the Tavern contract will still return the Profile of their owner.
  • previousOwner: Profile - the most immediate recent owner of the Hero. May return null if the Hero has not changed wallets since the Perilous Journey.
  • creator: Profile - currently not in use and will return null
  • network: String - the current network of the Hero; returns hmy, dfk, or kla
  • originRealm: String - the origin realm of the Hero; returns SER, CRY, or SER2
  • statGenes: String - the encrypted string of the Hero's dominant and recessive stat genes
  • visualGenes: String - the encrypted string of the Hero's dominant and recessive visual genes
  • rarity: Int - maps from 0 (Common) to 4 (Mythic)
  • shiny: Boolean
  • generation: Int
  • firstName: Int - parsed by the Hero First Name tables according to gender
  • lastName: Int - parsed by the Hero Last Name table
  • shinyStyle: Int - ranging from 0 to 13
  • mainClass: String
  • subClass: String

Summoning Details

  • summonedTime: Int - the Unix timestamp of the Hero's summoning
  • nextSummonTime: Int - the Unix timestamp of the Hero's next available summon
  • summonerId: Hero - the Hero object of the Hero's Summoner
  • assistantId: Hero - the Hero object of the Hero's Assistant Summoner
  • summons: Int - the number of summons used by the Hero
  • maxSummons: Int - the maximum number of summons by the Hero; returns 11 for Gen0 Heroes
  • summonsRemaining: Int - the number of summons remaining for the Hero; returns 11 for Gen0 Heroes
  • darkSummoned: Bool - whether the Hero was Dark Summoned or not
  • darkSummonLevels: Int - the maximum level a Hero can attain from Dark Summoning level boosts (Default: 1 for Dark Summoned Heroes; 0 for non-DS Heroes)

Hero State

  • staminaFullAt: Int - the Unix timestamp when the Hero's Stamina will be full
  • hpFullAt: Int - the Unix timestamp when the Hero's HP will be full; not currently in use
  • mpFullAt: Int - the Unix timestamp when the Hero's MP will be full; not currently in use
  • level: Int
  • xp: Int - the Hero's current XP toward their next level
  • currentQuest: String - the contract address of the Hero's current quest
  • sp: Int - not currently in use
  • status: String - not currently in use

Stats and Stat Growth

Hero Stats
  • strength: Int
  • intelligence: Int
  • wisdom: Int
  • luck: Int
  • agility: Int
  • vitality: Int
  • endurance: Int
  • dexterity: Int
  • hp: Int
  • mp: Int
  • stamina: Int - the Hero's maximum stamina
Primary Stat Growth
Stat Growth, HP Growth, and MP Growth Values are returned as integers representing percentage values to two decimal places of precision (e.g. 1725 is 17.25%). To convert these values to percents represented in decimals, divide by 10000 (ten thousand).
  • strengthGrowthP: Int
  • intelligenceGrowthP: Int
  • wisdomGrowthP: Int
  • luckGrowthP: Int
  • agilityGrowthP: Int
  • vitalityGrowthP: Int
  • enduranceGrowthP: Int
  • dexterityGrowthP: Int
Secondary Stat Growth
  • strengthGrowthS: Int
  • intelligenceGrowthS: Int
  • wisdomGrowthS: Int
  • luckGrowthS: Int
  • agilityGrowthS: Int
  • vitalityGrowthS: Int
  • enduranceGrowthS: Int
  • dexterityGrowthS: Int
HP and MP Growth
  • hpSmGrowth: Int
  • hpRgGrowth: Int
  • hpLgGrowth: Int
  • mpSmGrowth: Int
  • mpRgGrowth: Int
  • mpLgGrowth: Int

Profession Skills

Profession Skill values are stored as integers and should be divided by 10 to return the value on the back of the Hero card.
  • mining: Int
  • gardening: Int
  • foraging: Int
  • fishing: Int

Stat Genes

The API only displays the Hero's dominant genes. Recessive stat genes must be parsed from the Hero's statGenes string.
  • profession: String
  • passive1: String
  • passive2: String
  • active1: String
  • active2: String
  • statBoost1: String
  • statBoost2: String
  • statsUnknown1: String
  • element: String
  • statsUnknown2: String

Visual Genes

The API only displays the Hero's dominant genes. Recessive visual genes must be parsed from the Hero's visualGenes string.
  • gender: String
  • headAppendage: String
  • backAppendage: String
  • background: String
  • hairStyle: String
  • hairColor: String
  • visualUnknown1: String
  • eyeColor: String
  • skinColor: String
  • appendageColor: String
  • backAppendageColor: String
  • visualUnknown2: String

Auction Details

  • assistingAuction: Auction - if the Hero is currently placed for Hire, returns the corresponding Auction
  • assistingPrice: String - if the Hero is currently placed for Hire, returns the Hire price in wei
  • saleAuction: Auction - if the Hero is currently placed for Sale, returns the corresponding Auction
  • salePrice: String - if the Hero is currently placed for Sale, returns the Sale price in wei
  • privateAuctionProfile: Profile - if the Hero is currently placed for Private Sale or Hire, returns the corresponding Profile of the future buyer/renter

Perilous Journey

  • pjStatus: String - the Perilous Journey status of the Hero; returns null, SURVIVED, ON_JOURNEY, or DIED
  • pjLevel: Int - the Level of the Hero when & if it was sent on the Perilous Journey
  • pjOwner: Profile - the Profile of the player who sent the Hero on the Perilous Journey
  • pjClaimStamp: Int - the Unix timestamp of the Hero's Perilous Journey claim transaction

Examples

Example 1

All Heroes owned by an individual user:
{
heroes(where: {owner: "0x2E7669F61eA77F02445A015FBdcFe2DE47083E02"}) {
id
mainClass
rarity
}
}

Example 2

All Level 1, Gen0 Heroes currently located on the Harmony network:
{
heroes(where: {generation: 0, level: 1, network: "hmy"}) {
id
mainClass
owner {
name
}
}
}

Example 3

All Heroes with at least 23 Endurance that died on the Perilous Journey
{
heroes(orderBy: endurance, orderDirection: desc, where: {endurance_gte: 23, pjStatus: "DIED"}) {
id
mainClass
endurance
pjStatus
}
}

Example 4

All Paladins currently for Sale that were summoned with a Might Enhancement Stone (assumes that Primary Strength Growth rate is at least 83%), sorted by ascending Sale Price:
{
heroes(orderBy: salePrice, orderDirection: asc, where: {mainClass: "Paladin", strengthGrowthP_gte: 8300, salePrice_not: null}) {
id
rarity
level
strengthGrowthP
statBoost2
salePrice
}
}
Because Auction and PetAuction queries can't filter on subfields of tokenId, use complex Heroes and Pets queries with a salePrice_not: null filter instead.

Example 5

The Top 3 Heroes of each profession ordered by that profession skill, using aliases and fragments:
query topProfessionHeroes {
foraging: heroes(first: 3, orderBy: foraging, orderDirection: desc) {
...heroDetails
foraging
}
fishing: heroes(first: 3, orderBy: fishing, orderDirection: desc) {
...heroDetails
fishing
}
gardening: heroes(first: 3, orderBy: gardening, orderDirection: desc) {
...heroDetails
gardening
}
mining: heroes(first: 3, orderBy: mining, orderDirection: desc) {
...heroDetails
mining
}
}
fragment heroDetails on Hero {
id
mainClass
rarity
level
owner {
name
}
}
Last modified 1mo ago