Data API

Read WoW Forever game data in your own tools. Talents, spells, racials and items as JSON, with a first request, field reference and examples from the game.

Build 1.60.1.70630 · read 2026-10-27

How we know: every record here is read from the game’s own files: build 1.60.1.70630, read on 27 Oct 2026 by reader 24. 347 records have a ? in a text we fill in from the game’s templates, mostly a number the files do not hold, left open rather than guessed. A record in the files does not prove it is live in the game. How we know.

Make your first request

No API key or account is needed. With curl installed, request a class’s talents:

curl --fail 'https://wowforever.news/api/v1/talents?class=mage&limit=5'

Open this request in your browser. Check build and read, then read the results list. total counts every matching record. An empty list is a successful request with no matches.

How to filter records

Combine a listing’s filters with &. Use the values in the reference below; class and origin labels ignore capitalization. URL-encode spaces and punctuation.

To find items with “staff” in their name, highest item level first:

curl --fail 'https://wowforever.news/api/v1/items?q=staff&sort=-level&limit=5'

Open the item search. For one record, request its url without query parameters. A single-record response uses result, singular.

What the data holds

4,894 of the 21,990 numbered records are numbered as made for WoW Forever. Most of the rest are numbered as original Classic.

Talents465Class spells2,294Items19,231
Original ClassicA later expansionSeason of DiscoveryMade for WoW ForeverEach bar is its own total
Show as a table
Records by kind and origin
Original ClassicA later expansionSeason of DiscoveryMade for WoW ForeverTotal
Talents35003877465
Class spells171544061692294
Items12587821914464819231

Origin is our reading of the number the game gives each record, not proof of where a record can be found in play. Racials, Zones and Achievements carry no such number.

Endpoint and field reference

All endpoints use GET and return JSON. Each record listing takes the shared parameters below, plus its own filters.

Parameters on every record listing

qstring
part of a name: 60 characters at most, none of them a control character

At most 60 characters

internalstring
true to include Blizzard's own working records

false, true

sortstring
name, the order every listing but the talents comes in; talents come by tree (class, then the tree as the game orders its tabs, then row, then column) unless name is asked for; items also level or -level (highest first)
limitinteger
1 to 100, 50 when left out

1–100 · Default: 50

offsetinteger
records to skip

0–1,000,000 · Default: 0

The filter values shown for a reading list player records. Values held only by Blizzard’s working records are accepted too; use internal=true to include those records. class accepts druid, hunter, mage, paladin, priest, rogue, shaman, warlock, warrior; origin accepts classic, later, sod, forever. Each listing’s sort values and default appear with that listing.

Field types describe values found in this reading; another build may also use null. Every listed record field is present. Examples are selected from the store by rule and can change with the next reading.

Fields on every record
kindstring
What the record is: talent, spell, racial, item, zone or achievement.
idstring
What this API calls it, always text. An item's, a zone's and an achievement's is its number in the game (19019); a talent's and a spell's is its class and its spell's number (mage-11366); a racial's is its race and its name (orc-blood-fury).
namestring
Its name as the game shows it.
classnull / string
The one class it belongs to, in small letters. null for a racial, and for an item that is not for one class alone (see classes).
originnull / string
Where it was first made, told by its number in the game: classic (original Classic), later (a later expansion), sod (Season of Discovery) or forever (made for WoW Forever). null for a racial: the files give it no number to tell it by.
urlstring
Where this one record is read.
iconnull / string
The name of its icon's file in the game, without folder or ending. Its picture, read from that file, is at https://wowforever.news/icons/<icon>.png (a name with a space has none). null when the files name none.
internalboolean
true for one of Blizzard's own working records, not meant for players: its name carries a note of theirs such as Deprecated, Test or [PH]. Listings leave these out unless internal=true is asked for; each can still be read by its id.
textnull / string
Its description as the game's tooltip words it, for a level 60 character before gear. A ? stands for a number the files do not hold. A talent's is its first rank's; an item's is its own line of description in the tooltip. null when it has none.

Talents

Trees, positions, point limits and descriptions at every rank.

GET /api/v1/talents List records

GET /api/v1/talents/{id} Read one record

Filters for this listing

classstring
9 values in this reading

druid, hunter, mage, paladin, priest, rogue, shaman, warlock, warrior

originstring

classic, sod, forever

sortstring

Default: tree

tree, name

treestring
24 values in this reading

Affliction, Arcane, Arms, Assassination, Balance, Beast Mastery, Combat, Demonology, Destruction, Discipline, Elemental, Enhancement, Feral Combat, Fire, Frost, Fury, Holy, Marksmanship, Protection, Restoration, Retribution, Shadow, Subtlety, Survival

25 talent fields
mechanicsobject
Versioned raw client mechanic evidence for the base spell, or null; see spells.mechanics. Do not infer cross-player ownership, stacking or server behavior from these records.
rank_mechanicsarray
Point allocations for each talent rank, or null. Effects expose level-60 before-gear points_min/points_max calculated by our tooltip reader, with curve_id and operation_type from TraitDefinitionEffectPoints. These are effect points, not player damage, healing or proc uptime; ranks share the base spell ID.
headersobject
Base-client headers for the talent's spell ID, or null when unavailable. These are decoded client records, not player-effective values or an in-game verification. Rank descriptions do not imply matching headers for every rank. See spells.headers.
tooltiparray
The lines of its spell's tooltip between the name and the description, as the game lays them out and words them: see spells.tooltip. [] for a passive talent.
treestring
The talent tree it is in, by the name on the tree's tab (Arcane, Fire, Frost).
rowinteger
Its row in the tree, counted from the top: 1 is the top row.
colinteger
Its place in that row, counted from the left: 1 is the leftmost column.
ranksinteger
How many points can be put into it.
rank_textsarray
Its description at each rank, the first rank first: as many as ranks. text is the first of them.
openboolean
true when one of its texts holds a ?: a number the game's files do not hold, left open rather than guessed.
pointsinteger / null
How many points must be spent in its tree before it can be taken, as the tree's own condition says (10 for Pyroblast's row); null for none.
requiresarray
The talent it needs first, as the tree's edges say (Presence of Mind before Arcane Power): a list of {spell, name}, [] for none. An edge drawn both ways between two talents says no order and names none.
spellinteger
The number the game gives the talent's spell.
levelinteger / null
The level a character learns it at, as the game's spell level table gives it (Requires level 1 on Shadow Bolt's first rank); null when the table gives none.
teachesarray
The numbers of the spells this one teaches when learned (a book's or a trainer's spell teaches the ability), from the game's own table of what teaches what. [] for none; null when the build read did not hold that table.
learned_fromarray
The numbers of the spells that teach this one, the same table the other way. [] for none; null when the table was not read.
mechanicnull / string
The game's own word for what its category does to a target (Stunned, Rooted, Disarmed), or null for none or when the table was not read.
dispelnull / string
The game's own word for what removes it (Magic, Curse, Poison, Disease), or null for none or when the table was not read.
affectsarray
The spells of its own class family that its effects change, each {spell, name}: the effects' class masks matched against the family masks of the class's spells, so a talent that says "your Fireball and Pyroblast" names them here from the files, not the text. [] for none; null when the table was not read.
affected_byarray
The talents and spells whose effects change this one, the same match the other way, each {spell, name}. [] for none; null when the table was not read.
ppmnull
Its procs per minute when the files give one, or null.
summonsarray
For each summon effect, what it brings: {creature, name, kind}: the creature's number, its name when the client holds it (the client holds few creatures, so mostly null) and what the game calls the summoned (pet, guardian, totem, companion). [] for none; null when the tables were not read.
enchantsarray
For each effect that puts an enchantment on an item (a shaman's weapon imbue, a rogue's poison, a rune): {id, name, duration_s, charges, effects}, the enchantment as the game's table has it, each effect {kind, amount, spell, name}: what it does in words (while equipped, chance on hit to cast, a stat or a resistance by name), its points, and the spell it casts with its name when it casts one. [] for none; null when the table was not read.
interrupted_byarray
What stops its cast, in words by the game's flags (moving, being pushed back, an interrupt, taking damage); a flag without a word is kept as its bit. [] for none; null when the table was not read.
breaks_onarray
What ends the aura it applies, in words by the game's flags (taking damage, moving, casting, attacking, mounting …); a flag without a word is kept as its bit. [] for none; null when the table was not read.

Examples from this reading

Nature's SplendorA talent with one rank.

GET /api/v1/talents/druid-1223083

Increases the duration of your Moonfire and Rejuvenation spells by 3 sec, your Regrowth spell by 6 sec, and your Insect Swarm spell by 2 sec.

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "talent",
    "id": "druid-1223083",
    "name": "Nature's Splendor",
    "class": "druid",
    "origin": "forever",
    "url": "/api/v1/talents/druid-1223083",
    "internal": false,
    "spell": 1223083,
    "tree": "Balance",
    "row": 3,
    "col": 3,
    "ranks": 1,
    "points": 10,
    "requires": [],
    "icon": "spell_nature_natureresistancetotem",
    "text": "Increases the duration of your Moonfire and Rejuvenation spells by 3 sec, your Regrowth spell by 6 sec, and your Insect Swarm spell by 2 sec.",
    "rank_texts": [
      "Increases the duration of your Moonfire and Rejuvenation spells by 3 sec, your Regrowth spell by 6 sec, and your Insect Swarm spell by 2 sec."
    ],
    "open": false,
    "rank_mechanics": [
      {
        "rank": 1,
        "spell_id": 1223083,
        "trait_definition_id": 134389,
        "context": "tooltip-reader-level-60-before-gear",
        "verified_in_game": false,
        "effects": [
          {
            "index": 0,
            "points_min": 3000.0,
            "points_max": 3000.0,
            "curve_id": null,
            "operation_type": null
          },
          {
            "index": 1,
            "points_min": 6000.0,
            "points_max": 6000.0,
            "curve_id": null,
            "operation_type": null
          },
          {
            "index": 2,
            "points_min": 2000.0,
            "points_max": 2000.0,
            "curve_id": null,
            "operation_type": null
          }
        ]
      }
    ],
    "mechanics": {
      "version": 2,
      "context": "base-client-record",
      "spell_id": 1223083,
      "effects": [
        {
          "id": 1210797,
          "index": 0,
          "effect_type": 6,
          "aura_type": 107,
          "mechanic": 0,
          "implicit_targets": [
            1,
            0
          ],
          "spell_class_mask": [
            18,
            0,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": 3000.0,
          "radius_yards": null,
          "raw": {
            "ID": 1210797,
            "EffectAura": 107,
            "DifficultyID": 0,
            "EffectIndex": 0,
            "Effect": 6,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 0.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.0,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": 3000.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              1,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              18,
              0,
              0,
              0
            ],
            "ImplicitTarget": [
              1,
              0
            ],
            "SpellID": 1223083
          }
        },
        {
          "id": 1210798,
          "index": 1,
          "effect_type": 6,
          "aura_type": 107,
          "mechanic": 0,
          "implicit_targets": [
            1,
            0
          ],
          "spell_class_mask": [
            64,
            0,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": 6000.0,
          "radius_yards": null,
          "raw": {
            "ID": 1210798,
            "EffectAura": 107,
            "DifficultyID": 0,
            "EffectIndex": 1,
            "Effect": 6,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 0.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.0,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": 6000.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              1,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              64,
              0,
              0,
              0
            ],
            "ImplicitTarget": [
              1,
              0
            ],
            "SpellID": 1223083
          }
        },
        {
          "id": 1210799,
          "index": 2,
          "effect_type": 6,
          "aura_type": 107,
          "mechanic": 0,
          "implicit_targets": [
            1,
            0
          ],
          "spell_class_mask": [
            2097152,
            0,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": 2000.0,
          "radius_yards": null,
          "raw": {
            "ID": 1210799,
            "EffectAura": 107,
            "DifficultyID": 0,
            "EffectIndex": 2,
            "Effect": 6,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 0.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.0,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": 2000.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              1,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              2097152,
              0,
              0,
              0
            ],
            "ImplicitTarget": [
              1,
              0
            ],
            "SpellID": 1223083
          }
        }
      ],
      "misc": {
        "ID": 777597,
        "Attributes": [
          192,
          0,
          256,
          0,
          0,
          0,
          0,
          0,
          4096,
          0,
          0,
          0,
          0,
          0,
          0,
          8192,
          0
        ],
        "DifficultyID": 0,
        "CastingTimeIndex": 1,
        "DurationIndex": 0,
        "PvPDurationIndex": 0,
        "RangeIndex": 1,
        "SchoolMask": 1,
        "Speed": 0.0,
        "LaunchDelay": 0.0,
        "MinDuration": 0.0,
        "SpellIconFileDataID": 136061,
        "ActiveIconFileDataID": 0,
        "ContentTuningID": 0,
        "ShowFutureSpellPlayerConditionID": 0,
        "SpellVisualScript": 0,
        "ActiveSpellVisualScript": 0,
        "SpellID": 1223083
      },
      "duration": null,
      "aura_options": null,
      "target_restrictions": null,
      "source": {
        "build": "1.60.1.70630",
        "reader": 24,
        "tables": [
          "SpellEffect",
          "SpellAuraOptions",
          "SpellTargetRestrictions",
          "SpellMisc",
          "SpellDuration",
          "SpellName",
          "SpellRadius"
        ],
        "missing_tables": []
      },
      "related_spells": [],
      "related_spells_truncated": false,
      "unsupported": [
        "server-side-behavior",
        "aura-ownership",
        "stacking-exclusivity",
        "aura-state-prerequisites"
      ]
    },
    "headers": {
      "context": "base-client-record",
      "costs": null,
      "cast": {
        "base_ms": 0,
        "minimum_ms": 0,
        "per_level_ms": 0,
        "static_ms": 0
      },
      "range": {
        "flags": 0,
        "label": "Self Only",
        "hostile": {
          "min_yards": 0.0,
          "max_yards": 0.0
        },
        "friendly": {
          "min_yards": 0.0,
          "max_yards": 0.0
        }
      },
      "cooldown": null,
      "reagents": null,
      "passive": true,
      "channeled": false,
      "drains_all_power": false,
      "next_melee": false,
      "hide_range": false
    },
    "tooltip": [],
    "level": 1,
    "teaches": [],
    "learned_from": [],
    "mechanic": null,
    "dispel": null,
    "affects": [
      {
        "spell": 774,
        "name": "Rejuvenation"
      },
      {
        "spell": 1058,
        "name": "Rejuvenation"
      },
      {
        "spell": 1430,
        "name": "Rejuvenation"
      },
      {
        "spell": 2090,
        "name": "Rejuvenation"
      },
      {
        "spell": 2091,
        "name": "Rejuvenation"
      },
      {
        "spell": 3627,
        "name": "Rejuvenation"
      },
      {
        "spell": 5570,
        "name": "Insect Swarm"
      },
      {
        "spell": 8910,
        "name": "Rejuvenation"
      },
      {
        "spell": 8921,
        "name": "Moonfire"
      },
      {
        "spell": 8924,
        "name": "Moonfire"
      },
      {
        "spell": 8925,
        "name": "Moonfire"
      },
      {
        "spell": 8926,
        "name": "Moonfire"
      },
      {
        "spell": 8927,
        "name": "Moonfire"
      },
      {
        "spell": 8928,
        "name": "Moonfire"
      },
      {
        "spell": 8929,
        "name": "Moonfire"
      },
      {
        "spell": 8936,
        "name": "Regrowth"
      },
      {
        "spell": 8938,
        "name": "Regrowth"
      },
      {
        "spell": 8939,
        "name": "Regrowth"
      },
      {
        "spell": 8940,
        "name": "Regrowth"
      },
      {
        "spell": 8941,
        "name": "Regrowth"
      },
      {
        "spell": 9750,
        "name": "Regrowth"
      },
      {
        "spell": 9833,
        "name": "Moonfire"
      },
      {
        "spell": 9834,
        "name": "Moonfire"
      },
      {
        "spell": 9835,
        "name": "Moonfire"
      },
      {
        "spell": 9839,
        "name": "Rejuvenation"
      },
      {
        "spell": 9840,
        "name": "Rejuvenation"
      },
      {
        "spell": 9841,
        "name": "Rejuvenation"
      },
      {
        "spell": 9856,
        "name": "Regrowth"
      },
      {
        "spell": 9857,
        "name": "Regrowth"
      },
      {
        "spell": 9858,
        "name": "Regrowth"
      },
      {
        "spell": 24974,
        "name": "Insect Swarm"
      },
      {
        "spell": 24975,
        "name": "Insect Swarm"
      },
      {
        "spell": 24976,
        "name": "Insect Swarm"
      },
      {
        "spell": 24977,
        "name": "Insect Swarm"
      },
      {
        "spell": 25299,
        "name": "Rejuvenation"
      }
    ],
    "affected_by": [],
    "ppm": null,
    "summons": [],
    "enchants": [],
    "interrupted_by": [],
    "breaks_on": []
  }
}
Improved WrathA talent with several ranks: rank_texts has the text of each.

