ForeverDB

이 페이지는 아직 번역되지 않았습니다. 영어 버전

ForeverDB API

WoW Forever data as JSON for your own site, bot, addon tool or spreadsheet: items, spells, quests, vendors, dungeons, classes, item sets, professions and recipes, gathering, battlegrounds, changes players saw in game, ForeverDB's articles and Blizzard's posts. Read-only, with an API key.

Credit required

You must credit ForeverDB.net as the source, with a visible link to https://foreverdb.net, wherever you show the data. A line like this is enough: <a href="https://foreverdb.net">Data from ForeverDB.net</a>

Getting a key

You need a ForeverDB account: every key belongs to one. Log in with Battle.net on this page and ask for access: say what you're building, give an email address for the answer and agree to credit ForeverDB.net. Once ForeverDB approves it, you make your own keys here (up to 3). Deleting your account deletes its keys, and a suspended account's keys stop working.

Using it

Send your key in the X-API-Key header (or Authorization: Bearer). Every answer is JSON with data and meta (the game build it comes from, and for lists the total and the next page).

curl -H "X-API-Key: fdb_…" https://foreverdb.net/api/v1/items/19019

From a server, also send a User-Agent that names your app. Cloudflare turns away some libraries' default User-Agent, such as Python's urllib, with a 403 (error code 1010) before the request reaches us.

Pricing

$5.99 a month for 10,000 requests a day and 60 a minute, for every key on your account together. One plan for everyone, cancel any time.

Free tier: 5,000 requests a day and 30 a minute for every account, enough for most bots, guild sites and small tools. Past that the answer is 402 with the code subscription_required.

Why it costs money: the API answered over a million requests in its first weeks, far more than we expected. Every answer comes from data we extract from the WoW Forever client on every build and from what thousands of players' addons record in the game. Hosting it, the database, the bandwidth and the jobs that rebuild it all cost money every month. The site stays free for players; developers who use a lot of data help keep it running.

On the free tier you must credit ForeverDB.net with a link wherever you show the data. On the paid plan the credit is optional.

Payments go through Stripe.

Limits

Limits count per account, across all its keys: 10,000 a day and 60 a minute on the plan, 5,000 a day without one. Past a limit the answer is 429 with Retry-After.

Endpoints

GET /api/v1/meta: About the data

The client build the data comes from, the level cap and how many of each thing there are.

GET /api/v1/items: Items

Items from the WoW Forever client, sorted by ID (lowest first). betaEvent identifies historical beta send-off copies; speculation and speculationReasons explain uncertain availability. These fields are also present on item details. Event copies are not normal launch recommendations.

GET /api/v1/items/{id}: One item

