The API is no longer being updated here until further notice. |
Hyperlinks are clickable (chat) links. They are implemented in FrameXML/ItemRef.lua. Note that for use in SendChatMessage() it can reject invalid entries, as the server may expect certain combinations of color, payload and text.
If you are using the chat window or an in-game text editor, then | will be escaped.Try using \124 instead which is the ASCII code for the pipe character.
|
Format[]
Each hyperlink has the following format:
|cffxxxxxx|Htype:payload|h[text]|h|r
Text | Description |
---|---|
|cffxxxxxx |
The color code |
|H |
Begins the hyperlink |
type:payload |
The link type and any colon-delimited params |
|h |
Marks the end of the payload |
[text] |
Localized display text |
|h |
Ends the hyperlink |
|r |
Stops coloring |
Inspecting[]
- See also: ExtractHyperlinkString()
There are multiple ways to see the contents of a hyperlink:
- From the in-game chat window.
/dump "[Flash Heal]" > "|cff71d5ff|Hspell:2061:0|h[Flash Heal]|h|r"
- From an addon, when clicking a hyperlink in-game.
hooksecurefunc("SetItemRef", function(link, text)
print(link, text:gsub("|", "||"))
end)
> "spell:139:0", "|cff71d5ff|Hspell:139:0|h[Renew]|h|r"
Types[]
achievement[]
- See also: AchievementLink
achievement : achievementID : guid : completed : month : day : year : criteria1 : criteria2 : criteria3 : criteria4
guid
The player's GUID.completed
1 for earned, 0 for unearned achievements.month:day:year
Date the achievement was earned or 0:0:-1 if not earned.criteria1-4
32-bit bitmask fields for completed criteria, or 0:0:0:0 if not completed.
- Example:
"|cffffff00|Hachievement:10671:Player-1096-06DF65C1:1:2:16:17:4294967295:4294967295:4294967295:4294967295|h[Level 110]|h|r"
"|cffffff00|Hachievement:12544:Player-1096-06DF65C1:0:0:0:-1:0:0:0:0|h[Level 120]|h|r"
addon[]
Generic link type for use by addons. Links with an "addon" type are local-only and cannot be sent in chat messages, and can be processed by addons by securely hooking SetItemRef()
.
addon : name : data
name
Arbitrary addon data.data
Arbitrary colon-delimited addon data segments.
- Example:
"|cff71d5ff|Haddon:SuperAuras:some:data:1234|h[SuperAuras: The Link!]|h|r"
hooksecurefunc("SetItemRef", function(link)
local linkType, addon, param1 = strsplit(":", link)
if linkType == "addon" and addon == "SomeAddon" then
if param1 == "foo" then
print(link)
end
end
end)
print("|cFFFFFF00|Haddon:SomeAddon:foo|h[Some Clickable Message]|h|r")
api[]
- See also: APILink
Shows API Documentation from the /api command.
api : type : name : [parentName]
- Example:
"|cffff55dd|Hapi:system:MapUI:|hMapUI|h|r"
"|cff55ddff|Hapi:function:GetMapInfo:MapUI|hC_Map.GetMapInfo()|h|r"
"|cff77ff22|Hapi:event:ZoneChanged:MapUI|hEvent.MapUI.ZoneChanged|h|r"
"|cff55ffdd|Hapi:table:UiMapDetails:MapUI|hUiMapDetails|h|r"
azessence[]
Azerite Essence link
azessence : essenceID : rank
- Example:
"|cffa335ee|Hazessence:12:3|h[The Crucible of Flame]|h|r"
- See also: C_AzeriteEssence.GetEssenceInfo()
battlepet[]
battlepet : speciesID : level : breedQuality : maxHealth : [power] : [speed] : [battlePetID] : [displayID]
- Example:
"|cff0070dd|Hbattlepet:202:25:3:1546:289:260:BattlePet-0-00000338F951:16189|h[Baby Blizzard Bear]|h|r"
- Barebone example:
/run SendChatMessage("\124cff1eff00\124Hbattlepet:202:1:2:1:::BattlePet--:\124h[Baby Blizzard Bear]\124h\124r")
- See also: BattlePetSpeciesID
battlePetAbil[]
battlePetAbil : abilityID : maxHealth : power : speed
- Example:
"|cff4e96f7|HbattlePetAbil:348:1435:267:240|hBash|h|r"
calendarEvent[]
calendarEvent : monthOffset : monthDay : index
- Example:
"|HcalendarEvent:0:12:1|hSpring Balloon Festival|h"
- See also: C_Calendar.GetDayEvent()
channel[]
Opens the chat window to a specific /channel.
channel : channelType : [channelID]
- Example:
"|Hchannel:channel:2|h[2. Trade - City]|h"
"|Hchannel:PARTY|h[Party]|h"
clubFinder[]
Guild Finder (8.2.5) invite link.
clubFinder : clubFinderId
- Example:
"|cffffd100|HclubFinder:ClubFinder-1-19160-1598-53720920|h[Guild: Happy Leveling]|h|r"
- See also: GetClubFinderLink()
clubTicket[]
WoW communities & Blizzard Groups invite link.
clubTicket : ticketId
- Example:
"|cffffd100|HclubTicket:oxPbMfv2R|h[Join: test]|h|r"
- See also: GetClubTicketLink()
community[]
Community link in Quick Join requests.
community : clubId
conduit[]
Conduit link
conduit : id : [rank]
- Example:
"|cff71d5ff|Hconduit:5:1|h[Stalwart Guardian]|h|r"
- See also: C_Soulbinds.GetConduitHyperlink()
currency[]
currency : id : [amount]
- Example:
"|cffffffff|Hcurrency:1744|h[Corrupted Memento]|h|r"
- See also: C_CurrencyInfo.GetCurrencyLink()
death[]
Opens the Death recap overview.
death : recapID
- Example:
"|Hdeath:1|h[You died.]|h"
dungeonScore[]
Shows Mythic+ stats for a player in the tooltip.
- Example:
"|cffffd100|HdungeonScore:2723:Player-1403-068056BB:Numedain:6:278:60:124:2723:3:381:1:15:382:1:17:392:1:18:391:1:18:380:1:17:375:1:18:376:0:18:377:1:17:378:1:19:379:1:16|h[Mythic+ Rating]|h|r"
- See also DisplayDungeonScoreLink()
1: 2723 -- score
2: Player-1403-068056BB -- guid
3: Numedain -- name
4: 6 -- classId: Death Knight
5: 278 -- itemLevel
6: 60 -- playerLevel
7: 124 -- runsThisSeason
8: 2723 -- bestSeasonScore
9: 3 -- bestSeasonNumber
10: 381 -- mapChallengeModeID: Spires of Ascension
11: 1 -- completedInTime
12: 15 -- keystoneLevel
13: 382 -- Theater of Pain
14: 1
15: 17
16: 392 -- Tazavesh: So'leah's Gambit
17: 1
18: 18
19: 391 -- Tazavesh: Streets of Wonder
20: 1
21: 18
22: 380 -- Sanguine Depths
23: 1
24: 17
25: 375 -- Mists of Tirna Scithe
26: 1
27: 18
28: 376 -- The Necrotic Wake
29: 0
30: 18
31: 377 -- De Other Side
32: 1
33: 17
34: 378 -- Halls of Atonement
35: 1
36: 19
37: 379 -- Plaguefall
38: 1
39: 16
enchant[]
Opens the Tradeskill window for a recipe.
enchant : spellID
- Example:
"|cffffd000|Henchant:162206|h[Draenor Engineering: World Shrinker]|h|r"
garrfollower[]
garrfollower : followerID : quality : level : itemLevel : ability1 : ability2 : ability3 : ability4 : trait1 : trait2 : trait3 : trait4 : spec1
- Example:
"|cffa335ee|Hgarrfollower:856:4:110:900:457:777:0:0:684:758:0:0:354|h[Calia Menethil]|h|r"
garrfollowerability[]
garrfollowerability : abilityID
- Example:
"|cff4e96f7|Hgarrfollowerability:354|h[Discipline]|h|r"
"|cff4e96f7|Hgarrfollowerability:457|h[Holy Nova]|h|r"
garrmission[]
garrmission : missionID : missionDBID
- Example:
"|cffffff00|Hgarrmission:1610:000000000238f82d|h[Withered Straining]|h|r"
instancelock[]
Opens the /raidinfo list.
instancelock : guid : instanceID : difficulty : defeatedEncounters
guid
The player's GUID.instanceID
The instance's InstanceIDdifficulty
The instance's DifficultyIDdefeatedEncounters
Bitfield indicating the encounters that have been defeated. e.g. 7 means that the first 3 encounters have been cleared.
- Example:
"|cffff8000|Hinstancelock:Player-3296-000957C8:543:2:4|h[Hellfire Citadel: Ramparts]|h|r"
item[]
- Main article: ItemLink
item : itemString
- Example:
"|cffffffff|Hitem:2592::::::::::::::::::|h[Wool Cloth]|h|r"
journal[]
Opens the Adventure Guide.
journal : journalType : journalID : difficulty
journalType
0=Instance, 1=Encounter, 2=Section.journalID
InstanceID, EncounterID, or SectionID.difficulty
DifficultyID of the instance.
- Example:
"|cff66bbff|Hjournal:0:1031:14|h[Uldir]|h|r"
"|cff66bbff|Hjournal:1:2147:14|h[G'huun]|h|r"
"|cff66bbff|Hjournal:2:18068:14|h[Titan Spark]|h|r"
- See also: EJ_HandleLinkPath()
keystone[]
Used for [Mythic Keystone].
keystone : itemID : challengeModeID : level : affix1 : affix2 : affix3 : affix4
- Example:
"|cffa335ee|Hkeystone:180653:381:2:10:0:0:0|h[Keystone: Spires of Ascension (2)]|h|r"
"|cffa335ee|Hkeystone:180653:375:15:10:8:12:121|h[Keystone: Mists of Tirna Scithe (15)]|h|r"
"|cffa335ee|Hkeystone:180653:379:18:10:8:12:121|h[Keystone: Plaguefall (18)]|h|r"
- See also: MapChallengeMode.db2, KeystoneAffix.db2
[138019] = "Mythic Keystone", -- Legion Keystone
[151086] = "Mythic Invitational Keystone", -- Tournament Stone
[158923] = "Mythic Keystone", -- BFA Keystone
[180653] = "Mythic Keystone", -- SL & DF Keystone
[187786] = "Timeworn Keystone", -- Legion Timestone
levelup[]
levelup : level : levelUpType : [petName]
- Example:
"|cffFF4E00|Hlevelup:2:LEVEL_UP_TYPE_CHARACTER|h[Level 2]|h|r"
"|cffFF4E00|Hlevelup:2:LEVEL_UP_TYPE_PET:Bear|h[Level 2]|h|r"
lootHistory[]
Opens the /loot window.
lootHistory : rollID
mawpower[]
mawpower : id
- Example:
"|cff71d5ff|Hmawpower:358|h[Icy Heartcrust]|h|r"
- See also: MawPower.db2
outfit[]
Shows a transmog in the dressing room.
outfit : payload
- Example:
[[|cffff80ff|Houtfit:"a;"aA%ib"a>!.h&Ul"uH"a8"v""a@"v<"a"!!!!5o!!!!!!!!!|h[|T1598183:13:13:-1:0|tOutfit]|h|r]]
Decoding the payload |
---|
-- tries to do partly what C_TransmogCollection.GetItemTransmogInfoListFromOutfitHyperlink() already does
-- it doesn't map to the proper inventorySlotIDs and appearanceID/secondaryAppearanceID/illusionID keys
-- there is no practical reason to actually do this
--local key = [[!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{]]
local keySize = 91
local asciiOffset = 33
local groupSize = 3
local function ParseOutfitLink(link)
local payload = link:match("|Houtfit:(.-)|h")
local t = {}
for i = 1, #payload, groupSize do
local group = payload:sub(i, i+groupSize-1)
local sum = 0
for j = 1, #group do
local a = group:byte(j) - asciiOffset
local b = math.pow(keySize, groupSize-j)
sum = sum + a*b
end
table.insert(t, sum)
end
return t
end
local info = ParseOutfitLink([[|cffff80ff|Houtfit:"a;"aA%ib"a>!.h&Ul"uH"a8"v""a@"v<"a"!!!!5o!!!!!!!!!|h[|T1598183:13:13:-1:0|tOutfit]|h|r]])
DevTools_Dump(info)
--[[
[1] = 14131, -- 1: INVSLOT_HEAD Cowl of Absolution
[2] = 14137, -- 13: INVSLOT_SHOULDER Mantle of Absolution
[3] = 39741, -- 15: INVSLOT_BACK Cloak of the Darkmoon Faire
[4] = 14134, -- 5: INVSLOT_CHEST Vestments of Absolution
[5] = 1254, -- 4: INVSLOT_BODY Stylish Black Shirt
[6] = 35447, -- 19: INVSLOT_TABARD Theramore Tabard
[7] = 15964, -- 9: INVSLOT_WRIST Cuffs of Absolution
[8] = 14128, -- 10: INVSLOT_HAND Gloves of Absolution
[9] = 16017, -- 6: INVSLOT_WAIST Belt of Absolution
[10] = 14136, -- 7: INVSLOT_LEGS Breeches of Absolution
[11] = 16043, -- 8: INVSLOT_FEET Boots of Absolution
[12] = 14106, -- 16: INVSLOT_MAINHAND appearanceID Staff of the Redeemer
[13] = 0, -- 17: INVSLOT_OFFHAND appearanceID
[14] = 1898, -- 16: INVSLOT_MAINHAND illusionID Illusion: Lifestealing
[15] = 0, -- 17: INVSLOT_OFFHAND illusionID
[16] = 0, -- 16: INVSLOT_MAINHAND secondaryAppearanceID
[17] = 0 -- 3: INVSLOT_SHOULDER secondaryAppearanceID
]]
|
This can also be in a non-hyperlink format.
/outfit v1 14131,14137,0,39741,14134,1254,46212,15964,14128,16017,14136,16043,14106,-1,1898,0,0
- See also: C_TransmogCollection.GetItemTransmogInfoListFromOutfitHyperlink(), TransmogUtil.ParseOutfitSlashCommand()
player[]
- Left-click: starts a whisper message
- Right-click: opens the player context menu
- Shift-click: sends a /who query
player : name : [lineID] : [chatType] : [chatTarget]
lineID
Message ID for reporting.
- Example:
"|Hplayer:Fadeshift|h[Fadeshift]|h"
"|Hplayer:Aquadoll-MoonGuard|h[Aquadoll]|h"
"|Hplayer:Ketho-Anasterian:8:PARTY:|h[|cfffefefeKetho|r]|h"
"|Hplayer:Kilastra-DefiasBrotherhood:90:CHANNEL:2|h[|cff8686ecKilastra|r]|h"
- See also: GetPlayerLink()
playerCommunity[]
playerCommunity : name : communityClubID : communityStreamID : communityEpoch : communityPosition
- Example:
"|HplayerCommunity:Ketho-Anasterian:333281:1:1557794365297000:5886997898769|h[|cfffefefeKetho|r]|h"
BNplayer[]
Battle.net friend links.
BNplayer : name : bnetIDAccount : lineID : chatType : chatTarget
BNplayerCommunity[]
BNplayerCommunity : name : bnetIDAccount : communityClubID : communityStreamID : communityEpoch : communityPosition
quest[]
quest : questID : questLevel : unknown1 : unknown2 : unknown3
- Example:
"|cffffff00|Hquest:53370:-1:110:120:3|h[Hour of Reckoning]|h|r"
"|cffff8040|Hquest:40746:113:110:255:0|h[One of the People]|h|r"
- See also: QuestLink
[]
Opens the Twitter /share window for an achievement.
shareachieve : achievementID : earned
- Example:
"|cffffd200|Hshareachieve:964:1|h|TInterface\ChatFrame\UI-ChatIcon-Share:18:18|t|h|r"
[]
Twitter item link.
shareitem : itemLink : earned
- Example:
"|cffffd200|Hshareitem:151428::::::::20:257:512:1:1:4068:20::::1|h|TInterface\ChatFrame\UI-ChatIcon-Share:18:18|t|h|r"
[]
Twitter screenshot link.
sharess : screenshotIndex
screenshotIndex
: index of the screenshot to autofill the Tweet with, counted from last login.
- Example:
"|cffffd200|Hsharess:1|h|TInterface\ChatFrame\UI-ChatIcon-Share:18:18|t|h|r"
spell[]
spell : spellId : glyphId : [event]
- Example:
"|cff71d5ff|Hspell:2096:0|h[Mind Vision]|h|r"
"|Hspell:589:0:SPELL_DAMAGE|hShadow Word: Pain|h"
(as printed in Blizzard_CombatLog)- See also: GetSpellLink()
storecategory[]
Opens the In-Game Store.
storecategory : category
- Example:
"|cffffd000|Hstorecategory:games|h[Click To Upgrade]|h|r"
talent[]
talent : talentID
- Example:
"|cff71d5ff|Htalent:21754|h[Circle of Healing]|h|r"
- See also: GetTalentInfoByID()
talent : talentID : points
- Note that -1 = 0 points, 0 = 1 point, 1 = 2 points, etc.
- Example:
"|cff4e96f7|Htalent:406:1|h[Improved Renew]|h|r"
talentbuild[]
Opens the Talent Tree UI with a read-only view of the linked loadout.
talentbuild : specializationID : level : talentLoadoutImportString
specializationID
The loadout's SpecializationID.level
The loadout's level.talentLoadoutImportString
The loadout import string.
- Example:
"|cffa330c9|Htalentbuild:577:70:BEkAAAAAAAAAAAAAAAAAAAAAAIBkQKRSaJJJSEIAAAAAAAaJJQLFSSKSi0QRSSSSSA|h[Talents: Havoc Demon Hunter]|h|r"
- See also: Dragonflight Talent System
trade[]
Shows the tradeskill window (from another player).
trade : guid : spellID : skillLineID
guid
The player's GUID.spellID
The tradeskill's Spell ID.skillLineID
The TradeSkillLineID.
- Example:
"|cffffd000|Htrade:Player-3296-000957C8:195128:185|h[Cooking]|h|r"
- See also: TradeSkillLink
transmogappearance[]
Shows the transmog item in the Appearances tab.
transmogappearance : id
- Example:
|cffff80ff|Htransmogappearance:112825|h[Staff of the Penitent]|h|r
transmogillusion[]
Previews a weapon enchant in the Dressing room.
transmogillusion : sourceID
- Example:
"|cffff80ff|Htransmogillusion:5862|h[Titanguard]|h|r"
- See also: C_TransmogCollection.GetIllusionSourceInfo()
transmogset[]
Shows the transmog set in the Appearances tab.
transmogset : setID
- Example:
"|cffff80ff|Htransmogset:1414|h[Fierce Gladiator's Satin Armor (Gladiator)]|h|r"
- See also: C_TransmogSets.GetSetInfo()
unit[]
Shows the unit tooltip. Opens the combat log context menu on right-click.
unit : guid : [name]
- Example:
"|Hunit:Creature-0-2083-0-7-299-00005A0F91:Young Wolf|hYoung Wolf|h"
Implemented in Blizzard_CombatLog.lua
urlIndex[]
Opens a URL in the default web browser.
urlIndex : index
- Example:
"|HurlIndex:25|h|cff006995Frequently Asked Questions|r|h"
worldmap[]
Opens the World Map to display a pinned waypoint.
worldmap : uiMapID : x : y
uiMapID
The UiMapID for the waypoint.x
The X coordinate of the waypoint, multiplied by 10000.y
The Y coordinate of the waypoint, multiplied by 10000.
- Example:
"|cffffff00|Hworldmap:84:7222:2550|h[|A:Waypoint-MapPin-ChatIcon:13:13:0:0|a Map Pin Location]|h|r"
- enUS globalstring:
MAP_PIN_HYPERLINK = "|A:Waypoint-MapPin-ChatIcon:13:13:0:0|a Map Pin Location"
- See also: C_Map.SetUserWaypoint()
Note[]
Any changes to the hyperlink's color, image or text will prevent it from being sent over SendChatMessage. The only changes allowed are map and coordinates.
See also[]
Patch changes[]
- Patch 10.1.0 (2023-05-02): Added the addon and talentbuild link types.
- Patch 7.0.3 (2016-07-19): Unused delimited segments can be empty rather than 0, e.g.
":::"
instead of":0:0:0"