GET /api/v1/talents/druid-16814

Reduces the cast time of your Wrath spell by 0.1 sec and its Mana cost by 10%.

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "talent",
    "id": "druid-16814",
    "name": "Improved Wrath",
    "class": "druid",
    "origin": "classic",
    "url": "/api/v1/talents/druid-16814",
    "internal": false,
    "spell": 16814,
    "tree": "Balance",
    "row": 1,
    "col": 2,
    "ranks": 5,
    "points": null,
    "requires": [],
    "icon": "spell_nature_abolishmagic",
    "text": "Reduces the cast time of your Wrath spell by 0.1 sec and its Mana cost by 10%.",
    "rank_texts": [
      "Reduces the cast time of your Wrath spell by 0.1 sec and its Mana cost by 10%.",
      "Reduces the cast time of your Wrath spell by 0.2 sec and its Mana cost by 20%.",
      "Reduces the cast time of your Wrath spell by 0.3 sec and its Mana cost by 30%.",
      "Reduces the cast time of your Wrath spell by 0.4 sec and its Mana cost by 40%.",
      "Reduces the cast time of your Wrath spell by 0.5 sec and its Mana cost by 50%."
    ],
    "open": false,
    "rank_mechanics": [
      {
        "rank": 1,
        "spell_id": 16814,
        "trait_definition_id": 134384,
        "context": "tooltip-reader-level-60-before-gear",
        "verified_in_game": false,
        "effects": [
          {
            "index": 0,
            "points_min": -100.0,
            "points_max": -100.0,
            "curve_id": 85324,
            "operation_type": 0
          },
          {
            "index": 1,
            "points_min": -10.0,
            "points_max": -10.0,
            "curve_id": 108163,
            "operation_type": 0
          }
        ]
      },
      {
        "rank": 2,
        "spell_id": 16814,
        "trait_definition_id": 134384,
        "context": "tooltip-reader-level-60-before-gear",
        "verified_in_game": false,
        "effects": [
          {
            "index": 0,
            "points_min": -200.0,
            "points_max": -200.0,
            "curve_id": 85324,
            "operation_type": 0
          },
          {
            "index": 1,
            "points_min": -20.0,
            "points_max": -20.0,
            "curve_id": 108163,
            "operation_type": 0
          }
        ]
      },
      {
        "rank": 3,
        "spell_id": 16814,
        "trait_definition_id": 134384,
        "context": "tooltip-reader-level-60-before-gear",
        "verified_in_game": false,
        "effects": [
          {
            "index": 0,
            "points_min": -300.0,
            "points_max": -300.0,
            "curve_id": 85324,
            "operation_type": 0
          },
          {
            "index": 1,
            "points_min": -30.0,
            "points_max": -30.0,
            "curve_id": 108163,
            "operation_type": 0
          }
        ]
      },
      {
        "rank": 4,
        "spell_id": 16814,
        "trait_definition_id": 134384,
        "context": "tooltip-reader-level-60-before-gear",
        "verified_in_game": false,
        "effects": [
          {
            "index": 0,
            "points_min": -400.0,
            "points_max": -400.0,
            "curve_id": 85324,
            "operation_type": 0
          },
          {
            "index": 1,
            "points_min": -40.0,
            "points_max": -40.0,
            "curve_id": 108163,
            "operation_type": 0
          }
        ]
      },
      {
        "rank": 5,
        "spell_id": 16814,
        "trait_definition_id": 134384,
        "context": "tooltip-reader-level-60-before-gear",
        "verified_in_game": false,
        "effects": [
          {
            "index": 0,
            "points_min": -500.0,
            "points_max": -500.0,
            "curve_id": 85324,
            "operation_type": 0
          },
          {
            "index": 1,
            "points_min": -50.0,
            "points_max": -50.0,
            "curve_id": 108163,
            "operation_type": 0
          }
        ]
      }
    ],
    "mechanics": {
      "version": 2,
      "context": "base-client-record",
      "spell_id": 16814,
      "effects": [
        {
          "id": 695185,
          "index": 0,
          "effect_type": 6,
          "aura_type": 107,
          "mechanic": 0,
          "implicit_targets": [
            1,
            0
          ],
          "spell_class_mask": [
            1,
            0,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": -100.0,
          "radius_yards": null,
          "raw": {
            "ID": 695185,
            "EffectAura": 107,
            "DifficultyID": 0,
            "EffectIndex": 0,
            "Effect": 6,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 1.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.0,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": -100.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              10,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              1,
              0,
              0,
              0
            ],
            "ImplicitTarget": [
              1,
              0
            ],
            "SpellID": 16814
          }
        },
        {
          "id": 1338352,
          "index": 1,
          "effect_type": 6,
          "aura_type": 108,
          "mechanic": 0,
          "implicit_targets": [
            1,
            0
          ],
          "spell_class_mask": [
            1,
            0,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": -50.0,
          "radius_yards": null,
          "raw": {
            "ID": 1338352,
            "EffectAura": 108,
            "DifficultyID": 0,
            "EffectIndex": 1,
            "Effect": 6,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 1.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.0,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": -50.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              14,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              1,
              0,
              0,
              0
            ],
            "ImplicitTarget": [
              1,
              0
            ],
            "SpellID": 16814
          }
        }
      ],
      "misc": {
        "ID": 327839,
        "Attributes": [
          464,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          8192,
          0
        ],
        "DifficultyID": 0,
        "CastingTimeIndex": 1,
        "DurationIndex": 0,
        "PvPDurationIndex": 0,
        "RangeIndex": 1,
        "SchoolMask": 1,
        "Speed": 0.0,
        "LaunchDelay": 0.0,
        "MinDuration": 0.0,
        "SpellIconFileDataID": 136006,
        "ActiveIconFileDataID": 0,
        "ContentTuningID": 0,
        "ShowFutureSpellPlayerConditionID": 0,
        "SpellVisualScript": 0,
        "ActiveSpellVisualScript": 0,
        "SpellID": 16814
      },
      "duration": null,
      "aura_options": null,
      "target_restrictions": null,
      "source": {
        "build": "1.60.1.70630",
        "reader": 24,
        "tables": [
          "SpellEffect",
          "SpellAuraOptions",
          "SpellTargetRestrictions",
          "SpellMisc",
          "SpellDuration",
          "SpellName",
          "SpellRadius"
        ],
        "missing_tables": []
      },
      "related_spells": [],
      "related_spells_truncated": false,
      "unsupported": [
        "server-side-behavior",
        "aura-ownership",
        "stacking-exclusivity",
        "aura-state-prerequisites"
      ]
    },
    "headers": {
      "context": "base-client-record",
      "costs": null,
      "cast": {
        "base_ms": 0,
        "minimum_ms": 0,
        "per_level_ms": 0,
        "static_ms": 0
      },
      "range": {
        "flags": 0,
        "label": "Self Only",
        "hostile": {
          "min_yards": 0.0,
          "max_yards": 0.0
        },
        "friendly": {
          "min_yards": 0.0,
          "max_yards": 0.0
        }
      },
      "cooldown": null,
      "reagents": null,
      "passive": true,
      "channeled": false,
      "drains_all_power": false,
      "next_melee": false,
      "hide_range": false
    },
    "tooltip": [],
    "level": null,
    "teaches": [],
    "learned_from": [],
    "mechanic": null,
    "dispel": null,
    "affects": [
      {
        "spell": 5176,
        "name": "Wrath"
      },
      {
        "spell": 5177,
        "name": "Wrath"
      },
      {
        "spell": 5178,
        "name": "Wrath"
      },
      {
        "spell": 5179,
        "name": "Wrath"
      },
      {
        "spell": 5180,
        "name": "Wrath"
      },
      {
        "spell": 6780,
        "name": "Wrath"
      },
      {
        "spell": 8905,
        "name": "Wrath"
      },
      {
        "spell": 9912,
        "name": "Wrath"
      }
    ],
    "affected_by": [],
    "ppm": null,
    "summons": [],
    "enchants": [],
    "interrupted_by": [],
    "breaks_on": []
  }
}
Ice BarrierA talent with a ? in its text: a number the files do not hold, so open is true.

GET /api/v1/talents/mage-11426

