1---2name: wow-api-collections3description: Complete reference for WoW Retail Mount, Pet, Pet Battle, Toy, Stable, and Heirloom Collection APIs. Covers C_MountJournal (mount list, filtering, favorites, summoning, display info), C_PetJournal (pet collection, favorites, summoning, caging, abilities), C_PetBattles (pet battle system, turns, actions, pets, abilities, traps), C_PetInfo, C_ToyBox/C_ToyBoxInfo (toy collection, use, favorites), C_StableInfo (hunter pet stables), C_Heirloom/C_HeirloomInfo (heirloom collection, upgrades). Use when working with mount journal, pet journal, pet battles, toy box, heirloom collection, or hunter stables. Use when this capability is needed.4---56# Collections API (Retail — Patch 12.0.0)78Comprehensive reference for mounts, pets, pet battles, toys, stables, and heirlooms.910> **Source:** https://warcraft.wiki.gg/wiki/World_of_Warcraft_API11> **Current as of:** Patch 12.0.0 (Build 65655) — January 28, 202612> **Scope:** Retail only.1314---1516## Scope1718- **C_MountJournal** — Mounts collection and summoning19- **C_PetJournal** — Pet collection management20- **C_PetBattles** — Pet battle system21- **C_PetInfo** — Pet info utilities22- **C_ToyBox / C_ToyBoxInfo** — Toy collection23- **C_StableInfo** — Hunter pet stables24- **C_Heirloom / C_HeirloomInfo** — Heirloom collection2526---2728## C_MountJournal — Mounts2930### Mount List & Info3132| Function | Returns | Description |33|----------|---------|-------------|34| `C_MountJournal.GetNumMounts()` | `numMounts` | Total mounts in journal |35| `C_MountJournal.GetNumDisplayedMounts()` | `numDisplayed` | Filtered mount count |36| `C_MountJournal.GetDisplayedMountInfo(displayIndex)` | `name, spellID, icon, isActive, isUsable, sourceType, isFavorite, isFactionSpecific, faction, shouldHideOnChar, isCollected, mountID, ...` | Mount display info |37| `C_MountJournal.GetDisplayedMountInfoExtra(displayIndex)` | `creatureDisplayInfoID, description, source, isSelfMount, mountTypeID, uiModelSceneID, animID, spellVisualKitID, disablePlayerMountPreview` | Extra mount display info |38| `C_MountJournal.GetMountInfoByID(mountID)` | `name, spellID, icon, isActive, isUsable, sourceType, isFavorite, isFactionSpecific, faction, shouldHideOnChar, isCollected, mountID` | Mount info by ID |39| `C_MountJournal.GetMountInfoExtraByID(mountID)` | `creatureDisplayInfoID, description, source, isSelfMount, mountTypeID, ...` | Extra info by ID |40| `C_MountJournal.GetMountFromItem(itemID)` | `mountID` | Mount from item |41| `C_MountJournal.GetMountFromSpell(spellID)` | `mountID` | Mount from spell |42| `C_MountJournal.GetMountIDs()` | `mountIDs` | All mount IDs |43| `C_MountJournal.GetCollectedFilterSetting(filterIndex)` | `isChecked` | Collection filter |44| `C_MountJournal.SetCollectedFilterSetting(filterIndex, isChecked)` | — | Set collection filter |45| `C_MountJournal.GetMountAllCreatureDisplayInfoByID(mountID)` | `displayInfo` | All creature displays |46| `C_MountJournal.GetMountUsabilityByID(mountID, checkIndoors)` | `isUsable, useError` | Check mount usability |4748### Mount Actions4950| Function | Returns | Description |51|----------|---------|-------------|52| `C_MountJournal.SummonByID(mountID)` | — | Summon mount |53| `C_MountJournal.Dismiss()` | — | Dismiss mount |54| `C_MountJournal.SetIsFavorite(mountIndex, isFavorite)` | — | Toggle favorite |55| `C_MountJournal.GetIsFavorite(mountIndex)` | `isFavorite, canSetFavorite` | Is favorite? |56| `C_MountJournal.Pickup(displayIndex)` | — | Pick up mount to cursor |57| `C_MountJournal.IsItemMountEquipment(itemID)` | `isMountEquipment` | Is mount equipment? |58| `C_MountJournal.GetAppliedMountEquipmentID()` | `itemID` | Applied mount equipment |59| `C_MountJournal.ApplyMountEquipment(itemID)` | — | Apply mount equipment |60| `C_MountJournal.IsSourceChecked(filterIndex)` | `isChecked` | Source filter checked? |61| `C_MountJournal.SetSourceFilter(filterIndex, isChecked)` | — | Set source filter |62| `C_MountJournal.IsValidSourceFilter(filterIndex)` | `isValid` | Valid source filter? |63| `C_MountJournal.GetNumMountsNeedingFanfare()` | `numMounts` | Mounts needing fanfare |6465### Global Mount Functions6667| Function | Returns | Description |68|----------|---------|-------------|69| `IsMounted()` | `isMounted` | Is player mounted? |70| `Dismount()` | — | Dismount |71| `GetMountCreatureDisplayInfoByID(mountID, index)` | `displayID, isVisible` | Display info |7273---7475## C_PetJournal — Pet Collection7677### Pet List & Info7879| Function | Returns | Description |80|----------|---------|-------------|81| `C_PetJournal.GetNumPets()` | `numPets, numOwned` | Total / owned pet count |82| `C_PetJournal.GetPetInfoByIndex(index)` | `petID, speciesID, owned, customName, level, favorite, isRevoked, speciesName, icon, petType, companionID, tooltip, description, isWild, canBattle, isTradeable, isUnique, obtainable` | Pet info by index |83| `C_PetJournal.GetPetInfoByPetID(petID)` | `speciesID, customName, level, xp, maxXp, displayID, isFavorite, name, icon, petType, creatureID, sourceText, description, isWild, canBattle, isTradeable, isUnique, obtainable, ...` | Pet info by pet ID |84| `C_PetJournal.GetPetInfoBySpeciesID(speciesID)` | `name, icon, petType, companionID, tooltipSource, tooltipDescription, isWild, canBattle, isTradeable, isUnique, obtainable, creatureDisplayID` | Pet species info |85| `C_PetJournal.GetPetInfoByItemID(itemID)` | `speciesID` | Species from item |86| `C_PetJournal.GetNumPetSources()` | `numSources` | Number of sources |87| `C_PetJournal.GetNumPetTypes()` | `numTypes` | Number of types |88| `C_PetJournal.GetOwnedBattlePetString(speciesID)` | `ownedString` | "X/3 owned" text |89| `C_PetJournal.GetBattlePetBreedName(speciesID)` | `breedName` | Breed name |90| `C_PetJournal.GetPetStats(petID)` | `health, maxHealth, power, speed, rarity` | Battle stats |91| `C_PetJournal.GetPetAbilityInfo(abilityID)` | `name, icon, type` | Ability info |92| `C_PetJournal.GetPetAbilityList(speciesID [, idTable [, levelTable]])` | `abilities, levels` | Species abilities |9394### Pet Actions9596| Function | Returns | Description |97|----------|---------|-------------|98| `C_PetJournal.SummonPetByGUID(petID)` | — | Summon companion pet |99| `C_PetJournal.DismissSummonedPet()` | — | Dismiss summoned pet |100| `C_PetJournal.GetSummonedPetGUID()` | `petID` | Currently summoned pet |101| `C_PetJournal.SetFavorite(petID, favorite)` | — | Toggle favorite |102| `C_PetJournal.SetCustomName(petID, name)` | — | Rename pet |103| `C_PetJournal.ReleasePetByID(petID)` | — | Release (delete) pet |104| `C_PetJournal.CagePetByID(petID)` | — | Cage pet for trading |105| `C_PetJournal.PetIsSummonable(petID)` | `isSummonable, error` | Can summon? |106| `C_PetJournal.FindPetIDByName(name)` | `petID` | Find pet by name |107| `C_PetJournal.PickupPet(petID)` | — | Pick up to cursor |108109### Pet Filters110111| Function | Returns | Description |112|----------|---------|-------------|113| `C_PetJournal.SetSearchFilter(text)` | — | Filter by name |114| `C_PetJournal.ClearSearchFilter()` | — | Clear search filter |115| `C_PetJournal.IsFilterChecked(filterIndex)` | `isChecked` | Source filter |116| `C_PetJournal.SetFilterChecked(filterIndex, isChecked)` | — | Set source filter |117| `C_PetJournal.IsPetTypeChecked(petType)` | `isChecked` | Type filter |118| `C_PetJournal.SetPetTypeFilter(petType, isChecked)` | — | Set type filter |119| `C_PetJournal.SetPetSortParameter(sortParam)` | — | Set sort parameter |120121---122123## C_PetBattles — Pet Battle System124125### Battle State126127| Function | Returns | Description |128|----------|---------|-------------|129| `C_PetBattles.IsInBattle()` | `inBattle` | In pet battle? |130| `C_PetBattles.IsWildBattle()` | `isWild` | Wild pet battle? |131| `C_PetBattles.IsPVPBattle()` | `isPVP` | PvP pet battle? |132| `C_PetBattles.IsPlayerNPC(owner)` | `isNPC` | Is owner NPC? |133| `C_PetBattles.GetActivePet(owner)` | `petIndex` | Active pet index |134| `C_PetBattles.GetNumPets(owner)` | `numPets` | Owner's pet count |135| `C_PetBattles.IsWaitingOnOpponent()` | `isWaiting` | Waiting for opponent? |136| `C_PetBattles.ShouldShowPetSelect()` | `shouldShow` | Show pet select? |137138### Battle Pet Info139140| Function | Returns | Description |141|----------|---------|-------------|142| `C_PetBattles.GetName(owner, petIndex)` | `name` | Pet name |143| `C_PetBattles.GetDisplayID(owner, petIndex)` | `displayID` | Display model |144| `C_PetBattles.GetLevel(owner, petIndex)` | `level` | Pet level |145| `C_PetBattles.GetHealth(owner, petIndex)` | `health` | Current health |146| `C_PetBattles.GetMaxHealth(owner, petIndex)` | `maxHealth` | Max health |147| `C_PetBattles.GetPower(owner, petIndex)` | `power` | Power stat |148| `C_PetBattles.GetSpeed(owner, petIndex)` | `speed` | Speed stat |149| `C_PetBattles.GetBreedQuality(owner, petIndex)` | `quality` | Quality (1-4) |150| `C_PetBattles.GetPetType(owner, petIndex)` | `type` | Pet type |151| `C_PetBattles.GetIcon(owner, petIndex)` | `icon` | Pet icon |152| `C_PetBattles.GetSpeciesID(owner, petIndex)` | `speciesID` | Species ID |153| `C_PetBattles.IsAlive(owner, petIndex)` | `isAlive` | Is pet alive? |154| `C_PetBattles.IsCapturable(owner, petIndex)` | `canCapture` | Can this pet be captured? |155156### Battle Actions157158| Function | Returns | Description |159|----------|---------|-------------|160| `C_PetBattles.UseAbility(abilityIndex)` | — | Use ability |161| `C_PetBattles.ChangePet(petIndex)` | — | Switch pet |162| `C_PetBattles.UseTrap()` | — | Use pet trap |163| `C_PetBattles.SkipTurn()` | — | Skip turn |164| `C_PetBattles.ForfeitGame()` | — | Forfeit battle |165| `C_PetBattles.GetAbilityInfo(owner, petIndex, abilityIndex)` | `name, icon, type` | Ability info |166| `C_PetBattles.GetAbilityState(owner, petIndex, abilityIndex)` | `isUsable, currentCooldown, currentLockdown` | Ability state |167| `C_PetBattles.GetTurnTimeInfo()` | `timeRemaining, totalTime` | Turn timer |168169### Battle Owner Constants170171| Constant | Value | Description |172|----------|-------|-------------|173| `Enum.BattlePetOwner.Ally` | 1 | Player's side |174| `Enum.BattlePetOwner.Enemy` | 2 | Opponent's side |175176---177178## C_ToyBox / C_ToyBoxInfo — Toys179180| Function | Returns | Description |181|----------|---------|-------------|182| `C_ToyBox.GetNumTotalDisplayedToys()` | `numToys` | Displayed toy count |183| `C_ToyBox.GetNumLearnedDisplayedToys()` | `numLearned` | Learned displayed count |184| `C_ToyBox.GetToyFromIndex(index)` | `itemID` | Toy at display index |185| `C_ToyBox.GetToyInfo(itemID)` | `itemID, toyName, icon, isFavorite, hasFanfare, qualityEnum` | Toy details |186| `C_ToyBox.GetToyLink(itemID)` | `link` | Toy item link |187| `C_ToyBox.IsToyUsable(itemID)` | `isUsable` | Can use toy now? |188| `C_ToyBox.HasFavorites()` | `hasFavorites` | Has favorite toys? |189| `C_ToyBox.SetIsFavorite(itemID, isFavorite)` | — | Toggle favorite |190| `C_ToyBox.GetIsFavorite(itemID)` | `isFavorite` | Is toy favorite? |191| `C_ToyBox.ForceToyRefilter()` | — | Refilter toy list |192| `C_ToyBox.SetFilterString(filter)` | — | Set search filter |193| `C_ToyBox.GetFilterString()` | `filter` | Current filter |194| `C_ToyBox.IsExpansionTypeFilterChecked(expansion)` | `isChecked` | Expansion filter |195| `C_ToyBox.SetExpansionTypeFilter(expansion, isChecked)` | — | Set expansion filter |196| `C_ToyBox.IsSourceTypeFilterChecked(sourceType)` | `isChecked` | Source filter |197| `C_ToyBox.SetSourceTypeFilter(sourceType, isChecked)` | — | Set source filter |198| `C_ToyBox.SetAllSourceTypeFilters(isChecked)` | — | Set all source filters |199| `C_ToyBox.PickupToyBoxItem(itemID)` | — | Pick up toy |200| `C_ToyBoxInfo.ClearFanfare(itemID)` | — | Clear fanfare |201| `C_ToyBoxInfo.NeedsFanfare(itemID)` | `needsFanfare` | Needs fanfare? |202| `PlayerHasToy(itemID)` | `hasToy` | Has toy collected? |203| `UseToy(itemID)` | — | Use a toy |204205---206207## C_StableInfo — Hunter Pet Stables208209| Function | Returns | Description |210|----------|---------|-------------|211| `C_StableInfo.GetStablePetInfo(index)` | `info` | Stable pet info |212| `C_StableInfo.GetNumStablePets()` | `numPets` | Pets in stable |213| `C_StableInfo.GetActivePetList()` | `activeList` | Active pet list |214| `C_StableInfo.GetStabledPetList()` | `stabledList` | Stabled pet list |215| `C_StableInfo.IsStabledPet(index)` | `isStabled` | Is pet stabled? |216| `C_StableInfo.SetPetSlot(localIndex, slot)` | — | Set pet to slot |217| `C_StableInfo.PickupStablePet(index)` | — | Pick up pet |218219---220221## C_Heirloom / C_HeirloomInfo — Heirlooms222223| Function | Returns | Description |224|----------|---------|-------------|225| `C_Heirloom.GetNumHeirlooms()` | `numHeirlooms` | Total heirlooms |226| `C_Heirloom.GetNumKnownHeirlooms()` | `numKnown` | Collected count |227| `C_Heirloom.GetHeirloomInfo(itemID)` | `alreadyHas, canUpgrade, ...` | Heirloom info |228| `C_Heirloom.GetHeirloomMaxUpgradeLevel(itemID)` | `maxLevel` | Max upgrade level |229| `C_Heirloom.GetHeirloomLink(itemID)` | `link` | Heirloom item link |230| `C_Heirloom.PlayerHasHeirloom(itemID)` | `hasHeirloom` | Has heirloom? |231| `C_Heirloom.CanHeirloomUpgradeFromPending(itemID)` | `canUpgrade` | Can upgrade? |232| `C_Heirloom.CreateHeirloom(itemID)` | — | Create heirloom |233| `C_Heirloom.UpgradeHeirloom(itemID)` | — | Upgrade heirloom |234| `C_Heirloom.IsMod23ArmorHeirloom(itemID)` | `isMod23` | Is Mod23 armor? |235236---237238## Key Events239240| Event | Payload | Description |241|-------|---------|-------------|242| `MOUNT_JOURNAL_USABILITY_CHANGED` | — | Mount usability changed |243| `MOUNT_JOURNAL_SEARCH_UPDATED` | — | Mount search updated |244| `NEW_MOUNT_ADDED` | mountID | New mount collected |245| `COMPANION_UPDATE` | companionType | Companion updated |246| `NEW_PET_ADDED` | petID | New pet collected |247| `PET_JOURNAL_LIST_UPDATE` | — | Pet list updated |248| `PET_JOURNAL_PET_DELETED` | petID | Pet deleted |249| `PET_BATTLE_OPENING_START` | — | Pet battle starting |250| `PET_BATTLE_OPENING_DONE` | — | Pet battle started |251| `PET_BATTLE_CLOSE` | — | Pet battle ended |252| `PET_BATTLE_TURN_STARTED` | — | Turn started |253| `PET_BATTLE_PET_ROUND_RESULTS` | — | Round results |254| `PET_BATTLE_OVER` | — | Battle over |255| `PET_BATTLE_FINAL_ROUND` | — | Final round |256| `TOYS_UPDATED` | itemID, isNew, hasFanfare | Toy collection updated |257| `NEW_TOY_ADDED` | itemID | New toy collected |258| `HEIRLOOMS_UPDATED` | itemID, updateReason | Heirloom updated |259| `HEIRLOOM_UPGRADE_TARGETING_CHANGED` | pendingHeirloomUpgrade | Upgrade targeting |260261---262263## Gotchas & Restrictions2642651. **Mount IDs vs spell IDs** — Mounts have both a mountID and a spellID. `SummonByID()` takes mountID.2662. **Pet GUIDs are session-specific** — Pet GUIDs (petID returned by journal functions) persist across sessions, but BattlePet GUIDs in combat are different.2673. **Pet battle restrictions** — Pet battle functions only work during active pet battles. Check `C_PetBattles.IsInBattle()` first.2684. **Toy cooldowns** — `UseToy()` respects cooldowns. Check `C_ToyBox.IsToyUsable()` before use.2695. **Display index vs ID** — `GetDisplayedMountInfo()` takes a filtered list index, not a mountID. Index changes with filters.2706. **Summon requires hardware event** — `SummonByID()` and `SummonPetByGUID()` require a hardware event.2717. **Pet battle ownership** — Use `Enum.BattlePetOwner.Ally` (1) and `Enum.BattlePetOwner.Enemy` (2) for owner parameters.2728. **Heirloom creation** — `CreateHeirloom()` requires the appropriate currency/cost. Check `CanHeirloomUpgradeFromPending()`.273274---275> Converted and distributed by [TomeVault](https://tomevault.io/claim/jburlison) — claim your Tome and manage your conversions.276<!-- tomevault:4.0:skill_md:2026-04-13 -->