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.4---5
6# Collections API (Retail — Patch 12.0.0)
7
8Comprehensive reference for mounts, pets, pet battles, toys, stables, and heirlooms.
9
10> **Source:** https://warcraft.wiki.gg/wiki/World_of_Warcraft_API
11> **Current as of:** Patch 12.0.0 (Build 65655) — January 28, 2026
12> **Scope:** Retail only.
13
14---
15
16## Scope
17
18- **C_MountJournal** — Mounts collection and summoning
19- **C_PetJournal** — Pet collection management
20- **C_PetBattles** — Pet battle system
21- **C_PetInfo** — Pet info utilities
22- **C_ToyBox / C_ToyBoxInfo** — Toy collection
23- **C_StableInfo** — Hunter pet stables
24- **C_Heirloom / C_HeirloomInfo** — Heirloom collection
25
26---
27
28## C_MountJournal — Mounts
29
30### Mount List & Info
31
32| 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 |
47
48### Mount Actions
49
50| 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 |
64
65### Global Mount Functions
66
67| Function | Returns | Description |
68|----------|---------|-------------|
69| `IsMounted()` | `isMounted` | Is player mounted? |
70| `Dismount()` | — | Dismount |
71| `GetMountCreatureDisplayInfoByID(mountID, index)` | `displayID, isVisible` | Display info |
72
73---
74
75## C_PetJournal — Pet Collection
76
77### Pet List & Info
78
79| 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 |
93
94### Pet Actions
95
96| 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 |
108
109### Pet Filters
110
111| 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 |
120
121---
122
123## C_PetBattles — Pet Battle System
124
125### Battle State
126
127| 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? |
137
138### Battle Pet Info
139
140| 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? |
155
156### Battle Actions
157
158| 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 |
168
169### Battle Owner Constants
170
171| Constant | Value | Description |
172|----------|-------|-------------|
173| `Enum.BattlePetOwner.Ally` | 1 | Player's side |
174| `Enum.BattlePetOwner.Enemy` | 2 | Opponent's side |
175
176---
177
178## C_ToyBox / C_ToyBoxInfo — Toys
179
180| 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 |
204
205---
206
207## C_StableInfo — Hunter Pet Stables
208
209| 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 |
218
219---
220
221## C_Heirloom / C_HeirloomInfo — Heirlooms
222
223| 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? |
235
236---
237
238## Key Events
239
240| 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 |
260
261---
262
263## Gotchas & Restrictions
264
2651. **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()`.