Shield yourself, absorbing ? damage and increasing your Frost damage by 3% for 1 min. While shielded, your Frost damage is increased by an additional 3% and you do not lose casting time when you take damage.

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "talent",
    "id": "mage-11426",
    "name": "Ice Barrier",
    "class": "mage",
    "origin": "classic",
    "url": "/api/v1/talents/mage-11426",
    "internal": false,
    "spell": 11426,
    "tree": "Frost",
    "row": 7,
    "col": 2,
    "ranks": 1,
    "points": 30,
    "requires": [
      {
        "spell": 12472,
        "name": "Cold Snap"
      }
    ],
    "icon": "spell_ice_lament",
    "text": "Shield yourself, absorbing ? damage and increasing your Frost damage by 3% for 1 min. While shielded, your Frost damage is increased by an additional 3% and you do not lose casting time when you take damage.",
    "rank_texts": [
      "Shield yourself, absorbing ? damage and increasing your Frost damage by 3% for 1 min. While shielded, your Frost damage is increased by an additional 3% and you do not lose casting time when you take damage."
    ],
    "open": true,
    "rank_mechanics": [
      {
        "rank": 1,
        "spell_id": 11426,
        "trait_definition_id": 135292,
        "context": "tooltip-reader-level-60-before-gear",
        "verified_in_game": false,
        "effects": [
          {
            "index": 0,
            "points_min": 447.0,
            "points_max": 447.0,
            "curve_id": null,
            "operation_type": null
          },
          {
            "index": 1,
            "points_min": 3.0,
            "points_max": 3.0,
            "curve_id": null,
            "operation_type": null
          },
          {
            "index": 2,
            "points_min": 3.0,
            "points_max": 3.0,
            "curve_id": null,
            "operation_type": null
          }
        ]
      }
    ],
    "mechanics": {
      "version": 2,
      "context": "base-client-record",
      "spell_id": 11426,
      "effects": [
        {
          "id": 688591,
          "index": 0,
          "effect_type": 6,
          "aura_type": 69,
          "mechanic": 0,
          "implicit_targets": [
            1,
            0
          ],
          "spell_class_mask": [
            0,
            0,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": 431.0,
          "radius_yards": null,
          "raw": {
            "ID": 688591,
            "EffectAura": 69,
            "DifficultyID": 0,
            "EffectIndex": 0,
            "Effect": 6,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 0.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 2.8,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": 431.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              127,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              0,
              0,
              0,
              0
            ],
            "ImplicitTarget": [
              1,
              0
            ],
            "SpellID": 11426
          }
        },
        {
          "id": 1364979,
          "index": 1,
          "effect_type": 6,
          "aura_type": 108,
          "mechanic": 0,
          "implicit_targets": [
            1,
            0
          ],
          "spell_class_mask": [
            131808,
            4096,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": 3.0,
          "radius_yards": null,
          "raw": {
            "ID": 1364979,
            "EffectAura": 108,
            "DifficultyID": 0,
            "EffectIndex": 1,
            "Effect": 6,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 0.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.0,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": 3.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              0,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              131808,
              4096,
              0,
              0
            ],
            "ImplicitTarget": [
              1,
              0
            ],
            "SpellID": 11426
          }
        },
        {
          "id": 1364980,
          "index": 2,
          "effect_type": 6,
          "aura_type": 108,
          "mechanic": 0,
          "implicit_targets": [
            1,
            0
          ],
          "spell_class_mask": [
            128,
            4096,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": 3.0,
          "radius_yards": null,
          "raw": {
            "ID": 1364980,
            "EffectAura": 108,
            "DifficultyID": 0,
            "EffectIndex": 2,
            "Effect": 6,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 1.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.0,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": 3.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              22,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              128,
              4096,
              0,
              0
            ],
            "ImplicitTarget": [
              1,
              0
            ],
            "SpellID": 11426
          }
        }
      ],
      "misc": {
        "ID": 322398,
        "Attributes": [
          327680,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          4096,
          0,
          0,
          0,
          0,
          0,
          0,
          8192,
          0
        ],
        "DifficultyID": 0,
        "CastingTimeIndex": 1,
        "DurationIndex": 3,
        "PvPDurationIndex": 0,
        "RangeIndex": 1,
        "SchoolMask": 16,
        "Speed": 0.0,
        "LaunchDelay": 0.0,
        "MinDuration": 0.0,
        "SpellIconFileDataID": 135988,
        "ActiveIconFileDataID": 0,
        "ContentTuningID": 0,
        "ShowFutureSpellPlayerConditionID": 0,
        "SpellVisualScript": 0,
        "ActiveSpellVisualScript": 0,
        "SpellID": 11426
      },
      "duration": {
        "ID": 3,
        "Duration": 60000,
        "MaxDuration": 60000,
        "DurationPerResource": 0
      },
      "aura_options": null,
      "target_restrictions": null,
      "source": {
        "build": "1.60.1.70630",
        "reader": 24,
        "tables": [
          "SpellEffect",
          "SpellAuraOptions",
          "SpellTargetRestrictions",
          "SpellMisc",
          "SpellDuration",
          "SpellName",
          "SpellRadius"
        ],
        "missing_tables": []
      },
      "related_spells": [],
      "related_spells_truncated": false,
      "unsupported": [
        "server-side-behavior",
        "aura-ownership",
        "stacking-exclusivity",
        "aura-state-prerequisites"
      ]
    },
    "headers": {
      "context": "base-client-record",
      "costs": [
        {
          "order": 0,
          "power_type": 0,
          "flat": 305,
          "per_level": 0,
          "per_second": 0,
          "percent": 0.0,
          "max_percent": 0.0,
          "optional_flat": 0,
          "optional_percent": 0.0,
          "percent_per_second": 0.0,
          "required_aura_spell": 0,
          "display_id": 0,
          "alternate_bar_id": 0,
          "resource": "Mana"
        }
      ],
      "cast": {
        "base_ms": 0,
        "minimum_ms": 0,
        "per_level_ms": 0,
        "static_ms": 0
      },
      "range": {
        "flags": 0,
        "label": "Self Only",
        "hostile": {
          "min_yards": 0.0,
          "max_yards": 0.0
        },
        "friendly": {
          "min_yards": 0.0,
          "max_yards": 0.0
        }
      },
      "cooldown": {
        "ability_ms": 0,
        "category_ms": 30000,
        "gcd_ms": 1500,
        "category_id": 471,
        "gcd_category_id": 133,
        "aura_spell": 0
      },
      "reagents": null,
      "passive": false,
      "channeled": false,
      "drains_all_power": false,
      "next_melee": false,
      "hide_range": false
    },
    "tooltip": [
      [
        "305 Mana",
        null
      ],
      [
        "Instant",
        "30 sec cooldown"
      ]
    ],
    "level": 40,
    "teaches": [],
    "learned_from": [],
    "mechanic": null,
    "dispel": "Magic",
    "affects": [
      {
        "spell": 10,
        "name": "Blizzard"
      },
      {
        "spell": 116,
        "name": "Frostbolt"
      },
      {
        "spell": 120,
        "name": "Cone of Cold"
      },
      {
        "spell": 122,
        "name": "Frost Nova"
      },
      {
        "spell": 205,
        "name": "Frostbolt"
      },
      {
        "spell": 837,
        "name": "Frostbolt"
      },
      {
        "spell": 865,
        "name": "Frost Nova"
      },
      {
        "spell": 6131,
        "name": "Frost Nova"
      },
      {
        "spell": 6141,
        "name": "Blizzard"
      },
      {
        "spell": 7322,
        "name": "Frostbolt"
      },
      {
        "spell": 8406,
        "name": "Frostbolt"
      },
      {
        "spell": 8407,
        "name": "Frostbolt"
      },
      {
        "spell": 8408,
        "name": "Frostbolt"
      },
      {
        "spell": 8427,
        "name": "Blizzard"
      },
      {
        "spell": 8492,
        "name": "Cone of Cold"
      },
      {
        "spell": 10159,
        "name": "Cone of Cold"
      },
      {
        "spell": 10160,
        "name": "Cone of Cold"
      },
      {
        "spell": 10161,
        "name": "Cone of Cold"
      },
      {
        "spell": 10179,
        "name": "Frostbolt"
      },
      {
        "spell": 10180,
        "name": "Frostbolt"
      },
      {
        "spell": 10181,
        "name": "Frostbolt"
      },
      {
        "spell": 10185,
        "name": "Blizzard"
      },
      {
        "spell": 10186,
        "name": "Blizzard"
      },
      {
        "spell": 10187,
        "name": "Blizzard"
      },
      {
        "spell": 10230,
        "name": "Frost Nova"
      },
      {
        "spell": 24530,
        "name": "Felfire"
      },
      {
        "spell": 25304,
        "name": "Frostbolt"
      },
      {
        "spell": 400640,
        "name": "Ice Lance"
      },
      {
        "spell": 401502,
        "name": "Frostfire Bolt"
      },
      {
        "spell": 1237312,
        "name": "Frostfire Bolt"
      },
      {
        "spell": 1237313,
        "name": "Frostfire Bolt"
      },
      {
        "spell": 1240044,
        "name": "Ice Lance"
      },
      {
        "spell": 1240045,
        "name": "Ice Lance"
      },
      {
        "spell": 1240046,
        "name": "Ice Lance"
      },
      {
        "spell": 1240047,
        "name": "Ice Lance"
      },
      {
        "spell": 1312002,
        "name": "Ice Lance"
      },
      {
        "spell": 1326053,
        "name": "Frost Blast"
      },
      {
        "spell": 1326054,
        "name": "Frost Blast"
      },
      {
        "spell": 1326055,
        "name": "Frost Blast"
      }
    ],
    "affected_by": [
      {
        "spell": 11160,
        "name": "Frost Channeling"
      },
      {
        "spell": 11189,
        "name": "Frost Warding"
      }
    ],
    "ppm": null,
    "summons": [],
    "enchants": [],
    "interrupted_by": [
      "being pushed back",
      "bit 4",
      "an interrupt"
    ],
    "breaks_on": []
  }
}

Class spells

Abilities and their ranks, with the descriptions read from the game.

GET /api/v1/spells List records

GET /api/v1/spells/{id} Read one record

Filters for this listing

classstring
9 values in this reading

druid, hunter, mage, paladin, priest, rogue, shaman, warlock, warrior

originstring

classic, later, sod, forever

sortstring

Default: name

name

20 spell fields
mechanicsobject
Version 2 base-client-record evidence, or null: source.build/reader describe the actual decoded tables; missing_tables lists unavailable inputs. effects retains numeric effect_type/aura_type/mechanic, implicit_targets as [A,B], four spell_class_mask words, trigger_spell_id, base_points, radius_yards (the effect's area from its radius index, null for none) and the raw SpellEffect row. misc, aura_options, target_restrictions and duration retain raw base rows or null. related_spells bundles triggered records (maximum 64); related_spells_truncated declares incomplete closure. Zero remains zero; unknown enums are not named. unsupported explicitly lists server behavior, ownership, stacking exclusivity and aura-state prerequisites. No in-game verification or automatic synergy guarantee.
headersobject
Base-client spell headers, or null. Sections costs, cast, range, cooldown and reagents may each be null when unknown. Costs retain all resource rows and flat, percentage, per-level, recurring and conditional amounts; they are not a calculated player cost. Cast base_ms/minimum_ms/static_ms and cooldown ability_ms/category_ms/gcd_ms are milliseconds; GCD is separate from ability cooldown. Range keeps friendly and hostile min/max yards plus melee flags. Reagents are exact item IDs/counts without inferred names. Passive, channeled, next_melee (it strikes with the next melee swing) and drains_all_power flags qualify display. This is client evidence, not confirmed gameplay or an in-game tooltip receipt.
tooltiparray
The lines of its tooltip between the name and the description, as the game lays them out and words them: rows of [left, right], cost and range first (3,400 Mana | 40 yd range), then cast time and cooldown (Instant | 30 sec cooldown), then one row for each thing it needs (Requires Battle Stance; Requires Shields; Tools: Air Totem; Reagents: Sacred Candle); null for an empty side. Read from the files, so before talents and gear. A part we cannot read for certain is left out rather than guessed. [] for a passive spell, which shows none; null when the spell's details are not known.
topboolean
true for the highest rank of the spell its class has (Rank 6 of Power Word: Fortitude), for a spell without ranks, and for a variant the game names apart under the same name (Polymorph: Turtle, Sunfire: Cat). false for every lower rank, for a part of a ranked spell that carries no rank, and for Blizzard's working records.
spellinteger
The number the game gives this spell. Each rank of a spell has a number of its own.
ranknull / string
The word the game writes under the name: mostly its rank (Rank 3), sometimes another (Passive, Summon). null when none.
taught_byinteger / null
For a hunter pet's ability: the number of the spell the hunter learns in order to teach it. null for every other spell.
petnull / string
For an ability of a warlock's demon: the demon that casts it (Imp, Voidwalker, Succubus, Felhunter). Its class is the warlock's. null for every other spell.
levelinteger / null
The level a character learns it at, as the game's spell level table gives it (Requires level 1 on Shadow Bolt's first rank); null when the table gives none.
teachesarray
The numbers of the spells this one teaches when learned (a book's or a trainer's spell teaches the ability), from the game's own table of what teaches what. [] for none; null when the build read did not hold that table.
learned_fromarray
The numbers of the spells that teach this one, the same table the other way. [] for none; null when the table was not read.
mechanicnull / string
The game's own word for what its category does to a target (Stunned, Rooted, Disarmed), or null for none or when the table was not read.
dispelnull / string
The game's own word for what removes it (Magic, Curse, Poison, Disease), or null for none or when the table was not read.
affectsarray
The spells of its own class family that its effects change, each {spell, name}: the effects' class masks matched against the family masks of the class's spells, so a talent that says "your Fireball and Pyroblast" names them here from the files, not the text. [] for none; null when the table was not read.
affected_byarray
The talents and spells whose effects change this one, the same match the other way, each {spell, name}. [] for none; null when the table was not read.
ppmnull
Its procs per minute when the files give one, or null.
summonsarray
For each summon effect, what it brings: {creature, name, kind}: the creature's number, its name when the client holds it (the client holds few creatures, so mostly null) and what the game calls the summoned (pet, guardian, totem, companion). [] for none; null when the tables were not read.
enchantsarray
For each effect that puts an enchantment on an item (a shaman's weapon imbue, a rogue's poison, a rune): {id, name, duration_s, charges, effects}, the enchantment as the game's table has it, each effect {kind, amount, spell, name}: what it does in words (while equipped, chance on hit to cast, a stat or a resistance by name), its points, and the spell it casts with its name when it casts one. [] for none; null when the table was not read.
interrupted_byarray
What stops its cast, in words by the game's flags (moving, being pushed back, an interrupt, taking damage); a flag without a word is kept as its bit. [] for none; null when the table was not read.
breaks_onarray
What ends the aura it applies, in words by the game's flags (taking damage, moving, casting, attacking, mounting …); a flag without a word is kept as its bit. [] for none; null when the table was not read.

