askill
wow-api-guild

wow-api-guildSafety --Repository

Complete reference for WoW Retail Guild Management, Guild Bank, Guild Info, and Guild Event APIs. Covers guild management functions (invite, promote, demote, kick, disband, MOTD, info), guild roster (GetGuildRosterInfo, GuildRoster, sorting), guild bank functions (GetGuildBankItemInfo, deposit, withdraw, tab management, permissions), guild perks/reputation, C_GuildInfo, and the Club API guild integration (guilds are ClubType.Guild in the Club system). Use when working with guild management, guild roster, guild bank, guild chat, guild events, or guild achievements.

3 stars
1.2k downloads
Updated 2/14/2026

Package Files

Loading files...
SKILL.md

Guild API (Retail — Patch 12.0.0)

Comprehensive reference for guild management, guild bank, and guild info APIs.

Source: https://warcraft.wiki.gg/wiki/World_of_Warcraft_API Current as of: Patch 12.0.0 (Build 65655) — January 28, 2026 Scope: Retail only.


Scope

  • Guild Management — Invite, promote, demote, kick, disband, MOTD
  • Guild Roster — Member list, info, sorting
  • Guild Bank — Item management, tabs, permissions
  • C_GuildInfo — Guild info utilities
  • Club Integration — Guilds as C_Club entities

Guild Management

Core Functions

FunctionReturnsDescription
IsInGuild()inGuildIs player in a guild?
GetGuildInfo(unit)guildName, guildRankName, guildRankIndex, realmGuild info for unit
GetGuildFactionGroup()factionGroupGuild faction (0=Horde, 1=Alliance)
GuildInvite(name)Invite player to guild
GuildUninvite(name)Remove from guild
GuildPromote(name)Promote one rank
GuildDemote(name)Demote one rank
GuildSetLeader(name)Transfer leadership
GuildDisband()Disband guild
GuildLeave()Leave guild
GuildSetMOTD(motd)Set message of the day
GetGuildRosterMOTD()motdGet MOTD
GuildRosterSetPublicNote(index, note)Set public note
GuildRosterSetOfficerNote(index, note)Set officer note
GuildControlSetRank(rankIndex)Select rank for editing
GuildControlSetRankFlag(flagIndex, enabled)Set rank permission
GuildControlGetRankFlags()flagsGet rank permissions
GuildControlGetNumRanks()numRanksNumber of ranks
GuildControlGetRankName(rankIndex)nameRank name
GuildControlAddRank(name)Add new rank
GuildControlDelRank(rankIndex)Delete rank
GuildControlSaveRank(name)Save rank changes

Guild Roster

FunctionReturnsDescription
GetNumGuildMembers()totalMembers, numOnline, numOnlineAndMobileMember counts
GetGuildRosterInfo(index)name, rankName, rankIndex, level, classDisplayName, zone, publicNote, officerNote, isOnline, status, class, achievementPoints, achievementRank, isMobile, isSoREligible, standingIDMember info
GetGuildRosterLastOnline(index)years, months, days, hoursLast online time
GuildRoster()Request roster refresh
SortGuildRoster(sortType)Sort roster
SetGuildRosterShowOffline(showOffline)Toggle offline display
GetGuildRosterShowOffline()showOfflineShowing offline?
SetGuildRosterSelection(index)Select member
GetGuildRosterSelection()indexSelected member

C_GuildInfo

FunctionReturnsDescription
C_GuildInfo.GetGuildNewsInfo(index)newsInfoGuild news item
C_GuildInfo.GetGuildTabardInfo(unit)tabardInfoGuild tabard details
C_GuildInfo.GuildRoster()Request roster update
C_GuildInfo.QueryGuildMemberRecipes(guildMemberGUID, skillLineID)Query member recipes
C_GuildInfo.QueryGuildMembersForRecipe(skillLineID, spellID [, recipeLevel])Query who knows recipe
C_GuildInfo.RemoveFromGuild(guid)Remove by GUID
C_GuildInfo.IsGuildOfficer()isOfficerIs player officer?
C_GuildInfo.IsGuildRankAssignmentAllowed(guid, rankOrder)isAllowedCan assign rank?
C_GuildInfo.SetGuildRankOrder(guid, rankOrder)Set member rank
C_GuildInfo.SetNote(guid, note, isPublic)Set public/officer note
C_GuildInfo.CanEditOfficerNote()canEditCan edit officer notes?
C_GuildInfo.CanSpeakInGuildChat()canSpeakCan talk in guild chat?
C_GuildInfo.CanViewOfficerNote()canViewCan view officer notes?
C_GuildInfo.GetGuildRankOrder(guid)rankOrderMember rank order
C_GuildInfo.MemberExistsByName(name)existsMember in guild?

Guild Bank

Guild Bank Items

FunctionReturnsDescription
GetGuildBankNumSlots(tab)numSlotsSlots in bank tab
GetGuildBankItemInfo(tab, slot)texture, itemCount, locked, isFiltered, qualityItem info
GetGuildBankItemLink(tab, slot)linkItem link
GetGuildBankItemValue(tab, slot)valueItem vendor value
AutoStoreGuildBankItem(tab, slot)Move to bags
SplitGuildBankItem(tab, slot, amount)Split stack
PickupGuildBankItem(tab, slot)Pick up item
QueryGuildBankTab(tab)Request tab data
QueryGuildBankLog(tab)Request tab log
QueryGuildBankText(tab)Request tab info text