Stats, damage, speed, binding, sell price, effects and, for weapons and armor that disenchant, what disenchanting gives (disenchant). liveClient: what the live client changed since the last beta build (each field's beta and live value); dataFromBuild: details kept from an earlier build for an item the client still hides.

GET /api/v1/spells: Spells

Spells and abilities from the client, sorted by ID.

GET /api/v1/spells/{id}: One spell

Name, rank, description, icon, school, cast time, range, cooldown, required level and base costs from the current client data. liveClient: what the live client changed since the last beta build (added, removed or changed, with each field's beta and live value), for the spell, its class ability or its talent.

GET /api/v1/quests: Quests

Quests with ForeverDB's guide, and whether they're known in Forever, with who starts and ends each one and where (starts, ends: as on the quest's page). Sorted by ID.

GET /api/v1/quests/{id}: One quest

The quest's level, side, zone, where the data comes from and its guide link; chain: the earlier (previous) and following (next) quests as on the quest page, each with questId, name, relation (Complete first, Chain link, Must be active, Next quest, Quest line, Offered after) and source (a list can hold alternatives: not every quest in it is needed), and questLine (name, part, of) when the Forever client has one; and starts and ends: the NPC, object or item that gives it and the one you hand it in to (type npc, object or item; id; name), where it stands (location: uiMapId, zone, x and y in percent of the zone map, or null; instance when it's inside a dungeon), and the source: seen in WoW Forever (players' ForeverDB addon, with how many players), or Classic data (CMaNGOS), not confirmed in Forever. Where no NPC is known, the Forever client's own quest map marker (type, id and name null) or, for the hand-in, where players' game map showed it. others: more NPCs that give or take the same quest.

GET /api/v1/vendors: Vendors

Vendors with where they stand and reputationFaction (the faction whose reputation discounts their prices: 5% at Friendly up to 20% at Exalted); seen in Forever or Classic data, labelled.

GET /api/v1/vendors/{id}: One vendor

Where the vendor stands and everything they sell, with prices in copper, and costs besides gold where players' addons saw them (costs: Merchant's Favor and other currencies, or items).

GET /api/v1/poisons: Rogue poisons

How Rogues learn Poisons (the level 20 quests), and every poison in the Forever client: what it makes, reagents, learnAtLevel, skill colours, learnedWithSkill (Instant Poison), the rogue trainers players saw teach it and the full price they saw (trainerCost, copper), seasonOfDiscoveryLeftover and aboveLevelCap. Also every rogue trainer and poison supplier (seen in Forever, or Classic data, labelled) with what the suppliers sell, and unusedReagents: what they sell that nothing in the Forever client uses (Lethargy Root).

GET /api/v1/disenchant: Disenchanting

What uncommon, rare and epic weapons and armor disenchant into, by item level: WoW Forever's results where players' addons saw them (with how many disenchants and players), and Classic's table, labelled.

GET /api/v1/dungeons: Dungeons and raids

Every instance with its level range, lowest level first.

GET /api/v1/dungeons/{id}: One dungeon

Bosses and notable loot.

GET /api/v1/zones: Zones

The world map's zones and continents. The id is the map ID (UiMap) the other answers use.

GET /api/v1/classes: Classes

The nine classes.

GET /api/v1/classes/{name}: One class

Every ability with its ranks and learned levels, plus all talent trees with tier, column, required level, rank spell IDs and descriptions, and prerequisites. Tiers and columns are 1-based.

GET /api/v1/itemsets: Item sets

Item sets with their pieces, betaEvent and availability warnings (speculation, speculationReasons), also present on set details.

GET /api/v1/itemsets/{id}: One item set

Pieces and set bonuses.

GET /api/v1/professions: Professions

All twelve professions: primary, gathering and secondary. Each has its recipe count, how many recipes are new in Forever or changed from Classic, and how many trainers teach it.

GET /api/v1/professions/{slug}: One profession

The ranks with their skill caps, the trainers, and the recipes (a page at a time, by skill). Each recipe has its skill colours (orange, yellow, green, grey; skill.orangeSource is "classic" when the orange skill is Classic trainer data, never above the client's yellow, with Classic's own in orangeClassic when it was higher), reagents, what it makes (count; min and max for a random count), how you learn it, and what Forever changed. learnedFrom.sources says where: every trainer and vendor for each faction (with where they stand; the vendor's price in copper for one purchase, stack, pricePerItem, costs besides gold such as Merchant's Favor, limited stock, and reputationFaction: the faction whose reputation discounts the price), the quests and drops that give the recipe, and whether players saw each one in Forever. category: the recipe's trade-skill category in the Forever client (Elixirs, Smelted Bars...) with its parent. Recipes come from the Forever client; trainers and vendors are Classic data unless seenInForever. Trainers players saw teach a recipe in Forever are listed with their place even when Classic has none (Forever's new recipes and NPCs), and trainerCostSource says whether the price is the full price players saw or Classic's. recipeItemsHidden: items the Forever client lists as teaching the recipe whose name and details stay on Blizzard's servers until the game sends them (recipeItemsNotInClient is the old name, kept). Slugs: alchemy, blacksmithing, enchanting, engineering, leatherworking, tailoring, herbalism, mining, skinning, cooking, first-aid, fishing.

GET /api/v1/gathering/{slug}: Gathering

Where to gather, for herbalism, mining, skinning or fishing. Herbalism and mining: each herb or vein with the skill it needs, and each zone with how many of each. Skinning: each zone's levels and the skill its beasts need; ask for one zone to get its beasts, with their levels, the skill each needs and what it gives. Fishing: each zone's skill, what you catch there and the fishing pools. All four have the best zones for each skill range. Spawn counts are Classic data until players' addons see them in Forever (labelled).

GET /api/v1/battlegrounds: Battlegrounds and arenas

Every battleground and arena in the client: levels, team size, how you win, the objectives with their place on the map (x and y in percent), and where the rules come from: blizzard (Blizzard's posts), classic (Classic's rules, Speculation) or client (only the client's data so far).

GET /api/v1/changes-seen: Changes seen in game

What players' ForeverDB addons saw in the game that differs from the game files: prices, quest rewards and XP, item stats, creature levels. Each is Verified (two or more players, or checked against the client) or Not confirmed. Newest first. Counts only: never who saw it.

GET /api/v1/builds: Builds

Every WoW Forever client build ForeverDB has compared, newest first: its date, the build before it, how many class abilities, talents, spells, items and sets it added, removed or changed (counts), the client's totals, ForeverDB's article about it when there is one, and its changelog page. These are what changed in the game files, not Blizzard's patch notes.

GET /api/v1/builds/{build}: One build's changes

Everything one build changed in the game files, compared with the build before it: each class ability, talent, spell, item or set added, removed or changed, with every changed field (before and after, per rank). dataOnly marks rows a player never reads (effect codes, an item's look). Use latest for the newest build. As on /changelog and the site's New in this update page.

GET /api/v1/buffs-nerfs: Buffs and nerfs

Every class change in each build, newest first, with direction: buff or nerf where the numbers say which, changed where they don't (a rework or new wording), new or removed. dataOnly: changed only in the spell's data, not in anything a player reads. changes holds the changed fields a player reads (a few at most); moreChanges says how many more the build's changelog has. As on /buffs-and-nerfs; meta.counts adds them up per class (dataOnly ones as quiet).

GET /api/v1/merchants-favor: Merchant's Favor

WoW Forever's currency for crafters and gatherers: the Waylaid Crates that earn it (the level to use one, the bundles that fill it, how many creatures players saw drop it), the sealed crates, the Legacy perk, and what the Azeroth Commerce Authority and Durotar Supply and Logistics vendors sell for it (Favor per item and the reputation rank it needs), as players saw it with the ForeverDB addon.

GET /api/v1/articles: Articles

ForeverDB's news and articles, newest first.

GET /api/v1/articles/{slug}: One article

The article's blocks and sources.

GET /api/v1/posts: Blizzard posts

Blue posts and official news about WoW Forever, newest first.

What we record

Every approved developer has a developer ID, like dev-0012, and every answer names it in meta.client. For each key and UTC day we count:

We never store IP addresses. We use these counts to keep the limits fair, to check the data is credited where it is shown, and to catch a key that leaked or is being abused. They are kept for 90 days.

Rules