Examples from this reading

Aimed ShotA spell with ranks: each rank is a record of its own.

GET /api/v1/spells/hunter-19434

An aimed shot that increases ranged damage by 20. Aimed Shot shares its cooldown with Multi-Shot.

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "spell",
    "id": "hunter-19434",
    "name": "Aimed Shot",
    "class": "hunter",
    "origin": "classic",
    "url": "/api/v1/spells/hunter-19434",
    "internal": false,
    "spell": 19434,
    "rank": "Rank 1",
    "taught_by": null,
    "pet": null,
    "icon": "inv_spear_07",
    "text": "An aimed shot that increases ranged damage by 20. Aimed Shot shares its cooldown with Multi-Shot.",
    "headers": {
      "context": "base-client-record",
      "costs": [
        {
          "order": 0,
          "power_type": 0,
          "flat": 75,
          "per_level": 0,
          "per_second": 0,
          "percent": 0.0,
          "max_percent": 0.0,
          "optional_flat": 0,
          "optional_percent": 0.0,
          "percent_per_second": 0.0,
          "required_aura_spell": 0,
          "display_id": 0,
          "alternate_bar_id": 0,
          "resource": "Mana"
        }
      ],
      "cast": {
        "base_ms": 2000,
        "minimum_ms": 2000,
        "per_level_ms": 0,
        "static_ms": 2000
      },
      "range": {
        "flags": 0,
        "label": "Hunter Range",
        "hostile": {
          "min_yards": 8.0,
          "max_yards": 35.0
        },
        "friendly": {
          "min_yards": 8.0,
          "max_yards": 35.0
        }
      },
      "cooldown": {
        "ability_ms": 0,
        "category_ms": 6000,
        "gcd_ms": 1500,
        "category_id": 2,
        "gcd_category_id": 133,
        "aura_spell": 0
      },
      "reagents": null,
      "passive": false,
      "channeled": false,
      "drains_all_power": false,
      "next_melee": false,
      "hide_range": false
    },
    "tooltip": [
      [
        "75 Mana",
        "8-35 yd range"
      ],
      [
        "2 sec cast",
        "6 sec cooldown"
      ]
    ],
    "mechanics": {
      "version": 2,
      "context": "base-client-record",
      "spell_id": 19434,
      "effects": [
        {
          "id": 696631,
          "index": 0,
          "effect_type": 121,
          "aura_type": 0,
          "mechanic": 0,
          "implicit_targets": [
            6,
            0
          ],
          "spell_class_mask": [
            0,
            0,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": 20.0,
          "radius_yards": null,
          "raw": {
            "ID": 696631,
            "EffectAura": 0,
            "DifficultyID": 0,
            "EffectIndex": 0,
            "Effect": 121,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 1.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.0,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": 20.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              0,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              0,
              0,
              0,
              0
            ],
            "ImplicitTarget": [
              6,
              0
            ],
            "SpellID": 19434
          }
        }
      ],
      "misc": {
        "ID": 329024,
        "Attributes": [
          4259858,
          0,
          131072,
          0,
          402653184,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          8192,
          128
        ],
        "DifficultyID": 0,
        "CastingTimeIndex": 5,
        "DurationIndex": 0,
        "PvPDurationIndex": 0,
        "RangeIndex": 114,
        "SchoolMask": 1,
        "Speed": 40.0,
        "LaunchDelay": 0.0,
        "MinDuration": 0.0,
        "SpellIconFileDataID": 135130,
        "ActiveIconFileDataID": 0,
        "ContentTuningID": 0,
        "ShowFutureSpellPlayerConditionID": 0,
        "SpellVisualScript": 0,
        "ActiveSpellVisualScript": 0,
        "SpellID": 19434
      },
      "duration": null,
      "aura_options": null,
      "target_restrictions": null,
      "source": {
        "build": "1.60.1.70630",
        "reader": 24,
        "tables": [
          "SpellEffect",
          "SpellAuraOptions",
          "SpellTargetRestrictions",
          "SpellMisc",
          "SpellDuration",
          "SpellName",
          "SpellRadius"
        ],
        "missing_tables": []
      },
      "related_spells": [],
      "related_spells_truncated": false,
      "unsupported": [
        "server-side-behavior",
        "aura-ownership",
        "stacking-exclusivity",
        "aura-state-prerequisites"
      ]
    },
    "level": 20,
    "teaches": [],
    "learned_from": [],
    "mechanic": null,
    "dispel": null,
    "affects": [],
    "affected_by": [
      {
        "spell": 19416,
        "name": "Efficiency"
      },
      {
        "spell": 19461,
        "name": "Barrage"
      },
      {
        "spell": 19485,
        "name": "Mortal Shots"
      },
      {
        "spell": 19498,
        "name": "Hawk Eye"
      },
      {
        "spell": 1310687,
        "name": "Sniper Shot"
      },
      {
        "spell": 1310785,
        "name": "Sniper Shot"
      },
      {
        "spell": 1310786,
        "name": "Sniper Shot"
      }
    ],
    "ppm": null,
    "summons": [],
    "enchants": [],
    "interrupted_by": [
      "moving",
      "being pushed back",
      "bit 4"
    ],
    "breaks_on": [],
    "top": false
  }
}
Abolish DiseaseA spell without ranks.

GET /api/v1/spells/priest-552

Attempts to cure 1 disease effect on the target, and 1 more disease effect every 5 seconds for 20 sec.

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "spell",
    "id": "priest-552",
    "name": "Abolish Disease",
    "class": "priest",
    "origin": "classic",
    "url": "/api/v1/spells/priest-552",
    "internal": false,
    "spell": 552,
    "rank": null,
    "taught_by": null,
    "pet": null,
    "icon": "spell_nature_nullifydisease",
    "text": "Attempts to cure 1 disease effect on the target, and 1 more disease effect every 5 seconds for 20 sec.",
    "headers": {
      "context": "base-client-record",
      "costs": [
        {
          "order": 0,
          "power_type": 0,
          "flat": 0,
          "per_level": 0,
          "per_second": 0,
          "percent": 15.0,
          "max_percent": 0.0,
          "optional_flat": 0,
          "optional_percent": 0.0,
          "percent_per_second": 0.0,
          "required_aura_spell": 0,
          "display_id": 0,
          "alternate_bar_id": 0,
          "resource": "Mana"
        }
      ],
      "cast": {
        "base_ms": 0,
        "minimum_ms": 0,
        "per_level_ms": 0,
        "static_ms": 0
      },
      "range": {
        "flags": 0,
        "label": "Medium Range",
        "hostile": {
          "min_yards": 0.0,
          "max_yards": 30.0
        },
        "friendly": {
          "min_yards": 0.0,
          "max_yards": 30.0
        }
      },
      "cooldown": {
        "ability_ms": 0,
        "category_ms": 0,
        "gcd_ms": 1500,
        "category_id": 0,
        "gcd_category_id": 133,
        "aura_spell": 0
      },
      "reagents": null,
      "passive": false,
      "channeled": false,
      "drains_all_power": false,
      "next_melee": false,
      "hide_range": false
    },
    "tooltip": [
      [
        "15% of base mana",
        "30 yd range"
      ],
      [
        "Instant",
        null
      ]
    ],
    "mechanics": {
      "version": 2,
      "context": "base-client-record",
      "spell_id": 552,
      "effects": [
        {
          "id": 679133,
          "index": 0,
          "effect_type": 6,
          "aura_type": 23,
          "mechanic": 0,
          "implicit_targets": [
            21,
            0
          ],
          "spell_class_mask": [
            0,
            0,
            0,
            0
          ],
          "trigger_spell_id": 10872,
          "base_points": 0.0,
          "radius_yards": null,
          "raw": {
            "ID": 679133,
            "EffectAura": 23,
            "DifficultyID": 0,
            "EffectIndex": 0,
            "Effect": 6,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 5000,
            "EffectBonusCoefficient": 0.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.0,
            "EffectTriggerSpell": 10872,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": 0.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              0,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              0,
              0,
              0,
              0
            ],
            "ImplicitTarget": [
              21,
              0
            ],
            "SpellID": 552
          }
        },
        {
          "id": 679134,
          "index": 1,
          "effect_type": 38,
          "aura_type": 0,
          "mechanic": 0,
          "implicit_targets": [
            21,
            0
          ],
          "spell_class_mask": [
            0,
            0,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": 1.0,
          "radius_yards": null,
          "raw": {
            "ID": 679134,
            "EffectAura": 0,
            "DifficultyID": 0,
            "EffectIndex": 1,
            "Effect": 38,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 0.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.0,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": 1.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              3,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              0,
              0,
              0,
              0
            ],
            "ImplicitTarget": [
              21,
              0
            ],
            "SpellID": 552
          }
        }
      ],
      "misc": {
        "ID": 314254,
        "Attributes": [
          329728,
          32768,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          8192,
          0
        ],
        "DifficultyID": 0,
        "CastingTimeIndex": 1,
        "DurationIndex": 18,
        "PvPDurationIndex": 0,
        "RangeIndex": 4,
        "SchoolMask": 2,
        "Speed": 0.0,
        "LaunchDelay": 0.0,
        "MinDuration": 0.0,
        "SpellIconFileDataID": 136066,
        "ActiveIconFileDataID": 0,
        "ContentTuningID": 0,
        "ShowFutureSpellPlayerConditionID": 0,
        "SpellVisualScript": 0,
        "ActiveSpellVisualScript": 0,
        "SpellID": 552
      },
      "duration": {
        "ID": 18,
        "Duration": 20000,
        "MaxDuration": 20000,
        "DurationPerResource": 0
      },
      "aura_options": null,
      "target_restrictions": null,
      "source": {
        "build": "1.60.1.70630",
        "reader": 24,
        "tables": [
          "SpellEffect",
          "SpellAuraOptions",
          "SpellTargetRestrictions",
          "SpellMisc",
          "SpellDuration",
          "SpellName",
          "SpellRadius"
        ],
        "missing_tables": []
      },
      "related_spells": [
        {
          "spell_id": 10872,
          "effects": [
            {
              "id": 688006,
              "index": 0,
              "effect_type": 38,
              "aura_type": 0,
              "mechanic": 0,
              "implicit_targets": [
                21,
                0
              ],
              "spell_class_mask": [
                0,
                0,
                0,
                0
              ],
              "trigger_spell_id": 0,
              "base_points": 1.0,
              "radius_yards": null,
              "raw": {
                "ID": 688006,
                "EffectAura": 0,
                "DifficultyID": 0,
                "EffectIndex": 0,
                "Effect": 38,
                "EffectAmplitude": 0.0,
                "EffectAttributes": 0,
                "EffectAuraPeriod": 0,
                "EffectBonusCoefficient": 0.0,
                "EffectChainAmplitude": 1.0,
                "EffectChainTargets": 0,
                "EffectItemType": 0,
                "EffectMechanic": 0,
                "EffectPointsPerResource": 0.0,
                "EffectPos_facing": 0.0,
                "EffectRealPointsPerLevel": 0.0,
                "EffectTriggerSpell": 0,
                "BonusCoefficientFromAP": 0.0,
                "PvpMultiplier": 1.0,
                "Coefficient": 0.0,
                "Variance": 0.0,
                "ResourceCoefficient": 0.0,
                "GroupSizeBasePointsCoefficient": 1.0,
                "EffectBasePointsF": 1.0,
                "ScalingClass": 0,
                "Node__Field_12_0_0_63534_001": 0,
                "EffectMiscValue": [
                  3,
                  0
                ],
                "EffectRadiusIndex": [
                  0,
                  0
                ],
                "EffectSpellClassMask": [
                  0,
                  0,
                  0,
                  0
                ],
                "ImplicitTarget": [
                  21,
                  0
                ],
                "SpellID": 10872
              }
            }
          ],
          "misc": {
            "ID": 321915,
            "Attributes": [
              384,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              0,
              8192,
              0
            ],
            "DifficultyID": 0,
            "CastingTimeIndex": 1,
            "DurationIndex": 0,
            "PvPDurationIndex": 0,
            "RangeIndex": 1,
            "SchoolMask": 8,
            "Speed": 0.0,
            "LaunchDelay": 0.0,
            "MinDuration": 0.0,
            "SpellIconFileDataID": 136066,
            "ActiveIconFileDataID": 0,
            "ContentTuningID": 0,
            "ShowFutureSpellPlayerConditionID": 0,
            "SpellVisualScript": 0,
            "ActiveSpellVisualScript": 0,
            "SpellID": 10872
          },
          "duration": null,
          "aura_options": {
            "ID": 123510,
            "DifficultyID": 0,
            "CumulativeAura": 0,
            "ProcCategoryRecovery": 0,
            "ProcChance": 101,
            "ProcCharges": 0,
            "SpellProcsPerMinuteID": 0,
            "ProcTypeMask": [
              0,
              0
            ],
            "SpellID": 10872
          },
          "target_restrictions": null,
          "name": "Abolish Disease Effect"
        }
      ],
      "related_spells_truncated": false,
      "unsupported": [
        "server-side-behavior",
        "aura-ownership",
        "stacking-exclusivity",
        "aura-state-prerequisites"
      ]
    },
    "level": 32,
    "teaches": [],
    "learned_from": [],
    "mechanic": null,
    "dispel": "Magic",
    "affects": [],
    "affected_by": [
      {
        "spell": 14520,
        "name": "Mental Agility"
      },
      {
        "spell": 14751,
        "name": "Inner Focus"
      },
      {
        "spell": 1309957,
        "name": "Holy Precision"
      }
    ],
    "ppm": null,
    "summons": [],
    "enchants": [],
    "interrupted_by": [
      "an interrupt"
    ],
    "breaks_on": [],
    "top": true
  }
}
Arcane ResistanceA hunter pet's ability: taught_by is the number of the spell the hunter learns to teach it.