Guild Bank Tabs

FunctionReturnsDescription
GetNumGuildBankTabs()numTabsNumber of bank tabs
GetGuildBankTabInfo(tab)name, icon, isViewable, canDeposit, numWithdrawals, remainingWithdrawalsTab info
SetGuildBankTabInfo(tab, name, icon)Edit tab name/icon
BuyGuildBankTab()Purchase new tab
GetGuildBankTabCost()costNext tab cost
GetGuildBankText(tab)textTab info text
SetGuildBankText(tab, text)Set tab info text
CanGuildBankRepair()canRepairCan repair from guild bank?
GetGuildBankWithdrawMoney()amountWithdrawal allowance
GetGuildBankMoney()moneyGuild bank gold
DepositGuildBankMoney(amount)Deposit gold
WithdrawGuildBankMoney(amount)Withdraw gold
CanWithdrawGuildBankMoney()canWithdrawCan withdraw gold?
GetGuildBankMoneyTransaction(index)type, name, amount, years, months, days, hoursMoney log entry
GetNumGuildBankMoneyTransactions()numTransactionsMoney log count

Guild Bank Log

FunctionReturnsDescription
GetNumGuildBankTransactions(tab)numTransactionsTab transaction count
GetGuildBankTransaction(tab, index)type, name, itemLink, count, tab1, tab2, year, month, day, hourTransaction entry

Guild + Club Integration

Guilds are represented as clubs with Enum.ClubType.Guild in the C_Club system:

-- Get guild as a club
local clubs = C_Club.GetSubscribedClubs()
for _, club in ipairs(clubs) do
    if club.clubType == Enum.ClubType.Guild then
        local guildClubId = club.clubId
        -- Use C_Club functions for guild chat streams
        local streams = C_Club.GetStreams(guildClubId)
        break
    end
end

Common Patterns

Iterate Guild Roster

local function PrintGuildMembers()
    local numMembers = GetNumGuildMembers()
    for i = 1, numMembers do
        local name, rankName, rankIndex, level, classDisplayName, zone,
              publicNote, officerNote, isOnline = GetGuildRosterInfo(i)
        if isOnline then
            print(name, level, classDisplayName, zone)
        end
    end
end

-- Must request roster first
C_GuildInfo.GuildRoster()

Guild Bank Interaction

-- List items in guild bank tab 1
local function ListGuildBankTab(tab)
    local numSlots = GetGuildBankNumSlots(tab)
    for slot = 1, numSlots do
        local texture, itemCount, locked, isFiltered, quality = GetGuildBankItemInfo(tab, slot)
        if texture then
            local link = GetGuildBankItemLink(tab, slot)
            print(link, "x" .. (itemCount or 1))
        end
    end
end

Key Events

EventPayloadDescription
GUILD_ROSTER_UPDATEcanRequestRosterUpdateRoster data refreshed
GUILD_RANKS_UPDATERank structure changed
GUILD_MOTDmotdTextMOTD received
GUILD_NEWS_UPDATEGuild news updated
GUILD_INVITE_REQUESTinviter, guildName, guildAchievementPoints, oldGuildName, isNewGuild, ...Guild invite received
GUILD_INVITE_CANCELInvite cancelled
PLAYER_GUILD_UPDATEunitTargetGuild status changed
GUILD_TRADESKILL_UPDATEGuild tradeskill updated
GUILD_RECIPE_KNOWN_BY_MEMBERSRecipe query result
GUILDBANK_ITEM_LOCK_CHANGEDBank item lock changed
GUILDBANK_UPDATE_TABSBank tabs updated
GUILDBANK_UPDATE_MONEYBank money changed
GUILDBANK_UPDATE_TEXTtabBank info text updated
GUILDBANKBAGSLOTS_CHANGEDBank slots changed
GUILDBANKFRAME_OPENEDBank frame opened
GUILDBANKFRAME_CLOSEDBank frame closed
GUILDBANKLOG_UPDATEBank log updated

Gotchas & Restrictions

  1. Roster request required — Call C_GuildInfo.GuildRoster() before reading roster. Data isn't always current.
  2. Guild bank requires NPC — Guild bank functions only work when at a guild bank NPC.
  3. Permissions vary by rank — Check permissions before attempting operations. CanGuildBankRepair(), CanWithdrawGuildBankMoney(), etc.
  4. QueryGuildBankTab is async — Must query each tab and wait for GUILDBANK_UPDATE_TABS before reading items.
  5. Guild = Club — Guild chat uses C_Club with Enum.ClubType.Guild. Use C_Club.SendMessage() for guild chat.
  6. Rank indices — Rank 0 = Guild Master. Higher indices = lower ranks.
  7. GetGuildRosterInfo index — 1-based index into the roster. Not related to rank or any other ordering.
  8. MOTD event timingGUILD_MOTD fires during login. Register early to catch it.

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

AI review pending.

Metadata

Licenseunknown
Version-
Updated2/14/2026
PublisherJBurlison

Tags

apici-cd