wow-api-guild
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
| Function | Returns | Description |
|---|---|---|
IsInGuild() |
inGuild |
Is player in a guild? |
GetGuildInfo(unit) |
guildName, guildRankName, guildRankIndex, realm |
Guild info for unit |
GetGuildFactionGroup() |
factionGroup |
Guild 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() |
motd |
Get 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() |
flags |
Get rank permissions |
GuildControlGetNumRanks() |
numRanks |
Number of ranks |
GuildControlGetRankName(rankIndex) |
name |
Rank name |
GuildControlAddRank(name) |
— | Add new rank |
GuildControlDelRank(rankIndex) |
— | Delete rank |
GuildControlSaveRank(name) |
— | Save rank changes |
Guild Roster
| Function | Returns | Description |
|---|---|---|
GetNumGuildMembers() |
totalMembers, numOnline, numOnlineAndMobile |
Member counts |
GetGuildRosterInfo(index) |
name, rankName, rankIndex, level, classDisplayName, zone, publicNote, officerNote, isOnline, status, class, achievementPoints, achievementRank, isMobile, isSoREligible, standingID |
Member info |
GetGuildRosterLastOnline(index) |
years, months, days, hours |
Last online time |
GuildRoster() |
— | Request roster refresh |
SortGuildRoster(sortType) |
— | Sort roster |
SetGuildRosterShowOffline(showOffline) |
— | Toggle offline display |
GetGuildRosterShowOffline() |
showOffline |
Showing offline? |
SetGuildRosterSelection(index) |
— | Select member |
GetGuildRosterSelection() |
index |
Selected member |
C_GuildInfo
| Function | Returns | Description |
|---|---|---|
C_GuildInfo.GetGuildNewsInfo(index) |
newsInfo |
Guild news item |
C_GuildInfo.GetGuildTabardInfo(unit) |
tabardInfo |
Guild 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() |
isOfficer |
Is player officer? |
C_GuildInfo.IsGuildRankAssignmentAllowed(guid, rankOrder) |
isAllowed |
Can assign rank? |
C_GuildInfo.SetGuildRankOrder(guid, rankOrder) |
— | Set member rank |
C_GuildInfo.SetNote(guid, note, isPublic) |
— | Set public/officer note |
C_GuildInfo.CanEditOfficerNote() |
canEdit |
Can edit officer notes? |
C_GuildInfo.CanSpeakInGuildChat() |
canSpeak |
Can talk in guild chat? |
C_GuildInfo.CanViewOfficerNote() |
canView |
Can view officer notes? |
C_GuildInfo.GetGuildRankOrder(guid) |
rankOrder |
Member rank order |
C_GuildInfo.MemberExistsByName(name) |
exists |
Member in guild? |
Guild Bank
Guild Bank Items
| Function | Returns | Description |
|---|---|---|
GetGuildBankNumSlots(tab) |
numSlots |
Slots in bank tab |
GetGuildBankItemInfo(tab, slot) |
texture, itemCount, locked, isFiltered, quality |
Item info |
GetGuildBankItemLink(tab, slot) |
link |
Item link |
GetGuildBankItemValue(tab, slot) |
value |
Item 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
| Function | Returns | Description |
|---|---|---|
GetNumGuildBankTabs() |
numTabs |
Number of bank tabs |
GetGuildBankTabInfo(tab) |
name, icon, isViewable, canDeposit, numWithdrawals, remainingWithdrawals |
Tab info |
SetGuildBankTabInfo(tab, name, icon) |
— | Edit tab name/icon |
BuyGuildBankTab() |
— | Purchase new tab |
GetGuildBankTabCost() |
cost |
Next tab cost |
GetGuildBankText(tab) |
text |
Tab info text |
SetGuildBankText(tab, text) |
— | Set tab info text |
CanGuildBankRepair() |
canRepair |
Can repair from guild bank? |
GetGuildBankWithdrawMoney() |
amount |
Withdrawal allowance |
GetGuildBankMoney() |
money |
Guild bank gold |
DepositGuildBankMoney(amount) |
— | Deposit gold |
WithdrawGuildBankMoney(amount) |
— | Withdraw gold |
CanWithdrawGuildBankMoney() |
canWithdraw |
Can withdraw gold? |
GetGuildBankMoneyTransaction(index) |
type, name, amount, years, months, days, hours |
Money log entry |
GetNumGuildBankMoneyTransactions() |
numTransactions |
Money log count |
Guild Bank Log
| Function | Returns | Description |
|---|---|---|
GetNumGuildBankTransactions(tab) |
numTransactions |
Tab transaction count |
GetGuildBankTransaction(tab, index) |
type, name, itemLink, count, tab1, tab2, year, month, day, hour |
Transaction 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
| Event | Payload | Description |
|---|---|---|
GUILD_ROSTER_UPDATE |
canRequestRosterUpdate | Roster data refreshed |
GUILD_RANKS_UPDATE |
— | Rank structure changed |
GUILD_MOTD |
motdText | MOTD received |
GUILD_NEWS_UPDATE |
— | Guild news updated |
GUILD_INVITE_REQUEST |
inviter, guildName, guildAchievementPoints, oldGuildName, isNewGuild, ... | Guild invite received |
GUILD_INVITE_CANCEL |
— | Invite cancelled |
PLAYER_GUILD_UPDATE |
unitTarget | Guild status changed |
GUILD_TRADESKILL_UPDATE |
— | Guild tradeskill updated |
GUILD_RECIPE_KNOWN_BY_MEMBERS |
— | Recipe query result |
GUILDBANK_ITEM_LOCK_CHANGED |
— | Bank item lock changed |
GUILDBANK_UPDATE_TABS |
— | Bank tabs updated |
GUILDBANK_UPDATE_MONEY |
— | Bank money changed |
GUILDBANK_UPDATE_TEXT |
tab | Bank info text updated |
GUILDBANKBAGSLOTS_CHANGED |
— | Bank slots changed |
GUILDBANKFRAME_OPENED |
— | Bank frame opened |
GUILDBANKFRAME_CLOSED |
— | Bank frame closed |
GUILDBANKLOG_UPDATE |
— | Bank log updated |
Gotchas & Restrictions
- Roster request required — Call
C_GuildInfo.GuildRoster()before reading roster. Data isn't always current. - Guild bank requires NPC — Guild bank functions only work when at a guild bank NPC.
- Permissions vary by rank — Check permissions before attempting operations.
CanGuildBankRepair(),CanWithdrawGuildBankMoney(), etc. - QueryGuildBankTab is async — Must query each tab and wait for
GUILDBANK_UPDATE_TABSbefore reading items. - Guild = Club — Guild chat uses
C_ClubwithEnum.ClubType.Guild. UseC_Club.SendMessage()for guild chat. - Rank indices — Rank 0 = Guild Master. Higher indices = lower ranks.
- GetGuildRosterInfo index — 1-based index into the roster. Not related to rank or any other ordering.
- MOTD event timing —
GUILD_MOTDfires during login. Register early to catch it.
Weekly Installs
3
Repository
jburlison/wowad…piagentsGitHub Stars
8
First Seen
11 days ago
Security Audits
Installed on
cline3
github-copilot3
codex3
gemini-cli3
cursor3
opencode3