GET /api/v1/spells/hunter-24493

Increases Arcane resistance by 30.

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "spell",
    "id": "hunter-24493",
    "name": "Arcane Resistance",
    "class": "hunter",
    "origin": "classic",
    "url": "/api/v1/spells/hunter-24493",
    "internal": false,
    "spell": 24493,
    "rank": "Rank 1",
    "taught_by": 24495,
    "pet": null,
    "icon": "spell_nature_starfall",
    "text": "Increases Arcane resistance by 30.",
    "headers": {
      "context": "base-client-record",
      "costs": null,
      "cast": {
        "base_ms": 0,
        "minimum_ms": 0,
        "per_level_ms": 0,
        "static_ms": 0
      },
      "range": {
        "flags": 0,
        "label": "Self Only",
        "hostile": {
          "min_yards": 0.0,
          "max_yards": 0.0
        },
        "friendly": {
          "min_yards": 0.0,
          "max_yards": 0.0
        }
      },
      "cooldown": null,
      "reagents": null,
      "passive": true,
      "channeled": false,
      "drains_all_power": false,
      "next_melee": false,
      "hide_range": false
    },
    "tooltip": [],
    "mechanics": {
      "version": 2,
      "context": "base-client-record",
      "spell_id": 24493,
      "effects": [
        {
          "id": 701984,
          "index": 0,
          "effect_type": 6,
          "aura_type": 22,
          "mechanic": 0,
          "implicit_targets": [
            1,
            0
          ],
          "spell_class_mask": [
            0,
            0,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": 30.0,
          "radius_yards": null,
          "raw": {
            "ID": 701984,
            "EffectAura": 22,
            "DifficultyID": 0,
            "EffectIndex": 0,
            "Effect": 6,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 1.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.0,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": 30.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              64,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              0,
              0,
              0,
              0
            ],
            "ImplicitTarget": [
              1,
              0
            ],
            "SpellID": 24493
          }
        }
      ],
      "misc": {
        "ID": 333277,
        "Attributes": [
          64,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          8192,
          0
        ],
        "DifficultyID": 0,
        "CastingTimeIndex": 1,
        "DurationIndex": 21,
        "PvPDurationIndex": 0,
        "RangeIndex": 1,
        "SchoolMask": 1,
        "Speed": 0.0,
        "LaunchDelay": 0.0,
        "MinDuration": 0.0,
        "SpellIconFileDataID": 136096,
        "ActiveIconFileDataID": 0,
        "ContentTuningID": 0,
        "ShowFutureSpellPlayerConditionID": 0,
        "SpellVisualScript": 0,
        "ActiveSpellVisualScript": 0,
        "SpellID": 24493
      },
      "duration": {
        "ID": 21,
        "Duration": -1,
        "MaxDuration": -1,
        "DurationPerResource": 0
      },
      "aura_options": {
        "ID": 134872,
        "DifficultyID": 0,
        "CumulativeAura": 0,
        "ProcCategoryRecovery": 0,
        "ProcChance": 101,
        "ProcCharges": 0,
        "SpellProcsPerMinuteID": 0,
        "ProcTypeMask": [
          0,
          0
        ],
        "SpellID": 24493
      },
      "target_restrictions": null,
      "source": {
        "build": "1.60.1.70630",
        "reader": 24,
        "tables": [
          "SpellEffect",
          "SpellAuraOptions",
          "SpellTargetRestrictions",
          "SpellMisc",
          "SpellDuration",
          "SpellName",
          "SpellRadius"
        ],
        "missing_tables": []
      },
      "related_spells": [],
      "related_spells_truncated": false,
      "unsupported": [
        "server-side-behavior",
        "aura-ownership",
        "stacking-exclusivity",
        "aura-state-prerequisites"
      ]
    },
    "level": 20,
    "teaches": [],
    "learned_from": [],
    "mechanic": null,
    "dispel": null,
    "affects": [],
    "affected_by": [],
    "ppm": null,
    "summons": [],
    "enchants": [],
    "interrupted_by": [],
    "breaks_on": [],
    "top": false
  }
}
Blood PactAn ability of a warlock's demon: pet names the demon.

GET /api/v1/spells/warlock-11766

Increases party members' Stamina by 39.

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "spell",
    "id": "warlock-11766",
    "name": "Blood Pact",
    "class": "warlock",
    "origin": "classic",
    "url": "/api/v1/spells/warlock-11766",
    "internal": false,
    "spell": 11766,
    "rank": "Rank 4",
    "taught_by": null,
    "pet": "Imp",
    "icon": "spell_shadow_bloodboil",
    "text": "Increases party members' Stamina by 39.",
    "headers": {
      "context": "base-client-record",
      "costs": null,
      "cast": {
        "base_ms": 0,
        "minimum_ms": 0,
        "per_level_ms": 0,
        "static_ms": 0
      },
      "range": {
        "flags": 0,
        "label": "Short Range",
        "hostile": {
          "min_yards": 0.0,
          "max_yards": 20.0
        },
        "friendly": {
          "min_yards": 0.0,
          "max_yards": 20.0
        }
      },
      "cooldown": null,
      "reagents": null,
      "passive": false,
      "channeled": false,
      "drains_all_power": false,
      "next_melee": false,
      "hide_range": false
    },
    "tooltip": [
      [
        null,
        "20 yd range"
      ],
      [
        "Instant",
        null
      ]
    ],
    "mechanics": {
      "version": 2,
      "context": "base-client-record",
      "spell_id": 11766,
      "effects": [
        {
          "id": 690767,
          "index": 0,
          "effect_type": 35,
          "aura_type": 29,
          "mechanic": 0,
          "implicit_targets": [
            1,
            0
          ],
          "spell_class_mask": [
            0,
            0,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": 35.0,
          "radius_yards": 30.0,
          "raw": {
            "ID": 690767,
            "EffectAura": 29,
            "DifficultyID": 0,
            "EffectIndex": 0,
            "Effect": 35,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 0.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.4,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": 35.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              2,
              0
            ],
            "EffectRadiusIndex": [
              10,
              10
            ],
            "EffectSpellClassMask": [
              0,
              0,
              0,
              0
            ],
            "ImplicitTarget": [
              1,
              0
            ],
            "SpellID": 11766
          }
        }
      ],
      "misc": {
        "ID": 324211,
        "Attributes": [
          65536,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          8192,
          0
        ],
        "DifficultyID": 0,
        "CastingTimeIndex": 1,
        "DurationIndex": 21,
        "PvPDurationIndex": 0,
        "RangeIndex": 3,
        "SchoolMask": 32,
        "Speed": 0.0,
        "LaunchDelay": 0.0,
        "MinDuration": 0.0,
        "SpellIconFileDataID": 136124,
        "ActiveIconFileDataID": 136116,
        "ContentTuningID": 0,
        "ShowFutureSpellPlayerConditionID": 0,
        "SpellVisualScript": 0,
        "ActiveSpellVisualScript": 0,
        "SpellID": 11766
      },
      "duration": {
        "ID": 21,
        "Duration": -1,
        "MaxDuration": -1,
        "DurationPerResource": 0
      },
      "aura_options": null,
      "target_restrictions": null,
      "source": {
        "build": "1.60.1.70630",
        "reader": 24,
        "tables": [
          "SpellEffect",
          "SpellAuraOptions",
          "SpellTargetRestrictions",
          "SpellMisc",
          "SpellDuration",
          "SpellName",
          "SpellRadius"
        ],
        "missing_tables": []
      },
      "related_spells": [],
      "related_spells_truncated": false,
      "unsupported": [
        "server-side-behavior",
        "aura-ownership",
        "stacking-exclusivity",
        "aura-state-prerequisites"
      ]
    },
    "level": 38,
    "teaches": [],
    "learned_from": [],
    "mechanic": null,
    "dispel": null,
    "affects": [],
    "affected_by": [],
    "ppm": null,
    "summons": [],
    "enchants": [],
    "interrupted_by": [],
    "breaks_on": [],
    "top": false
  }
}
Rogue Passive (DND)One of Blizzard's own working records: internal is true, and listings leave it out unless asked.

GET /api/v1/spells/rogue-21184

Decreases threat generated by 29%.

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "spell",
    "id": "rogue-21184",
    "name": "Rogue Passive (DND)",
    "class": "rogue",
    "origin": "classic",
    "url": "/api/v1/spells/rogue-21184",
    "internal": true,
    "spell": 21184,
    "rank": null,
    "taught_by": null,
    "pet": null,
    "icon": "ability_stealth",
    "text": "Decreases threat generated by 29%.",
    "headers": {
      "context": "base-client-record",
      "costs": null,
      "cast": {
        "base_ms": 0,
        "minimum_ms": 0,
        "per_level_ms": 0,
        "static_ms": 0
      },
      "range": {
        "flags": 0,
        "label": "Self Only",
        "hostile": {
          "min_yards": 0.0,
          "max_yards": 0.0
        },
        "friendly": {
          "min_yards": 0.0,
          "max_yards": 0.0
        }
      },
      "cooldown": null,
      "reagents": null,
      "passive": true,
      "channeled": false,
      "drains_all_power": false,
      "next_melee": false,
      "hide_range": false
    },
    "tooltip": [],
    "mechanics": {
      "version": 2,
      "context": "base-client-record",
      "spell_id": 21184,
      "effects": [
        {
          "id": 698526,
          "index": 0,
          "effect_type": 6,
          "aura_type": 10,
          "mechanic": 0,
          "implicit_targets": [
            1,
            0
          ],
          "spell_class_mask": [
            0,
            0,
            0,
            0
          ],
          "trigger_spell_id": 0,
          "base_points": -29.0,
          "radius_yards": null,
          "raw": {
            "ID": 698526,
            "EffectAura": 10,
            "DifficultyID": 0,
            "EffectIndex": 0,
            "Effect": 6,
            "EffectAmplitude": 0.0,
            "EffectAttributes": 0,
            "EffectAuraPeriod": 0,
            "EffectBonusCoefficient": 0.0,
            "EffectChainAmplitude": 1.0,
            "EffectChainTargets": 0,
            "EffectItemType": 0,
            "EffectMechanic": 0,
            "EffectPointsPerResource": 0.0,
            "EffectPos_facing": 0.0,
            "EffectRealPointsPerLevel": 0.0,
            "EffectTriggerSpell": 0,
            "BonusCoefficientFromAP": 0.0,
            "PvpMultiplier": 1.0,
            "Coefficient": 0.0,
            "Variance": 0.0,
            "ResourceCoefficient": 0.0,
            "GroupSizeBasePointsCoefficient": 1.0,
            "EffectBasePointsF": -29.0,
            "ScalingClass": 0,
            "Node__Field_12_0_0_63534_001": 0,
            "EffectMiscValue": [
              127,
              0
            ],
            "EffectRadiusIndex": [
              0,
              0
            ],
            "EffectSpellClassMask": [
              0,
              0,
              0,
              0
            ],
            "ImplicitTarget": [
              1,
              0
            ],
            "SpellID": 21184
          }
        }
      ],
      "misc": {
        "ID": 330545,
        "Attributes": [
          327888,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          0,
          8192,
          0
        ],
        "DifficultyID": 0,
        "CastingTimeIndex": 1,
        "DurationIndex": 21,
        "PvPDurationIndex": 0,
        "RangeIndex": 1,
        "SchoolMask": 1,
        "Speed": 0.0,
        "LaunchDelay": 0.0,
        "MinDuration": 0.0,
        "SpellIconFileDataID": 132320,
        "ActiveIconFileDataID": 0,
        "ContentTuningID": 0,
        "ShowFutureSpellPlayerConditionID": 0,
        "SpellVisualScript": 0,
        "ActiveSpellVisualScript": 0,
        "SpellID": 21184
      },
      "duration": {
        "ID": 21,
        "Duration": -1,
        "MaxDuration": -1,
        "DurationPerResource": 0
      },
      "aura_options": {
        "ID": 132140,
        "DifficultyID": 0,
        "CumulativeAura": 0,
        "ProcCategoryRecovery": 0,
        "ProcChance": 101,
        "ProcCharges": 0,
        "SpellProcsPerMinuteID": 0,
        "ProcTypeMask": [
          0,
          0
        ],
        "SpellID": 21184
      },
      "target_restrictions": null,
      "source": {
        "build": "1.60.1.70630",
        "reader": 24,
        "tables": [
          "SpellEffect",
          "SpellAuraOptions",
          "SpellTargetRestrictions",
          "SpellMisc",
          "SpellDuration",
          "SpellName",
          "SpellRadius"
        ],
        "missing_tables": []
      },
      "related_spells": [],
      "related_spells_truncated": false,
      "unsupported": [
        "server-side-behavior",
        "aura-ownership",
        "stacking-exclusivity",
        "aura-state-prerequisites"
      ]
    },
    "level": 1,
    "teaches": [],
    "learned_from": [],
    "mechanic": null,
    "dispel": null,
    "affects": [],
    "affected_by": [],
    "ppm": null,
    "summons": [],
    "enchants": [],
    "interrupted_by": [],
    "breaks_on": [],
    "top": false
  }
}

Racials

Race abilities and their descriptions.

GET /api/v1/racials List records

GET /api/v1/racials/{id} Read one record

Filters for this listing

sortstring

Default: name

name

racestring
10 values in this reading

Dwarf, Gnome, High Order Skyborne, Human, Night Elf, Orc, Tauren, Troll, Undead, Windshaper Skyborne

5 racial fields
racestring
The race that has it.
spellinteger / null
The number of the spell behind it, found on the race's own racial skill line by the racial's name; null when that line holds no spell of the name, or several (Expansive Mind is one spell per resource).
spell_textnull / string
That spell's description with its numbers filled in, the text the game shows in its tooltip; text is the shorter line of the character screen. null without a spell.
headersnull / object
That spell's headers, as a spell's; null without a spell.
tooltiparray / null
That spell's tooltip lines, as a spell's (Instant | 3 min cooldown); null without a spell.

Examples from this reading

Beast SlayingA racial: it has a race, and neither class nor origin.

GET /api/v1/racials/troll-beast-slaying

Damage dealt versus Beasts increased by 5%

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "racial",
    "id": "troll-beast-slaying",
    "name": "Beast Slaying",
    "class": null,
    "origin": null,
    "url": "/api/v1/racials/troll-beast-slaying",
    "internal": false,
    "race": "Troll",
    "icon": "inv_misc_pelt_bear_ruin_02",
    "text": "Damage dealt versus Beasts increased by 5%",
    "spell": 20557,
    "spell_text": "Damage dealt versus Beasts increased by 5%.",
    "headers": {
      "context": "base-client-record",
      "costs": null,
      "cast": {
        "base_ms": 0,
        "minimum_ms": 0,
        "per_level_ms": 0,
        "static_ms": 0
      },
      "range": {
        "flags": 0,
        "label": "Self Only",
        "hostile": {
          "min_yards": 0.0,
          "max_yards": 0.0
        },
        "friendly": {
          "min_yards": 0.0,
          "max_yards": 0.0
        }
      },
      "cooldown": null,
      "reagents": null,
      "passive": true,
      "channeled": false,
      "drains_all_power": false,
      "next_melee": false,
      "hide_range": false
    },
    "tooltip": []
  }
}

Items

Item levels, equipment slots, stats, armor, damage and effects.

GET /api/v1/items List records

GET /api/v1/items/{id} Read one record

Filters for this listing

classstring
9 values in this reading

druid, hunter, mage, paladin, priest, rogue, shaman, warlock, warrior

originstring

classic, later, sod, forever

sortstring

Default: name

name, level, -level

slotstring
25 values in this reading

Ammo, Back, Bag, Chest, Feet, Finger, Hands, Head, Held In Off-hand, Legs, Main Hand, Neck, Off Hand, One-Hand, Ranged, Relic, Shield, Shirt, Shoulder, Tabard, Thrown, Trinket, Two-Hand, Waist, Wrist

qualitystring

Artifact, Common, Epic, Heirloom, Legendary, Poor, Rare, Uncommon

typestring
77 values in this reading

Armor / Cloth, Armor / Cosmetic, Armor / Idol, Armor / Leather, Armor / Libram, Armor / Mail, Armor / Miscellaneous, Armor / Plate, Armor / Shield, Armor / Totem, Consumable / Bandages, Consumable / Device, Consumable / Elixirs, Consumable / Explosives, Consumable / Flasks, Consumable / Food & Drink, Consumable / Other, Consumable / Permanent, Consumable / Potions, Consumable / Scrolls, Consumable / Temporary, Container / Bag, Container / Enchanting Bag, Container / Herb Bag, Container / Leatherworking Bag, Container / Mining Bag, Container / Reagent Bag, Container / Soul Bag, Key / Key, Miscellaneous / Holiday, Miscellaneous / Junk, Miscellaneous / Mount, Miscellaneous / Other, Miscellaneous / Pet, Miscellaneous / Reagent, Projectile / Arrow, Projectile / Bullet, Quest / Quest, Quiver / Ammo Pouch, Quiver / Quiver, Reagent / Reagent, Recipe / Alchemy, Recipe / Blacksmithing, Recipe / Book, Recipe / Cooking, Recipe / Enchanting, Recipe / Engineering, Recipe / First Aid, Recipe / Fishing, Recipe / Leatherworking, Recipe / Tailoring, Trade Goods / Cloth, Trade Goods / Cooking, Trade Goods / Elemental, Trade Goods / Enchanting, Trade Goods / Explosives (OBSOLETE), Trade Goods / Herb, Trade Goods / Leather, Trade Goods / Metal & Stone, Trade Goods / Other, Trade Goods / Parts, Trade Goods / Trade Goods (OBSOLETE), Weapon / Axe, Weapon / Bow, Weapon / Crossbow, Weapon / Dagger, Weapon / Fishing Pole, Weapon / Fist Weapon, Weapon / Gun, Weapon / Mace, Weapon / Miscellaneous, Weapon / Polearm, Weapon / Staff, Weapon / Sword, Weapon / Thrown, Weapon / Wand, WoW Token

min_levelinteger
lowest item level

0–1,000

max_levelinteger
highest item level

0–1,000

17 item fields
typestring
What sort of thing it is, as the game files it (Weapon / Sword, Armor / Cloth, Consumable / Potions).
slotnull / string
Where it is worn or held (Head, Trinket, Two-Hand). null for what cannot be equipped.
qualitystring
Its colour in the game: Poor (grey), Common (white), Uncommon (green), Rare (blue), Epic (purple), Legendary (orange), Artifact or Heirloom.
levelinteger
Its item level: how strong the game counts it. Not the level a character needs (see requires).
requiresinteger / null
The level a character needs to use it. null when any level will do.
bindsnull / string
How it is tied to a character: Binds when picked up, Binds when equipped, Binds when used, or Quest Item. null when it is not.
classesarray
The classes that may use it, when the game names them. An empty list when every class may.
speednull / number
Its attack speed as the game stores it: a weapon's seconds between two attacks. null when it has none.
statsobject
What it adds while worn, each stat with its amount, in the order the item lists them (its tooltip's order). The amounts are worked out from the item level as the game does, not stored. Armor here is bonus armor on top of the item's own (see armor). A stat we have no name for yet shows as Stat and its number.
effectsarray
What else it does, one entry each: on (Equip, Use, Chance on hit or Learn), name and spell (the spell behind it and that spell's number), text (what the tooltip says; for Learn, the description of the spell taught) and teaches (the number of the spell it teaches, or null).
setnull / string
The name of the set it belongs to. null when it is of no set.
armorinteger / null
Its own armor, worked out as the game works it out from its tables: the row of its item level, the column of its quality and the slot's share (a shield from the shield table). Computed, not stored. null for an item without armor, or when a table the build did not hold would be needed.
damagenull / object
A weapon's damage, worked out as the game works it out: {min, max, per_second}, from its table's damage per second at its item level and quality, its speed and its variance. Computed, not stored. null for what is not a weapon or ammunition.
uniquenull / object
What limits how many a character may carry or wear: {name, count}: the limit's name when it is shared by several items (Trinket of the Dawn), else null, and how many. null when there is no limit.
name_linenull / string
The grey line the game shows under the name (Raid Unique, a colour, a title), or null.
sellinteger / null
What a vendor pays for it, in copper (100 copper is a silver, 100 silver a gold). null when it cannot be sold.
buyinteger / null
What a vendor charges for it, in copper, when the files give a price. null otherwise.

Examples from this reading

Beastmaster's BootsAn item with stats, effects and a set.

GET /api/v1/items/22061

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "item",
    "id": "22061",
    "name": "Beastmaster's Boots",
    "class": null,
    "origin": "classic",
    "url": "/api/v1/items/22061",
    "internal": false,
    "quality": "Epic",
    "level": 60,
    "requires": null,
    "slot": "Feet",
    "type": "Armor / Mail",
    "binds": "Binds when picked up",
    "classes": [],
    "speed": null,
    "stats": {
      "Agility": 24,
      "Stamina": 9
    },
    "effects": [
      {
        "name": "Increased Pet Damage +3%",
        "on": "Equip",
        "spell": 27206,
        "text": "Increases damage dealt by your pet by 3%.",
        "teaches": null
      }
    ],
    "set": "Beastmaster Armor",
    "icon": "inv_boots_plate_07",
    "text": null,
    "armor": 266,
    "damage": null,
    "unique": null,
    "name_line": null,
    "sell": 31009,
    "buy": 155045
  }
}
"Mage-Eye" BlunderbussA weapon: speed is its seconds between two attacks.

GET /api/v1/items/3041

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "item",
    "id": "3041",
    "name": "\"Mage-Eye\" Blunderbuss",
    "class": null,
    "origin": "classic",
    "url": "/api/v1/items/3041",
    "internal": false,
    "quality": "Uncommon",
    "level": 31,
    "requires": 26,
    "slot": "Ranged",
    "type": "Weapon / Gun",
    "binds": "Binds when equipped",
    "classes": [],
    "speed": 2.8,
    "stats": {
      "Agility": 4
    },
    "effects": [],
    "set": null,
    "icon": "inv_weapon_rifle_05",
    "text": null,
    "armor": null,
    "damage": {
      "min": 24,
      "max": 46,
      "per_second": 12.7
    },
    "unique": null,
    "name_line": null,
    "sell": 3769,
    "buy": 18846
  }
}
A Jubling's Tiny HomeAn item that teaches a spell: its Learn effect names the spell and says what it does.

GET /api/v1/items/19450

Teaches you how to summon this companion.

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "item",
    "id": "19450",
    "name": "A Jubling's Tiny Home",
    "class": null,
    "origin": "classic",
    "url": "/api/v1/items/19450",
    "internal": false,
    "quality": "Common",
    "level": 35,
    "requires": null,
    "slot": null,
    "type": "Miscellaneous / Pet",
    "binds": null,
    "classes": [],
    "speed": null,
    "stats": {},
    "effects": [
      {
        "name": "Summon Jubling",
        "on": "Learn",
        "spell": 23811,
        "text": "Right Click to summon and dismiss your Jubling.",
        "teaches": 23811
      }
    ],
    "set": null,
    "icon": "inv_egg_04",
    "text": "Teaches you how to summon this companion.",
    "armor": null,
    "damage": null,
    "unique": {
      "name": null,
      "count": 1
    },
    "name_line": null,
    "sell": null,
    "buy": null
  }
}
(DNT) MoonglaiveOne of Blizzard's own working records: internal is true, and listings leave it out unless asked.

GET /api/v1/items/260897

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "item",
    "id": "260897",
    "name": "(DNT) Moonglaive",
    "class": null,
    "origin": "forever",
    "url": "/api/v1/items/260897",
    "internal": true,
    "quality": "Poor",
    "level": 1,
    "requires": 1,
    "slot": "One-Hand",
    "type": "Weapon / Sword",
    "binds": null,
    "classes": [],
    "speed": 1.4,
    "stats": {},
    "effects": [],
    "set": null,
    "icon": null,
    "text": null,
    "armor": null,
    "damage": {
      "min": 0,
      "max": 1,
      "per_second": 0.8
    },
    "unique": null,
    "name_line": null,
    "sell": 3,
    "buy": 18
  }
}

Zones

Every area of the world with its map and the zone it lies in.

GET /api/v1/zones List records

GET /api/v1/zones/{id} Read one record

Filters for this listing

sortstring

Default: name

name

mapstring
58 values in this reading

Ahn'Qiraj Temple, Alliance PVP Barracks, Alterac Valley, Arathi Basin, Azshara Crater, Battle for Gilneas, Blackfathom Deeps, Blackrock Depths, Blackrock Spire, Blackwing Lair, Burning of Andorhal, Caverns of Time, City of Dalaran, Darkspear Islands, Deadmines, Deadwind Pass, Deeprun Tram, Demon Fall Canyon, Dire Maul, Eastern Kingdoms, Emerald Dream, Excavation Site: Wetlands, Gnomeregan, Horde PVP Barracks, Hyjal Crater, Kalimdor, Karazhan Crypts, Manor Mistmantle, Maraudon, Molten Core, Naxxramas, Nightmare Grove, Ragefire Chasm, Razorfen Downs, Razorfen Kraul, Ruins of Ahn'Qiraj, Ruins of Lordaeron, Scarlet Enclave, Scarlet Monastery, Scholomance, Shadow Hold, Shadowfang Keep, Starfall Barrow Den, Storm Cliffs, Stormwind Stockade, Stratholme, Sunken Temple, The Crystal Vale, The Hall of Thanes, The Scarab Dais, The Tainted Scar, Uldaman, Wailing Caverns, Warsong Gulch, Warsong Gulch (Winter), Zephras Isle, Zul'Farrak, Zul'Gurub

5 zone fields
mapnull / string
The map it is on (Eastern Kingdoms, Kalimdor, or an instance's own map), or null when the files name none.
parentinteger / null
The number of the area it lies in (a subzone's zone), or null for a zone of its own.
zonenull / string
The name of the zone it lies in, up the chain of parents, or null for a zone of its own.
levelinteger / null
The level the game counts it explored at, as the files give it; null when they give none (most zones' level ranges are not in these files).
factionnull / string
Whose side the game counts it on: Alliance, Horde, Both, or null for contested or neither.

Examples from this reading

Ahn'QirajA zone of its own: parent and zone are null.

GET /api/v1/zones/3428

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "zone",
    "id": "3428",
    "name": "Ahn'Qiraj",
    "class": null,
    "origin": null,
    "url": "/api/v1/zones/3428",
    "internal": false,
    "icon": null,
    "text": null,
    "map": "Ahn'Qiraj Temple",
    "parent": null,
    "zone": null,
    "level": null,
    "faction": null
  }
}
Abandoned TowerA subzone: parent is the number of the area it lies in, zone its name.

GET /api/v1/zones/16610

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "zone",
    "id": "16610",
    "name": "Abandoned Tower",
    "class": null,
    "origin": null,
    "url": "/api/v1/zones/16610",
    "internal": false,
    "icon": null,
    "text": null,
    "map": "Darkspear Islands",
    "parent": 16606,
    "zone": "Darkspear Islands",
    "level": null,
    "faction": null
  }
}

Achievements

Achievements and the statistics the game keeps, with points and categories.

GET /api/v1/achievements List records

GET /api/v1/achievements/{id} Read one record

Filters for this listing

sortstring

Default: category

category, name

categorystring
51 values in this reading

Adventure, Alchemy, Battlegrounds, Blacksmithing, Boss Kills, Character, Combat, Consumables, Creatures, Deaths, Do Not Display, Druid, Dungeons, Dungeons & Raids, Dungeons and Raids, Eastern Kingdoms, Enchanting, Engineering, Explorer, Gear, Honorable Kills, Hunter, Kalimdor, Killing Blows, Kills, Leatherworking, Mage, Paladin, Player vs. Player, Priest, Professions, Quests, Raids, Ranks, Reputation, Reputations, Resurrection, Rogue, Season Journey, Secondary Skills, Shaman, Skills, Social, Statistics, Tailoring, Tier 1 Gear, Travel, Warlock, Warrior, Wealth, World

5 achievement fields
pointsinteger
The achievement points it gives; 0 for a statistic and for most of this client's rows.
categorystring
The category the game files it under (Dungeons and Raids, Quests, Statistics' Deaths …), or null.
factionnull / string
Alliance or Horde when only one side can earn it; null for both.
rewardnull / string
What the game says it rewards (a title, an item), or null.
statisticboolean
true for a counter the game keeps (kills, deaths, quests completed), not an achievement to earn; the client's table holds both.

Examples from this reading

Archmage Arugal kills (Shadowfang Keep)An achievement with points.

GET /api/v1/achievements/1092

Archmage Arugal kills (Shadowfang Keep)

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "achievement",
    "id": "1092",
    "name": "Archmage Arugal kills (Shadowfang Keep)",
    "class": null,
    "origin": null,
    "url": "/api/v1/achievements/1092",
    "internal": false,
    "icon": null,
    "text": "Archmage Arugal kills (Shadowfang Keep)",
    "points": 5,
    "category": "Boss Kills",
    "faction": null,
    "reward": null,
    "statistic": true
  }
}
Alterac Valley battlesA statistic the game keeps: statistic is true and points 0.

GET /api/v1/achievements/53

Alterac Valley battles

{
  "build": "1.60.1.70630",
  "read": "2026-10-27",
  "license": "CC BY 4.0",
  "terms": "Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.",
  "result": {
    "kind": "achievement",
    "id": "53",
    "name": "Alterac Valley battles",
    "class": null,
    "origin": null,
    "url": "/api/v1/achievements/53",
    "internal": false,
    "icon": "trade_engineering",
    "text": "Alterac Valley battles",
    "points": 0,
    "category": "Battlegrounds",
    "faction": null,
    "reward": null,
    "statistic": true
  }
}

Build changes

Differences between WoW Forever builds, newest first.

GET /api/v1/changes

To read the latest item changes:

curl --fail 'https://wowforever.news/api/v1/changes?kind=item&limit=5'
kindstring

talent, spell, racial, item, zone, achievement

buildstring
the build a change was first seen in
limitinteger
1 to 100, 50 when left out

1–100 · Default: 50

offsetinteger
records to skip

0–1,000,000 · Default: 0

Fields on a build change
seenstring
build_fromstring
build_tostring
kindstring

talent, spell, racial, item, zone, achievement

idstring
namestring
whatstring

added, removed, changed

beforenull / talent record / spell record / racial record / item record / zone record / achievement record
The record as it was; null when it was added.
afternull / talent record / spell record / racial record / item record / zone record / achievement record
The record as it is; null when it was removed.

before and after contain the record on each side of a change. before is null when added; after is null when removed.

Raid buffs

The buffs and debuffs a class, a spec or a hunter's pet brings to a raid: how far each reaches, whom it helps, what it does not stack with, and the game records it rests on. Written by hand, each with its source and how sure it is.

GET /api/v1/raid-buffs Everything at once; no query parameters

Fields of each entry of buffs
id
Never changes and is never given to another buff: saved plans and share links hold it.
order
Where a raid leader sees it among buffs of equal standing, 1 first: the order Guilds Forever's planner showed until 19 October 2026, kept when it switched to this API. A planner sorts by it once; the place in buffs stays fixed.
name
What it is called in a raid. A name several spells share says so (Demoralizing Shout or Roar); cast_as names each.
label
A short name, for a small tile.
icon
The game's name of its icon; the picture is at /icons/<icon>.png.
kind
buff (on players), debuff (on the enemy) or utility (summons, a battle resurrection, a cast on one ally).
scope
raid: one caster covers the whole raid; party: the caster's own party.
from
Who brings it, as class:spec (druid:feral_tank), with * for every spec of the class. The class and spec ids are Guilds Forever's planner's.
record
The address of the record whose tooltip stands for it: the highest rank of its spell, or a talent's record when the buff is the talent's own and no spell of it is trained higher (Leader of the Pack).
rests_on
The addresses of every record what is written here rests on: when the game changes one, this buff is to be checked again.
talents
The addresses of the talents any one of which gives it: a player's own talents count before a guess from the spec. [] when no talent is needed.
cast_as
When the name is shared, what each provider casts, keyed as in from: its name, its own icon (null when it is the buff's) and its record (null when it is a choice of several, as Fire, Frost or Shadow). {} otherwise.
hunter_pet
A hunter brings it only with this pet out (an id of hunter_pets); null otherwise.
helps
Whom it feeds, of melee, ranged, caster, healer and tank. null when it helps everyone.
mana_only
true when it does nothing for a player without mana.
wants
For a party buff, the kinds of player a party needs it for, of the same five; [] for nobody unless asked. null when not said.
not_with
The ids of other buffs it does not stack with inside one party.
seat
One for each player of the class: group (curse or judge) and order. Each further warlock (or paladin, for judgements) brings the next in the order. null otherwise.
slot
What a player gives up for it when only one of a kind runs at a time: aura (a paladin's one aura), or earth, fire, water or air (a shaman's one totem of each element). null otherwise.
must
true when a raid should have it: counted as missing when nobody brings it.
situational
true when only some fights need it: never counted as missing.
bonus
true when it counts when someone brings it but is never missing (a hunter's pet's buff).
uncertain
The id of the open question it depends on (see uncertain), or null.
confidence
How sure what is written is: high, medium or low.
source
Where it was learned: an id of sources.
note
What a raid leader needs to know of it, in a sentence or a few.
being_checked
Added by the API: the addresses of the records it rests on that read otherwise now (name, rank, whether it is its spell's highest, text, ranks' texts, tooltip lines) than in the build it was last checked against (checked_against), or that are gone. While the list is not empty it is being checked; [] when nothing changed.
Parts of the answer
knowledge
The version of what is written here: the day it last changed. It changes when we change it, not with the build.
checked_against
The build every piece was last checked against (being_checked says what changed since).
taken_over
Where it was first written, and what was changed when we took it over.
buffs
Every buff, debuff and raid tool, in a fixed order: one is only ever added at the end, so a place in the list keeps its meaning.
blessings
The ids of the paladin Blessings a player may be given, one each: whoever casts it, a second one replaces the first.
hunter_pets
The pets a planner tells apart, in a fixed order: id, label, ability, the buff it brings (null for none), what it gives, the record of its ability, rests_on and being_checked (as a buff's).
resistances
For each school, who raises its resistance: class, spell, the buff it is, whether it is an aura (a paladin's one aura) and the spell's record. An empty list for a school nobody raises. Its buff's being_checked covers it.
uncertain
The open questions a buff can depend on, by id: what is not confirmed in WoW Forever, and how sure the guess is.
sources
Where what is written was learned, by id.
fields
What each part and field means: this table.

Class tools

Who can do the jobs a raid needs covered (remove magic, curses, poison or disease, interrupt, purge, remove a Frenzy, bring back a dead player), and who has a healing cooldown or a defensive of their own: by class, spec, talent and pet, each with the words of its tooltip that show it.

GET /api/v1/class-tools Everything at once; no query parameters

Fields of each entry of tools
job
The id of the job (of jobs, or of cooldown_kinds for a cooldown).
class
The class that has it.
spell
Its name, as a raid calls it.
record
The address of the spell's record, at its highest rank.
rests_on
The addresses of every record what is written here rests on: when the game changes one, this entry is to be checked again.
quote
The words of its tooltip that show it does the job, as the record's text has them.
specs
Only these specs of the class have it (a talent gives it, or it needs a shield, which only Protection carries); null when every spec does.
talent
The address of the talent that gives it: a player's own talents decide, a spec alone is a guess. null when no talent is needed.
pet
The warlock's demon that must be out for it (Felhunter, Voidwalker): it counts, but as a guess. null otherwise.
note
What is said beside it (needs a shield, before the pull). null when nothing.
being_checked
Added by the API: the addresses of the records it rests on that read otherwise now (name, rank, whether it is its spell's highest, text, ranks' texts, tooltip lines) than in the build it was last checked against (checked_against), or that are gone. While the list is not empty it is being checked; [] when nothing changed.
Fields of each entry of cooldowns
job
The id of the job (of jobs, or of cooldown_kinds for a cooldown).
class
The class that has it.
spell
Its name, as a raid calls it.
record
The address of the spell's record, at its highest rank.
rests_on
The addresses of every record what is written here rests on: when the game changes one, this entry is to be checked again.
quote
The words of its tooltip that show it does the job, as the record's text has them.
specs
Only these specs of the class have it (a talent gives it, or it needs a shield, which only Protection carries); null when every spec does.
talent
The address of the talent that gives it: a player's own talents decide, a spec alone is a guess. null when no talent is needed.
pet
The warlock's demon that must be out for it (Felhunter, Voidwalker): it counts, but as a guess. null otherwise.
note
What is said beside it (needs a shield, before the pull). null when nothing.
being_checked
Added by the API: the addresses of the records it rests on that read otherwise now (name, rank, whether it is its spell's highest, text, ranks' texts, tooltip lines) than in the build it was last checked against (checked_against), or that are gone. While the list is not empty it is being checked; [] when nothing changed.
Parts of the answer
knowledge
The version of what is written here: the day it last changed. It changes when we change it, not with the build.
checked_against
The build every piece was last checked against (being_checked says what changed since).
taken_over
Where it was first written, and what was changed when we took it over.
jobs
The jobs a raid needs covered, in a fixed order, each with its id (never changed), a short label and a title.
cooldown_kinds
The two kinds of cooldown a raid plans, each with its id (never changed), a label and what counts as one.
tools
Who can do each job, one entry for each class and spell, in a fixed order (a player is shown with the first that fits). Counts only: how many a fight needs is not said here.
cooldowns
Who has a healing cooldown or a defensive of their own, one entry for each class and spell, in a fixed order (a player is shown with the first that fits: a frost mage with Ice Block, another with a Ward).
fields
What each part and field means: this table.

Ability notes

For each talent and class spell: what it changes, what it takes from others and gives them, what it does not stack with, its numbers, what it does for a raid and what is still open, with the shared rules the notes cite. Written by hand from the tooltips, each claim saying how sure it is; every note is a draft, not confirmed in the game.

GET /api/v1/ability-notes Everything at once; no query parameters

Fields of each entry of talents
record
The address of the talent or class spell the note is about, a spell's at its highest rank. null for the few the API holds no record of: skills every class shares (Block, Dodge, Languages, Shoot), a hunter's pet's Sonic Blast, Omen of Clarity, and the Arcane Wrath talent, which this build holds as a spell only.
name
Its name.
class
The class that has it.
tree
A talent's tree; Baseline for a spell every spec has, Pet for a hunter's pet's ability.
modifies
The spells and talents it changes, each {name, record}, another class's too (Dampen Magic in a heal's note); record is null for one the API holds no record of.
category
What it is for: damage, healing, defense, threat, utility, mobility, cooldown, rage or pvp.
roles
Whom it is for, of melee, ranged, caster, healer and tank.
raid
How much it matters in a raid: core, good, situational, low or none.
uses
What it takes from others to work better, each {kind, how, detail, domains, certainty, quote}: kind, the stat or effect (mana, crit, armor_reduction); how, the way it is used (scales, cost, trigger, window, limit, protects); detail, in a sentence; domains, the kinds of hit it concerns (melee, ranged, healing, or a school); certainty: text (its tooltip says so, and quote holds the words), open (a guess still to be checked) or unconfirmed (taken from how such things are assumed to work, not confirmed in WoW Forever); quote: null unless certainty is text.
gives
What it gives others, each {kind, reach, detail, amount, domains, certainty, quote}: reach, who gets it (raid, party, one_ally, enemy_target, self); amount, {value, unit} with unit flat or %, or null; certainty: text (its tooltip says so, and quote holds the words), open (a guess still to be checked) or unconfirmed (taken from how such things are assumed to work, not confirmed in WoW Forever); quote: null unless certainty is text.
not_with
What it does not stack with or add nothing beside, each {kind, from, why, domains, certainty, quote}: from, the spells or talents, each {name, record}; why, in a sentence; certainty: text (its tooltip says so, and quote holds the words), open (a guess still to be checked) or unconfirmed (taken from how such things are assumed to work, not confirmed in WoW Forever); quote: null unless certainty is text.
numbers
Its numbers as its tooltip gives them, each {label, value, unit}.
analysis
What it does for a raid, in a few sentences.
open
What is still open about it, each a question in words or rule:<id>, a shared rule of rules.
status
draft: written from the tooltips and not yet confirmed in the game.
rests_on
The addresses of every record the note rests on (its own, and what it changes or does not stack with): when the game changes one, the note is to be checked again.
being_checked
Added by the API: the addresses of the records it rests on that read otherwise now (name, rank, whether it is its spell's highest, text, ranks' texts, tooltip lines) than in the build it was last checked against (checked_against), or that are gone. While the list is not empty it is being checked; [] when nothing changed.
Fields of each entry of spells
record
The address of the talent or class spell the note is about, a spell's at its highest rank. null for the few the API holds no record of: skills every class shares (Block, Dodge, Languages, Shoot), a hunter's pet's Sonic Blast, Omen of Clarity, and the Arcane Wrath talent, which this build holds as a spell only.
name
Its name.
class
The class that has it.
tree
A talent's tree; Baseline for a spell every spec has, Pet for a hunter's pet's ability.
modifies
The spells and talents it changes, each {name, record}, another class's too (Dampen Magic in a heal's note); record is null for one the API holds no record of.
category
What it is for: damage, healing, defense, threat, utility, mobility, cooldown, rage or pvp.
roles
Whom it is for, of melee, ranged, caster, healer and tank.
raid
How much it matters in a raid: core, good, situational, low or none.
uses
What it takes from others to work better, each {kind, how, detail, domains, certainty, quote}: kind, the stat or effect (mana, crit, armor_reduction); how, the way it is used (scales, cost, trigger, window, limit, protects); detail, in a sentence; domains, the kinds of hit it concerns (melee, ranged, healing, or a school); certainty: text (its tooltip says so, and quote holds the words), open (a guess still to be checked) or unconfirmed (taken from how such things are assumed to work, not confirmed in WoW Forever); quote: null unless certainty is text.
gives
What it gives others, each {kind, reach, detail, amount, domains, certainty, quote}: reach, who gets it (raid, party, one_ally, enemy_target, self); amount, {value, unit} with unit flat or %, or null; certainty: text (its tooltip says so, and quote holds the words), open (a guess still to be checked) or unconfirmed (taken from how such things are assumed to work, not confirmed in WoW Forever); quote: null unless certainty is text.
not_with
What it does not stack with or add nothing beside, each {kind, from, why, domains, certainty, quote}: from, the spells or talents, each {name, record}; why, in a sentence; certainty: text (its tooltip says so, and quote holds the words), open (a guess still to be checked) or unconfirmed (taken from how such things are assumed to work, not confirmed in WoW Forever); quote: null unless certainty is text.
numbers
Its numbers as its tooltip gives them, each {label, value, unit}.
analysis
What it does for a raid, in a few sentences.
open
What is still open about it, each a question in words or rule:<id>, a shared rule of rules.
status
draft: written from the tooltips and not yet confirmed in the game.
rests_on
The addresses of every record the note rests on (its own, and what it changes or does not stack with): when the game changes one, the note is to be checked again.
being_checked
Added by the API: the addresses of the records it rests on that read otherwise now (name, rank, whether it is its spell's highest, text, ranks' texts, tooltip lines) than in the build it was last checked against (checked_against), or that are gone. While the list is not empty it is being checked; [] when nothing changed.
Fields of each entry of fight_talents
id
Never changes and is never given to another.
needs
The state the enemy must be able to be in for the talent to do anything: bleed or freeze.
class
The class that has the talent.
specs
The specs that are taken to have it when a player's own talents are not known.
talent
The talent's name.
record
The address of the talent's record.
quote
The words of its text that show what it needs, as the record's text has them.
rests_on
The address of the talent's record: when the game changes it, this is to be checked again.
being_checked
Added by the API: the addresses of the records it rests on that read otherwise now (name, rank, whether it is its spell's highest, text, ranks' texts, tooltip lines) than in the build it was last checked against (checked_against), or that are gone. While the list is not empty it is being checked; [] when nothing changed.
Parts of the answer
knowledge
The version of what is written here: the day it last changed. It changes when we change it, not with the build.
checked_against
The build every piece was last checked against (being_checked says what changed since).
taken_over
Where it was first written, and what was changed when we took it over.
talents
A note for each talent, class by class and tree by tree.
spells
A note for each class spell (each name once, at its highest rank) and each hunter's pet's ability.
rules
The shared rules the notes cite as rule:<id>, by id (never changed): question, what is assumed until it is known (assume), status (unconfirmed, unknown, announced, observed or tooltip), source, the classes it concerns, and the kinds and domains of claims it blocks, supports or depends on.
fight_talents
The talents a fight makes useless when its enemy can never be in a state (bleeding, frozen), in a fixed order.
fields
What each part and field means: this table.

Index, specification and evidence

These endpoints take no query parameters.

How to read a response

Listings return results; one record returns result. Both carry the build, read date and credit terms.

Fields on a listing response
buildstring
The build of the game these records were read from.
readstring
The day we read it from the game's files.
licensestring
termsstring
totalinteger
How many records answer the question.
limitinteger
offsetinteger
nextstring / null
The address of the next page of the same question; null after the last.
resultsarray

How to read every page

Follow the response’s next address, keeping your filters. It starts with /api/v1/, so resolve it against https://wowforever.news. Stop when next is null. If the build or read date changes during your requests, start again to avoid combining readings.

Unknowns and client-only evidence

null means a field has no value for that record. A ? marks a number we could not resolve from the files. Talent ranks are in rank_texts; each rank of a class spell is a separate record. An item’s stats maps stat names to amounts; effects lists its tooltip effects, including any spell it teaches.

Client data alone does not establish that an ability is live or an item is obtainable. Read How we know before treating a record as a confirmed gameplay fact.

Limits, answers and caching

Listings return 50 records by default. Set limit from 1 to 100, and offset to skip records, or follow next.

The API allows 120 requests per minute per address. Successful answers carry an ETag: send it back as If-None-Match on a later request. An answer may be kept for 3,600 seconds; respect the returned cache headers.

Answers and refusals

Refusals carry ok: false and a JSON error field; parameters that are unknown, repeated or empty are rejected. 429 and 503 also give retry_after in seconds. Do not cache refusals.

What changed in the API

New capabilities, fixes and each game build we read, newest first.

New in the APIA game build readA fix
  1. A game build read: 27 Oct 2026 · Build 1.60.1.70630 · Current build

    158 records differ from build 1.60.1.70532 (added, removed or changed): 99 spells, 31 talents, 27 items, 1 zone. Each is listed at /api/v1/changes.

  2. A fix: 20 Oct 2026 · #53

    The paladin Vengeance note counts only melee crit as feeding it: whether a heal's or a Holy spell's crit counts is an open question of the note, so a raid's Moonkin Form no longer marks it as covered.

  3. New in the API: 19 Oct 2026 · #51

    Each buff of /api/v1/raid-buffs carries order, the order raid leaders saw in Guilds Forever's planner, so a planner's list keeps it while the list itself stays in its fixed order. The 13 buffs credited to Talents Forever were checked against our records of build 1.60.1.70450 and are credited to Forever News.

  4. New in the API: 19 Oct 2026 · #49

    Nearly every icon of the game is at /icons/<name>.png, not only those our records name: 30,151 pictures read from the game's own files. The 259 whose file names hold a space or another such sign have no address.

  5. A fix: 19 Oct 2026 · #47

    Arcane Wrath is a Mage talent (Arcane, row 4, column 4), as the game shows it: its node belongs to no tab's group, so the reader now places such a node by its position. Thorns says its damage (it said ?), a hunter's shots and stings and Summon Hawk say Instant, and the Trueshot Aura buff points at its highest rank, as every other buff does. The build is read again for it; nothing is recorded as a game change.

  6. New in the API: 18 Oct 2026 · #45

    Three addresses of what a raid planner needs to know: raid buffs, class tools and notes for every talent and class spell, each marking what a new build changed under it. Spells and talents carry their tooltip lines in the game's wording, a spell its highest rank and a demon's ability its demon; the warlock's demons' abilities and 81 more class spells were added, and icons come from our own address. Our copy of the data moved to a new layout, and the API answered 503 while it was rebuilt.

  7. New in the API: 16 Oct 2026 · #34

    Spells, talents and items got their own pages. Our copy of the data moved to a new layout, and the API answered 503 while it was rebuilt.

  8. A game build read: 16 Oct 2026 · Build 1.60.1.70425

    469 records differ from build 1.60.1.70374 (added, removed or changed): 268 items, 130 spells, 56 talents, 15 racials. Each is listed at /api/v1/changes.

  9. A fix: 14 Oct 2026 · #29

    A burst of callers is answered, and the index offers only filter values that list something.

  10. New in the API: 14 Oct 2026 · #24

    The API describes itself at three addresses: the OpenAPI document, real examples and how we know.

  11. New in the API: 13 Oct 2026 · #22

    Talents come in the order a player reads a tree, and the index says what every field means.

  12. A fix: 13 Oct 2026 · #17

    A search with an invisible character is refused, and an over-long request is still answered.

  13. New in the API: 13 Oct 2026 · #16

    One shape for every record, for WoW Forever alone.

  14. New in the API: 13 Oct 2026 · #10

    Licensed CC BY 4.0, with each caller counted by its own address.

  15. New in the API: 13 Oct 2026 · #9

    The public data API opened: talents, class spells, racials and items read from the game's files.

Credit the data

Licensed under CC BY 4.0: free to use and share, as long as you credit Forever News with a link to https://wowforever.news.

The licence covers Forever News's compilation and classification. World of Warcraft names and texts belong to Blizzard Entertainment.